
theorem Th24:
  for A, B, C, D being category st A, B are_opposite & C, D are_opposite
  for F, G being covariant Functor of B, C st F, G are_naturally_equivalent
  holds dualizing-func(C,D)*G*dualizing-func(A,B),
  dualizing-func(C,D)*F*dualizing-func(A,B) are_naturally_equivalent
proof
  let A, B, C, D be category such that
A1: A, B are_opposite and
A2: C, D are_opposite;
  let F, G be covariant Functor of B, C such that
A3: F is_naturally_transformable_to G and
A4: G is_transformable_to F;
  given t being natural_transformation of F, G such that
A5: for a being Object of B holds t!a is iso;
  set dAB = dualizing-func(A,B), dCD = dualizing-func(C,D),
  dF = dCD*F*dAB, dG = dCD*G*dAB;
A6: F is_transformable_to G by A3;
A7: now
    let a be Object of A;
A8: dG.a = (dCD*G).(dAB.a) by FUNCTOR0:33;
    dF.a = (dCD*F).(dAB.a) by FUNCTOR0:33;
    hence dG.a = dCD.(G.(dAB.a)) & dF.a = dCD.(F.(dAB.a)) by A8,FUNCTOR0:33;
    hence dG.a = G.(dAB.a) & dF.a = F.(dAB.a) by A2,Def5;
    hence <^dG.a, dF.a^> = <^F.(dAB.a), G.(dAB.a)^> by A2,Th9;
  end;
A9: dG is_transformable_to dF
  proof
    let a be Object of A;
    <^dG.a, dF.a^> = <^F.(dAB.a), G.(dAB.a)^> by A7;
    hence thesis by A6;
  end;
  dom t = the carrier of B by PARTFUN1:def 2
    .= the carrier of A by A1;
  then reconsider dt = t as ManySortedSet of the carrier of A
  by PARTFUN1:def 2,RELAT_1:def 18;
  dt is transformation of dG, dF
  proof
    thus dG is_transformable_to dF by A9;
    let a be Object of A;
    set b = dAB.a;
A10: b = a by A1,Def5;
    t.b = t!b by A6,FUNCTOR2:def 4;
    hence thesis by A7,A10;
  end;
  then reconsider dt as transformation of dG, dF;
A11: now
    let a,b be Object of A such that
A12: <^a,b^> <> {};
    let f be Morphism of a,b;
    set b9 = dAB.b, a9 = dAB.a, f9 = dAB.f;
A13: a9 = a by A1,Def5;
A14: b9 = b by A1,Def5;
    then
A15: <^b9, a9^> = <^a,b^> by A1,A13,Th9;
A16: t!a9 = t.a by A6,A13,FUNCTOR2:def 4;
A17: t!b9 = t.b by A6,A14,FUNCTOR2:def 4;
A18: dt!a = t.a by A9,FUNCTOR2:def 4;
A19: dt!b = t.b by A9,FUNCTOR2:def 4;
A20: <^F.b9, F.a9^> <> {} by A12,A15,FUNCTOR0:def 18;
A21: <^G.b9, G.a9^> <> {} by A12,A15,FUNCTOR0:def 18;
A22: dF.f = (dCD*F).f9 by A12,FUNCTOR3:7;
A23: dG.f = (dCD*G).f9 by A12,FUNCTOR3:7;
A24: dF.f = dCD.(F.f9) by A12,A15,A22,FUNCTOR3:8;
A25: dG.f = dCD.(G.f9) by A12,A15,A23,FUNCTOR3:8;
A26: dF.f = F.f9 by A2,A20,A24,Def5;
A27: dG.f = G.f9 by A2,A21,A25,Def5;
A28: <^F.b9, G.b9^> <> {} by A6;
A29: <^F.a9, G.a9^> <> {} by A6;
A30: dG.a = G.a9 by A7;
A31: dF.a = F.a9 by A7;
A32: dG.b = G.b9 by A7;
A33: dF.b = F.b9 by A7;
    hence dt!b*dG.f = G.f9*(t!b9) by A2,A17,A19,A21,A27,A28,A30,A32,Th9
      .= t!a9*F.f9 by A3,A12,A15,FUNCTOR2:def 7
      .= dF.f*(dt!a) by A2,A16,A18,A20,A26,A29,A30,A31,A33,Th9;
  end;
  thus
  dG is_naturally_transformable_to dF
  by A9,A11;
  then reconsider dt as natural_transformation of dG, dF by A11,FUNCTOR2:def 7;
  thus dF is_transformable_to dG
  proof
    let a be Object of A;
A34: dF.a = F.(dAB.a) by A7;
    dG.a = G.(dAB.a) by A7;
    then <^dF.a, dG.a^> = <^G.(dAB.a), F.(dAB.a)^> by A2,A34,Th9;
    hence thesis by A4;
  end;
  take dt;
  let a be Object of A;
A35: dG.a = G.(dAB.a) by A7;
A36: dF.a = F.(dAB.a) by A7;
A37: dAB.a = a by A1,Def5;
A38: dt!a = t.a by A9,FUNCTOR2:def 4;
A39: t!(dAB.a) = t.a by A6,A37,FUNCTOR2:def 4;
A40: t!(dAB.a) is iso by A5;
A41: <^F.(dAB.a), G.(dAB.a)^> <> {} by A6;
  <^G.(dAB.a), F.(dAB.a)^> <> {} by A4;
  hence thesis by A2,A35,A36,A38,A39,A40,A41,Th23;
end;
