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
  f is epi & g is epi implies g*f is epi
proof
  assume that
A1: f is epi and
A2: g is epi;
A3: Hom(a,b)<>{} by A1;
A4: Hom(b,c)<>{} by A2;
A5: now
    let d,h1,h2 such that
A6: Hom(c,d)<>{} and
A7: h1*(g*f) = h2*(g*f);
A8: Hom(b,d) <> {} by A4,A6,Th19;
    h1*(g*f) = (h1*g)*f & (h2*g)*f = h2*(g*f) by A3,A4,A6,Th21;
    then h1*g = h2*g by A1,A7,A8;
    hence h1 = h2 by A2,A6;
  end;
  Hom(a,c) <> {} by A3,A4,Th19;
  hence thesis by A5;
end;
