reserve A for non empty AltCatStr,
  B, C for non empty reflexive AltCatStr,
  F for feasible Covariant FunctorStr over A, B,
  G for feasible Covariant FunctorStr over B, C,
  M for feasible Contravariant FunctorStr over A, B,
  N for feasible Contravariant FunctorStr over B, C,
  o1, o2 for Object of A,
  m for Morphism of o1, o2;
reserve A, B, C, D for transitive with_units non empty AltCatStr,
  F1, F2, F3 for covariant Functor of A, B,
  G1, G2, G3 for covariant Functor of B, C,
  H1, H2 for covariant Functor of C, D,
  p for transformation of F1, F2,
  p1 for transformation of F2, F3,
  q for transformation of G1, G2,
  q1 for transformation of G2, G3,
  r for transformation of H1, H2;
reserve A, B, C, D for category,
  F1, F2, F3 for covariant Functor of A, B,
  G1, G2, G3 for covariant Functor of B, C;
reserve t for natural_transformation of F1, F2,
  s for natural_transformation of G1, G2,
  s1 for natural_transformation of G2, G3;

theorem Th32:
  F1 is_naturally_transformable_to F2 & F2 is_transformable_to F1
  & (for a being Object of A holds t!a is iso) implies F2
is_naturally_transformable_to F1 & ex f being natural_transformation of F2, F1
  st for a being Object of A holds f.a = (t!a)" & f!a is iso
proof
  assume that
A1: F1 is_naturally_transformable_to F2 and
A2: F2 is_transformable_to F1 and
A3: for a being Object of A holds t!a is iso;
  defpred P[object,object] means
   ex a being Object of A st a = $1 & $2 = (t!a)";
  set I = the carrier of A;
A4: for i being object st i in I ex j being object st P[i,j]
  proof
    let i be object;
    assume i in I;
    then reconsider o = i as Object of A;
    take (t!o)";
    thus thesis;
  end;
  consider f being ManySortedSet of I such that
A5: for i being object st i in I holds P[i,f.i] from PBOOLE:sch 3(A4);
  f is transformation of F2, F1
  proof
    thus F2 is_transformable_to F1 by A2;
    let a be Object of A;
    ex b being Object of A st b = a & f.a = (t!b)" by A5;
    hence thesis;
  end;
  then reconsider f as transformation of F2, F1;
A6: F1 is_transformable_to F2 by A1;
A7: now
    let a, b be Object of A such that
A8: <^a,b^> <> {};
A9: <^F1.a,F1.b^> <> {} by A8,FUNCTOR0:def 18;
    let g be Morphism of a, b;
A10: ex bb being Object of A st bb = b & f.b = (t!bb)" by A5;
A11: t!b is iso by A3;
A12: <^F2.a,F1.a^> <> {} by A2;
A13: <^F1.a,F2.a^> <> {} by A6;
A14: ex aa being Object of A st aa = a & f.a = (t!aa)" by A5;
    then reconsider fa = f.a as Morphism of F2.a, F1.a;
A15: t!a is iso by A3;
A16: <^F1.b,F2.b^> <> {} by A6;
A17: <^F2.b,F1.b^> <> {} by A2;
A18: <^F2.a,F2.b^> <> {} by A8,FUNCTOR0:def 18;
    then
A19: <^F2.a,F1.b^> <> {} by A17,ALTCAT_1:def 2;
    hence f!b*F2.g = f!b*(F2.g)*(idm (F2.a)) by ALTCAT_1:def 17
      .= f!b*(F2.g)*((t!a)*fa) by A14,A15,ALTCAT_3:def 5
      .= f!b*(F2.g)*((t!a)*(f!a)) by A2,FUNCTOR2:def 4
      .= f!b*(F2.g)*(t!a)*(f!a) by A13,A12,A19,ALTCAT_1:21
      .= f!b*((F2.g)*(t!a))*(f!a) by A13,A17,A18,ALTCAT_1:21
      .= f!b*((t!b)*(F1.g))*(f!a) by A1,A8,FUNCTOR2:def 7
      .= f!b*(t!b)*(F1.g)*(f!a) by A17,A16,A9,ALTCAT_1:21
      .= (t!b)"*(t!b)*(F1.g)*(f!a) by A2,A10,FUNCTOR2:def 4
      .= (idm (F1.b))*(F1.g)*(f!a) by A11,ALTCAT_3:def 5
      .= F1.g*(f!a) by A9,ALTCAT_1:20;
  end;
  hence F2 is_naturally_transformable_to F1 by A2;
  F2 is_naturally_transformable_to F1 by A2,A7;
  then reconsider f as natural_transformation of F2, F1 by A7,FUNCTOR2:def 7;
  take f;
  let a be Object of A;
  consider b being Object of A such that
A20: b = a and
A21: f.a = (t!b)" by A5;
  thus f.a = (t!a)" by A20,A21;
A22: <^F1.a,F2.a^> <> {} by A6;
A23: <^F2.a,F1.a^> <> {} by A2;
  f!a = (t!b)" by A2,A21,FUNCTOR2:def 4;
  hence thesis by A3,A20,A22,A23,ALTCAT_4:3;
end;
