
theorem Th37:
  for A,B being transitive with_units non empty AltCatStr,
  F being feasible reflexive id-preserving FunctorStr over A,B
  st F is bijective coreflexive holds F" is id-preserving
proof
  let A,B be transitive with_units non empty AltCatStr,
  F be feasible reflexive id-preserving FunctorStr over A,B such that
A1: F is bijective coreflexive;
  set G = F";
  reconsider H = G as feasible reflexive FunctorStr over B,A by A1,Th35,Th36;
A2: the ObjectMap of G = (the ObjectMap of F)" by A1,Def38;
  consider f being ManySortedFunction of (the Arrows of A),
  (the Arrows of B)*the ObjectMap of F such that
A3: f = the MorphMap of F and
A4: the MorphMap of G = f""*(the ObjectMap of F)" by A1,Def38;
  let o be Object of B;
A5: F is injective by A1;
  then F is one-to-one;
  then
A6: the ObjectMap of F is one-to-one;
  F is faithful by A5;
  then
A7: the MorphMap of F is "1-1";
  F is surjective by A1;
  then F is full;
  then
A8: ex f being ManySortedFunction of (the Arrows of A),
  (the Arrows of B)*the ObjectMap of F st
  f = the MorphMap of F & f is "onto";
A9: [G.o,G.o] in [:the carrier of A,the carrier of A:] by ZFMISC_1:87;
A10: [o,o] in [:the carrier of B,the carrier of B:] by ZFMISC_1:87;
  then
A11: [o,o] in dom the ObjectMap of G by FUNCT_2:def 1;
A12: (the ObjectMap of F*H).(o,o)
  = ((the ObjectMap of F)*the ObjectMap of H).[o,o] by Def36
    .= ((the ObjectMap of F)*(the ObjectMap of F)").[o,o] by A1,Def38
    .= (id rng the ObjectMap of F).[o,o] by A6,FUNCT_1:39
    .= (id dom(the ObjectMap of G)).[o,o] by A2,A6,FUNCT_1:33
    .= (id[:the carrier of B,the carrier of B:]).[o,o] by FUNCT_2:def 1
    .= [o,o] by A10,FUNCT_1:18;
A13: F.(G.o) = (F*H).o by Th33
    .= o by A12;
  dom the MorphMap of F = [:the carrier of A,the carrier of A:]
  by PARTFUN1:def 2;
  then [G.o,G.o] in dom the MorphMap of F by ZFMISC_1:87;
  then
A14: Morph-Map(F,G.o,G.o) is one-to-one by A7;
  [G.o,G.o] in dom the ObjectMap of F by A9,FUNCT_2:def 1;
  then ((the Arrows of B)*the ObjectMap of F).[G.o,G.o]
  = (the Arrows of B).((the ObjectMap of F).(G.o,G.o)) by FUNCT_1:13
    .= (the Arrows of B).(F.(G.o),F.(G.o)) by Def10;
  then
A15: ((the Arrows of B)*the ObjectMap of F).[G.o,G.o] <> {} by ALTCAT_2:def 6;
  Morph-Map(F,G.o,G.o) is Function of (the Arrows of A).[G.o,G.o],
  ((the Arrows of B)*the ObjectMap of F).[G.o,G.o] by A3,A9,PBOOLE:def 15;
  then
A16: dom Morph-Map(F,G.o,G.o)
  = (the Arrows of A).(G.o,G.o) by A15,FUNCT_2:def 1
    .= <^G.o,G.o^> by ALTCAT_1:def 1;
  ((the Arrows of A)*the ObjectMap of G).[o,o]
  = (the Arrows of A).((the ObjectMap of H).(o,o)) by A11,FUNCT_1:13
    .= (the Arrows of A).(G.o,G.o) by Def10;
  then
A17: ((the Arrows of A)*the ObjectMap of G).[o,o] <> {} by ALTCAT_2:def 6;
  the MorphMap of G is ManySortedFunction of
  the Arrows of B,(the Arrows of A)*the ObjectMap of G by Def4;
  then Morph-Map(G,o,o) is Function of (the Arrows of B).[o,o],
  ((the Arrows of A)*the ObjectMap of G).[o,o] by A10,PBOOLE:def 15;
  then
A18: dom Morph-Map(G,o,o) = (the Arrows of B).(o,o) by A17,FUNCT_2:def 1
    .= <^o,o^> by ALTCAT_1:def 1;
  then
A19: idm o in dom Morph-Map(G,o,o) by ALTCAT_1:19;
A20: Morph-Map(G,o,o)
  = f"".((the ObjectMap of G).(o,o)) by A2,A4,A11,FUNCT_1:13
    .= f"".[H.o,H.o] by Def10
    .= Morph-Map(F,G.o,G.o)" by A3,A7,A8,A9,MSUALG_3:def 4;
  Morph-Map(G,o,o).idm o in rng Morph-Map(G,o,o) by A19,FUNCT_1:def 3;
  then
A21: Morph-Map(G,o,o).idm o in dom Morph-Map(F,G.o,G.o) by A14,A20,FUNCT_1:33;
  Morph-Map(F,G.o,G.o).(Morph-Map(G,o,o).idm o)
  = (Morph-Map(F,G.o,G.o)*Morph-Map(G,o,o)).idm o by A18,ALTCAT_1:19,FUNCT_1:13
    .= (id rng Morph-Map(F,G.o,G.o)).idm o by A14,A20,FUNCT_1:39
    .= (id dom Morph-Map(G,o,o)).idm o by A14,A20,FUNCT_1:33
    .= idm F.(G.o) by A13,A18
    .= Morph-Map(F,G.o,G.o).idm G.o by Def20;
  hence thesis by A14,A16,A21;
end;
