reserve C for CatStr;
reserve f,g for Morphism of C;
reserve C for non void non empty CatStr,
  f,g for Morphism of C,
  a,b,c,d for Object of C;
reserve o,m for set;
reserve B,C,D for Category;
reserve a,b,c,d for Object of C;
reserve f,f1,f2,g,g1,g2 for Morphism of C;
reserve f,f1,f2 for Morphism of a,b;
reserve f9 for Morphism of b,a;
reserve g for Morphism of b,c;
reserve h,h1,h2 for Morphism of c,d;

theorem Th40:
  f is invertible & g is invertible implies g*f is invertible
proof
  assume
A1: f is invertible;
  then
A2: Hom(a,b) <> {} & Hom(b,a) <> {};
  consider f1 being Morphism of b,a such that
A3: f*f1 = id b and
A4: f1*f = id a by A1;
  assume
A5: g is invertible;
  then
A6: Hom(b,c) <> {} & Hom(c,b) <> {};
  consider g1 being Morphism of c,b such that
A7: g*g1 = id c and
A8: g1*g = id b by A5;
A9: now
    thus
A10: Hom(c,a) <> {} by A2,A6,Th19;
    take f1g1 = f1*g1;
    thus (g*f)*(f1g1) = g*(f*(f1*g1)) by A2,A6,A10,Th21
      .= g*((id b )*g1) by A2,A3,A6,Th21
      .= id c by A6,A7,Th23;
    Hom(a,c) <> {} by A2,A6,Th19;
    hence (f1g1)*(g*f) = f1*(g1*(g*f)) by A2,A6,Th21
      .= f1*((id b)*f) by A2,A6,A8,Th21
      .= id a by A2,A4,Th23;
  end;
  Hom(a,c) <> {} by A2,A6,Th19;
  hence thesis by A9;
end;
