reserve x,y for set;

theorem Th33:
  for A,B being non empty AltGraph for F being Covariant
FunctorStr over A,B st F is surjective for a,b being Object of B st <^a,b^> <>
{} for f being Morphism of a,b ex c,d being Object of A, g being Morphism of c,
  d st a = F.c & b = F.d & <^c,d^> <> {} & f = F.g
proof
  let A,B be non empty AltGraph;
  let F be Covariant FunctorStr over A,B;
  given f being ManySortedFunction of the Arrows of A, (the Arrows of B)*the
  ObjectMap of F such that
A1: f = the MorphMap of F & f is "onto";
  assume
A2: rng the ObjectMap of F = [:the carrier of B, the carrier of B:];
  let a,b be Object of B such that
A3: <^a,b^> <> {};
  the ObjectMap of F is Covariant by FUNCTOR0:def 12;
  then consider
  g being Function of the carrier of A, the carrier of B such that
A4: the ObjectMap of F = [:g,g:];
  let f be Morphism of a,b;
  dom the ObjectMap of F = [:the carrier of A, the carrier of A:] & [a,b]
  in rng the ObjectMap of F by A2,FUNCT_2:def 1,ZFMISC_1:def 2;
  then consider x being object such that
A5: x in [:the carrier of A, the carrier of A:] and
A6: [a,b] = (the ObjectMap of F).x by FUNCT_1:def 3;
  consider c,d being object such that
A7: c in the carrier of A & d in the carrier of A and
A8: [c,d] = x by A5,ZFMISC_1:def 2;
  reconsider c, d as Object of A by A7;
  (the ObjectMap of F).(d,d) = [g.d, g.d] by A4,FUNCT_3:75;
  then
A9: F.d = g.d;
  (the ObjectMap of F).(c,c) = [g.c, g.c] by A4,FUNCT_3:75;
  then F.c = g.c;
  then
A10: (the ObjectMap of F).(c,d) = [F.c,F.d] by A4,A9,FUNCT_3:75;
  rng Morph-Map(F,c,d) = ((the Arrows of B)*the ObjectMap of F).[c,d] by A1,A5
,A8
    .= <^a,b^> by A5,A6,A8,FUNCT_2:15;
  then consider g being object such that
A11: g in dom Morph-Map(F,c,d) and
A12: f = Morph-Map(F,c,d).g by A3,FUNCT_1:def 3;
  take c, d;
  reconsider g as Morphism of c,d by A11;
  take g;
  thus a = F.c & b = F.d & <^c,d^> <> {} by A6,A8,A10,A11,XTUPLE_0:1;
  thus thesis by A3,A6,A8,A10,A11,A12,FUNCTOR0:def 15;
end;
