reserve X,Y for set;
reserve Z for non empty set;

theorem Th8:
  for C1 being non empty AltGraph, C2,C3 being non empty reflexive
AltGraph, F being feasible FunctorStr over C1,C2, G being FunctorStr over C2,C3
  st F is onto & G is onto holds G*F is onto
proof
  let C1 be non empty AltGraph, C2,C3 be non empty reflexive AltGraph, F be
  feasible FunctorStr over C1,C2, G be FunctorStr over C2,C3 such that
A1: F is onto and
A2: G is onto;
  set CC3 = [:the carrier of C3,the carrier of C3:];
  set CC2 = [:the carrier of C2,the carrier of C2:];
  reconsider OMG = the ObjectMap of G as Function of CC2,CC3;
  OMG is onto by A2;
  then
A3: rng OMG = CC3 by FUNCT_2:def 3;
  set CC1 = [:the carrier of C1,the carrier of C1:];
  reconsider OMF = the ObjectMap of F as Function of CC1,CC2;
  OMF is onto by A1;
  then rng OMF = CC2 by FUNCT_2:def 3;
  then rng (OMG*OMF) = CC3 by A3,FUNCT_2:14;
  then OMG*OMF is onto by FUNCT_2:def 3;
  hence the ObjectMap of (G*F) is onto by FUNCTOR0:def 36;
end;
