### Opposite Categories and Contravariant Functors

by
Czeslaw Bylinski

Copyright (c) 1991 Association of Mizar Users

MML identifier: OPPCAT_1
[ MML identifier index ]

```environ

vocabulary CAT_1, PARTFUN1, RELAT_1, FUNCT_1, BOOLE, ARYTM_3, OPPCAT_1;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, RELAT_1, FUNCT_1, FUNCT_2,
PARTFUN1, FUNCT_4, CAT_1;
constructors FUNCT_4, CAT_1, MEMBERED, XBOOLE_0;
clusters CAT_1, RELSET_1, MEMBERED, ZFMISC_1, XBOOLE_0;
requirements SUBSET, BOOLE;
definitions CAT_1;
theorems FUNCT_2, FUNCT_4, PARTFUN1, CAT_1, SUBSET_1;
schemes FUNCT_2;

begin

reserve B,C,D for Category;

definition let X,Y,Z be non empty set; let f be PartFunc of [:X,Y:],Z;
redefine func ~f -> PartFunc of [:Y,X:],Z;
coherence by FUNCT_4:49;
end;

:: Opposite Category

theorem Th1:
CatStr (#the Objects of C, the Morphisms of C,the Cod of C, the Dom of C,
~(the Comp of C), the Id of C#) is Category
proof
set M = the Morphisms of C,
d = the Cod of C, c = the Dom of C,
p = ~(the Comp of C), i = the Id of C;
now
thus
A1:   for f,g being Element of M holds [g,f] in dom(p) iff d.g=c.f
proof let f,g be Element of M;
[g,f] in dom(p) iff [f,g] in dom (the Comp of C) by FUNCT_4:43;
hence thesis by CAT_1:def 8;
end;
A2:  for f,g being Element of M st d.g = c.f
holds p.[g,f] = (the Comp of C).[f,g]
proof let f,g be Element of M;
assume d.g = c.f; then [g,f] in dom(p) by A1;
hence thesis by FUNCT_4:44;
end;
thus
A3:  for f,g being Element of M
st d.g = c.f holds d.(p.[g,f]) = d.f & c.(p.[g,f]) = c.g
proof let f,g be Element of M;
d.g = c.f implies p.[g,f] = (the Comp of C).[f,g] by A2;
hence thesis by CAT_1:def 8;
end;
thus for f,g,h being Element of M
st d.h = c.g & d.g = c.f holds p.[h,p.[g,f]] = p.[p.[h,g],f]
proof let f,g,h be Element of M; assume
A4:    d.h = c.g & d.g = c.f;
then [g,f] in dom p & [h,g] in dom p by A1;
then p.[g,f] = (the Comp of C).[f,g] & p.[h,g] = (the Comp of C).[g,h] &
c.(p.[g,f]) = c.g & d.(p.[h,g]) = d.g &
p.[g,f] is Element of M & p.[h,g] is Element of M by A2,A3,A4,PARTFUN1:
27;
then p.[h,p.[g,f]] = (the Comp of C).[(the Comp of C).[f,g],h] &
p.[p.[h,g],f] = (the Comp of C).[f,(the Comp of C).[g,h]] by A2,A4;
hence thesis by A4,CAT_1:def 8;
end;
let b be Element of (the Objects of C);
thus
A5:    d.(i.b) = b & c.(i.b) = b by CAT_1:def 8;
thus for f being Element of M st c.f = b holds p.[i.b,f] = f
proof let f be Element of M;
c.f = b implies p.[i.b,f] = (the Comp of C).[f,i.b] by A2,A5;
hence thesis by CAT_1:def 8;
end;
let g be Element of M;
d.g = b implies p.[g,i.b] = (the Comp of C).[i.b,g] by A2,A5;
hence d.g = b implies p.[g,i.b] = g by CAT_1:def 8;
end;
hence thesis by CAT_1:def 8; end;

definition let C;
func C opp -> strict Category equals
:Def1: CatStr (#the Objects of C, the Morphisms of C,
the Cod of C, the Dom of C,
~(the Comp of C), the Id of C#);
coherence by Th1;
end;

Lm1:
the Objects of C opp = the Objects of C &
the Morphisms of C opp = the Morphisms of C &
the Dom of C opp = the Cod of C & the Cod of C opp = the Dom of C &
the Comp of C opp = ~(the Comp of C) &
the Id of C opp = the Id of C
proof
C opp = CatStr (#the Objects of C, the Morphisms of C,
the Cod of C, the Dom of C,
~(the Comp of C), the Id of C#) by Def1;
hence thesis; end;

theorem Th2:
C opp opp = the CatStr of C
proof
the Objects of C opp = the Objects of C &
the Morphisms of C opp = the Morphisms of C &
the Dom of C opp = the Cod of C & the Cod of C opp = the Dom of C &
the Comp of C opp = ~(the Comp of C) &
the Id of C opp = the Id of C &
the Objects of C opp opp = the Objects of C opp &
the Morphisms of C opp opp = the Morphisms of C opp&
the Dom of C opp opp = the Cod of C opp &
the Cod of C opp opp = the Dom of C opp &
the Comp of C opp opp = ~(the Comp of C opp) &
the Id of C opp opp = the Id of C opp &
~~(the Comp of C) = the Comp of C by Lm1,FUNCT_4:54;
hence C opp opp = the CatStr of C;
end;

definition let C; let c be Object of C;
func c opp -> Object of C opp equals
:Def2:  c;
coherence by Lm1;
end;

definition let C; let c be Object of C opp;
func opp c -> Object of C equals
:Def3:  c opp;
coherence
proof
the Objects of C opp = the Objects of C &
the Objects of C opp opp = the Objects of C opp by Lm1;
hence thesis;
end;
end;

theorem
for c being Object of C holds c opp opp = c
proof let c be Object of C;
thus c opp opp = c opp by Def2 .= c by Def2;
end;

theorem Th4:
for c being Object of C holds opp (c opp) = c
proof let c be Object of C;
thus opp (c opp) = c opp opp by Def3
.= c opp by Def2
.= c by Def2;
end;

theorem Th5:
for c being Object of C opp holds (opp c) opp = c
proof let c be Object of C opp;
thus (opp c) opp = opp c by Def2
.= c opp by Def3
.= c by Def2;
end;

definition let C; let f be Morphism of C;
func f opp -> Morphism of C opp equals
:Def4:  f;
coherence by Lm1;
end;

definition let C; let f be Morphism of C opp;
func opp f -> Morphism of C equals
:Def5:  f opp;
coherence
proof
the Morphisms of C opp = the Morphisms of C &
the Morphisms of C opp opp = the Morphisms of C opp by Lm1;
hence thesis;
end;
end;

theorem Th6:
for f being Morphism of C holds f opp opp = f
proof let f be Morphism of C;
thus f opp opp = f opp by Def4 .= f by Def4;
end;

theorem Th7:
for f being Morphism of C holds opp(f opp) = f
proof let f be Morphism of C;
thus opp(f opp) = f opp opp by Def5
.= f opp by Def4
.= f by Def4;
end;

theorem Th8:
for f being Morphism of C opp holds (opp f)opp = f
proof let f be Morphism of C opp;
thus (opp f)opp = opp f by Def4
.= f opp by Def5
.= f by Def4;
end;

theorem Th9:
for f being Morphism of C holds dom(f opp) = cod f & cod(f opp) = dom f
proof let f be Morphism of C;
thus dom(f opp) = (the Dom of C opp).(f opp) by CAT_1:def 2
.= (the Dom of C opp).f by Def4
.= (the Cod of C).f by Lm1
.= cod f by CAT_1:def 3;
thus cod(f opp) = (the Cod of C opp).(f opp) by CAT_1:def 3
.= (the Cod of C opp).f by Def4
.= (the Dom of C).f by Lm1
.= dom f by CAT_1:def 2;
end;

theorem Th10:
for f being Morphism of C opp holds dom(opp f) = cod f & cod(opp f) = dom f
proof let f be Morphism of C opp;
dom(opp f) = (the Dom of C).(opp f) & cod(opp f) = (the Cod of C).(opp f)
&
dom(f opp) = (the Dom of C opp opp).(f opp) &
cod(f opp) = (the Cod of C opp opp).(f opp) &
the Dom of C opp = the Cod of C & the Cod of C opp = the Dom of C &
the Dom of C opp = the Cod of C opp opp &
the Cod of C opp = the Dom of C opp opp by Lm1,CAT_1:def 2,def 3;
then dom(opp f) = dom(f opp) & cod(opp f) = cod(f opp) by Def5;
hence thesis by Th9;
end;

theorem Th11:
for f being Morphism of C
holds (dom f) opp = cod (f opp) & (cod f) opp = dom (f opp)
proof let f be Morphism of C;
thus (dom f) opp = dom f by Def2 .= cod (f opp) by Th9;
thus (cod f) opp = cod f by Def2 .= dom (f opp) by Th9;
end;

theorem Th12:
for f being Morphism of C opp
holds opp (dom f) = cod (opp f) & opp (cod f) = dom (opp f)
proof let f be Morphism of C opp;
dom(opp f) = (the Dom of C).(opp f) & cod(opp f) = (the Cod of C).(opp f)
&
dom(f opp) = (the Dom of C opp opp).(f opp) &
cod(f opp) = (the Cod of C opp opp).(f opp) &
the Dom of C opp = the Cod of C & the Cod of C opp = the Dom of C &
the Dom of C opp = the Cod of C opp opp &
the Cod of C opp = the Dom of C opp opp by Lm1,CAT_1:def 2,def 3;
then opp (dom f) = (dom f) opp & opp (cod f) = (cod f) opp &
dom(opp f) = dom(f opp) & cod(opp f) = cod(f opp) by Def3,Def5;
hence thesis by Th11;
end;

theorem Th13:
for a,b being Object of C for f being Morphism of C
holds f in Hom(a,b) iff f opp in Hom(b opp,a opp)
proof let a,b be Object of C; let f be Morphism of C;
(dom f = a & cod f = b iff f in Hom(a,b)) &
a opp = a & b opp = b & dom(f opp) = cod f & cod(f opp) = dom f &
(cod(f opp) = a opp & dom(f opp) = b opp iff f opp in Hom(b opp,a opp))
by Def2,Th9,CAT_1:18;
hence thesis;
end;

theorem Th14:
for a,b being Object of C opp, f being Morphism of C opp
holds f in Hom(a,b) iff opp f in Hom(opp b,opp a)
proof let a,b be Object of C opp, f be Morphism of C opp;
now
thus dom(opp f) = cod f & cod(opp f) = dom f by Th10;
thus opp a = a opp by Def3 .= a by Def2;
thus opp b = b opp by Def3 .= b by Def2;
thus f in Hom(a,b) iff dom(f)=a & cod(f)=b by CAT_1:18;
end;
hence thesis by CAT_1:18;
end;

theorem Th15:
for a,b being Object of C, f being Morphism of a,b st Hom(a,b) <> {}
holds f opp is Morphism of b opp,a opp
proof let a,b be Object of C, f be Morphism of a,b;
assume Hom(a,b) <> {};
then f in Hom(a,b) by CAT_1:def 7;
then f opp in Hom(b opp,a opp) by Th13;
hence thesis by CAT_1:def 7;
end;

theorem Th16:
for a,b being Object of C opp,f being Morphism of a,b st Hom(a,b) <> {}
holds opp f is Morphism of opp b,opp a
proof let a,b be Object of C opp, f be Morphism of a,b;
assume Hom(a,b) <> {};
then f in Hom(a,b) by CAT_1:def 7;
then opp f in Hom(opp b,opp a) by Th14;
hence thesis by CAT_1:def 7;
end;

theorem Th17:
for f,g being Morphism of C st dom g = cod f
holds (g*f) opp = (f opp)*(g opp)
proof let f,g be Morphism of C;
assume
A1:  dom g = cod f;
then A2:  g*f = ( the Comp of C ).[g,f] by CAT_1:41;
A3:  dom g = cod(g opp) & cod f = dom(f opp) by Th9;
the Comp of C = ~~(the Comp of C) by FUNCT_4:54;
then the Comp of C = ~(the Comp of C opp) & f opp = f & g opp = g &
[f opp,g opp] in dom(the Comp of C opp) by A1,A3,Def4,Lm1,CAT_1:40;
then (the Comp of C ).[g,f] = (the Comp of C opp).[f opp,g opp]
by FUNCT_4:def 2;
then g*f = (f opp)*(g opp) by A1,A2,A3,CAT_1:41;
hence thesis by Def4;
end;

theorem Th18:
for f,g being Morphism of C st cod(g opp) = dom(f opp)
holds (g*f) opp = (f opp)*(g opp)
proof let f,g be Morphism of C;
cod(g opp) = dom g & dom(f opp) = cod f by Th9;
hence thesis by Th17;
end;

theorem Th19:
for f,g being Morphism of C opp st dom g = cod f
holds opp (g*f) = (opp f)*(opp g)
proof let f,g be Morphism of C opp;
assume
A1:  dom g = cod f;
A2:  cod(opp g) = dom g & dom(opp f) = cod f by Th10;
then A3:  [opp f,opp g] in dom( the Comp of C ) by A1,CAT_1:40;
thus opp (g*f) = (g*f) opp by Def5
.= g*f by Def4
.= ( the Comp of C opp ).[g,f] by A1,CAT_1:41
.= ~(the Comp of C).[g,f] by Lm1
.= ~(the Comp of C).[g opp,f] by Def4
.= ~(the Comp of C).[g opp,f opp] by Def4
.= ~(the Comp of C).[opp g,f opp] by Def5
.= ~(the Comp of C).[opp g,opp f] by Def5
.= (the Comp of C).[opp f,opp g] by A3,FUNCT_4:def 2
.= (opp f)*(opp g) by A1,A2,CAT_1:41;
end;

theorem
for a,b,c being Object of C, f being Morphism of a,b, g being Morphism of b
,
c
st Hom(a,b) <> {} & Hom(b,c) <> {}
holds (g*f) opp = (f opp)*(g opp)
proof let a,b,c be Object of C, f be Morphism of a,b, g be Morphism of b,c;
assume Hom(a,b) <> {} & Hom(b,c) <> {};
then cod f = b & dom g = b & g*f = g*(f qua Morphism of C)
by CAT_1:23,def 13;
hence thesis by Th17;
end;

theorem Th21:
for a being Object of C holds (id a) opp = id(a opp)
proof let a be Object of C;
(the Id of C).a = id a & (the Id of C opp).(a opp) = id(a opp) &
the Id of C = the Id of C opp & a = a opp & (id a) opp = id a
by Def2,Def4,Lm1,CAT_1:def 5;
hence thesis;
end;

theorem Th22:
for a being Object of C opp holds opp id a = id opp a
proof let a be Object of C opp;
thus opp id a = (id a) opp by Def5
.= id a by Def4
.= (the Id of C opp).a by CAT_1:def 5
.= (the Id of C).a by Lm1
.= (the Id of C).(a opp) by Def2
.= (the Id of C).(opp a) by Def3
.= id opp a by CAT_1:def 5;
end;

theorem
for f being Morphism of C holds f opp is monic iff f is epi
proof let f be Morphism of C;
thus f opp is monic implies f is epi
proof assume
A1:   for f1,f2 being Morphism of C opp
st dom f1 = dom f2 & cod f1 = dom(f opp) & cod f2 = dom(f opp) &
(f opp)*f1 = (f opp)*f2
holds f1 = f2;
let g1,g2 be Morphism of C such that
A2:   dom g1 = cod f & dom g2 = cod f and
A3:   cod g1 = cod g2 & g1*f = g2*f;
dom(f opp) = cod f & dom(g1 opp) = cod g1 & dom(g2 opp) = cod g2 &
cod(g1 opp) = dom g1 & cod(g2 opp) = dom g2 &
(g1*f) opp = (f opp)*(g1 opp) & (g2*f) opp = (f opp)*(g2 opp) &
g1 opp = g1 & g2 opp = g2 by A2,Def4,Th9,Th17;
hence g1 = g2 by A1,A2,A3;
end;
assume
A4:  for g1,g2 being Morphism of C
st dom g1 = cod f & dom g2 = cod f & cod g1 = cod g2 & g1*f=g2*f
holds g1=g2;
let f1,f2 be Morphism of C opp such that
A5:  dom f1 = dom f2 and
A6:  cod f1 = dom(f opp) & cod f2 = dom(f opp) and
A7:  (f opp)*f1=(f opp)*f2;
set g1 = opp f1, g2 = opp f2;
A8:  g1 opp = f1 & g2 opp = f2 by Th8;
A9: dom g1 = cod(g1 opp) & dom g2 = cod(g2 opp) & dom(f opp) = cod f by Th9;
then cod g1 = dom(g1 opp) & cod g2 = dom(g2 opp) &
(g1*f) opp = g1*f & (g2*f) opp = g2*f &
(f opp)*(g1 opp) = (g1*f) opp & (f opp)*(g2 opp) = (g2*f) opp
by A6,A8,Def4,Th9,Th17;
hence f1=f2 by A4,A5,A6,A7,A8,A9;
end;

theorem
for f being Morphism of C holds f opp is epi iff f is monic
proof let f be Morphism of C;
thus f opp is epi implies f is monic
proof assume
A1:  for g1,g2 being Morphism of C opp
st dom g1 = cod(f opp) & dom g2 = cod(f opp) & cod g1 = cod g2 &
g1*(f opp) = g2*(f opp)
holds g1=g2;
let f1,f2 be Morphism of C such that
A2:   dom f1 = dom f2 and
A3:   cod f1 = dom f and
A4:   cod f2 = dom f and
A5:   f*f1 = f*f2;
set g1 = f1 opp, g2 = f2 opp;
now
thus dom g1 = dom f by A3,Th9 .= cod(f opp) by Th9;
thus dom g2 = dom f by A4,Th9 .= cod(f opp) by Th9;
thus cod g1 = dom f2 by A2,Th9 .= cod g2 by Th9;
thus g1*(f opp) = (f*f2) opp by A3,A5,Th17 .= g2*(f opp) by A4,Th17;
end;
then g1 = g2 by A1;
hence f1 = g2 by Def4 .= f2 by Def4;
end;
assume
A6: for f1,f2 being Morphism of C
st dom f1 = dom f2 & cod f1 = dom f & cod f2 = dom f & f*f1 = f*f2
holds f1 = f2;
let g1,g2 be Morphism of C opp such that
A7:  dom g1 = cod(f opp) and
A8:  dom g2 = cod(f opp) and
A9:  cod g1 = cod g2 and
A10:  g1*(f opp) = g2*(f opp);
set f1 = opp g1, f2 = opp g2;
now
thus dom f1 = cod g2 by A9,Th10 .= dom f2 by Th10;
thus
A11:   cod f1 = dom g1 by Th10 .= dom f by A7,Th9;
thus
A12:   cod f2 = dom g2 by Th10 .= dom f by A8,Th9;
thus f*f1 = (f*f1) opp by Def4
.= (f1 opp)*(f opp) by A11,Th17
.= g2*(f opp) by A10,Th8
.= (f2 opp)*(f opp) by Th8
.= (f*f2) opp by A12,Th17
.= f*f2 by Def4;
end;
then f1 = f2 by A6;
hence g1 = f2 opp by Th8 .= g2 by Th8;
end;

theorem
for f being Morphism of C holds f opp is invertible iff f is invertible
proof let f be Morphism of C;
A1:  (id cod f) opp = id cod f & id dom f = (id dom f) opp &
id((cod f) opp) = (id cod f) opp & id((dom f)opp) = (id dom f) opp &
(cod f) opp = cod f & (dom f) opp = dom f by Def2,Def4,Th21;
thus f opp is invertible implies f is invertible
proof given g being Morphism of C opp such that
A2:   dom g = cod(f opp) & cod g = dom(f opp) and
A3:   (f opp)*g = id cod(f opp) & g*(f opp) = id dom(f opp);
take g' = opp g;
A4:   g' opp = g by Th8;
A5:   cod(f opp) = dom f & dom(f opp) = cod f by Th9;
hence dom g' = cod f & cod g' = dom f by A2,A4,Th9;
then (f*g') opp = (g' opp)*(f opp) & (g'*f) opp = (f opp)*(g' opp) &
(f*g') opp = f*g' & (g'*f) opp = g'*f by Def4,Th17;
hence f*g' = id cod f & g'*f = id dom f by A1,A3,A5,Th8;
end;
given g being Morphism of C such that
A6:  dom g = cod f & cod g = dom f and
A7:  f*g = id cod f & g*f = id dom f;
take g opp;
dom(g opp) = cod g & cod(g opp) = dom g by Th9;
hence dom(g opp) = cod(f opp) & cod(g opp) = dom(f opp) by A6,Th9;
then (f*g) opp = (g opp)*(f opp) & (g*f) opp = (f opp)*(g opp) by Th18;
hence (f opp)*(g opp) = id cod(f opp) & (g opp)*(f opp) = id dom(f opp)
by A1,A7,Th9;
end;

theorem
for c being Object of C
holds c is initial iff c opp is terminal
proof let c be Object of C;
thus c is initial implies c opp is terminal
proof
assume
A1:   c is initial;
let b be Object of C opp;
A2:   Hom(c,opp b)<>{} by A1,CAT_1:def 16;
then consider f being Morphism of C such that
A3:    f in Hom(c,opp b) by SUBSET_1:10;
A4:    (opp b) opp = b by Th5;
hence
A5:     Hom(b,c opp)<>{} by A3,Th13;
consider f being Morphism of c,opp b such that
A6:    for g being Morphism of c,opp b holds f=g by A1,CAT_1:def 16;
reconsider f' = f opp as Morphism of b,c opp by A2,A4,Th15;
take f'; let g be Morphism of b,c opp;
opp (c opp) = c by Th4;
then opp g is Morphism of c,opp b by A5,Th16;
hence f' = (opp g)opp by A6 .= g by Th8;
end;
assume
A7:  c opp is terminal;
let b be Object of C;
A8:   Hom(b opp,c opp)<>{} by A7,CAT_1:def 15;
then consider f being Morphism of C opp such that
A9:    f in Hom(b opp,c opp) by SUBSET_1:10;
A10:  opp (c opp) = c & opp (b opp) = b by Th4;
hence
A11: Hom(c,b)<>{} by A9,Th14;
consider f being Morphism of b opp,c opp such that
A12:  for g being Morphism of b opp,c opp holds f=g by A7,CAT_1:def 15;
reconsider f' = opp f as Morphism of c,b by A8,A10,Th16;
take f'; let g be Morphism of c,b;
g opp is Morphism of b opp,c opp by A11,Th15;
hence f' = opp(g opp) by A12 .= g by Th7;
end;

theorem
for c being Object of C
holds c opp is initial iff c is terminal
proof let c be Object of C;
thus c opp is initial implies c is terminal
proof assume
A1:   c opp is initial;
let b be Object of C;
A2:   Hom(c opp,b opp)<>{} by A1,CAT_1:def 16;
then consider f being Morphism of C opp such that
A3:   f in Hom(c opp,b opp) by SUBSET_1:10;
A4:   opp(b opp) = b & opp(c opp) = c by Th4;
hence
A5:   Hom(b,c)<>{} by A3,Th14;
consider f being Morphism of c opp,b opp such that
A6:   for g being Morphism of c opp,b opp holds f = g by A1,CAT_1:def 16;
reconsider f' = opp f as Morphism of b,c by A2,A4,Th16;
take f'; let g be Morphism of b,c;
g opp is Morphism of c opp,b opp by A5,Th15;
hence f' = opp(g opp) by A6 .= g by Th7;
end;
assume
A7:  c is terminal;
let b be Object of C opp;
A8:  Hom(opp b,c)<>{} by A7,CAT_1:def 15;
then consider f being Morphism of C such that
A9:  f in Hom(opp b, c) by SUBSET_1:10;
A10:  (opp b) opp = b by Th5;
hence
A11:  Hom(c opp,b)<>{} by A9,Th13;
consider f being Morphism of opp b ,c such that
A12:  for g being Morphism of opp b, c holds f = g by A7,CAT_1:def 15;
reconsider f' = f opp as Morphism of c opp,b by A8,A10,Th15;
take f'; let g be Morphism of c opp,b;
opp g is Morphism of opp b,opp (c opp) by A11,Th16;
then opp g is Morphism of opp b,c by Th4;
hence f' = (opp g) opp by A12 .= g by Th8;
end;

::  Contravariant Functors

definition
let C,B; let S be Function of the Morphisms of C opp,the Morphisms of B;
func /*S -> Function of the Morphisms of C,the Morphisms of B means
:Def6:  for f being Morphism of C holds it.f = S.(f opp);
existence
proof
deffunc F(Morphism of C) = S.(\$1 opp);
thus ex F being Function of the Morphisms of C,the Morphisms of B st
for f being Morphism of C holds F.f = F(f) from LambdaD;
end;
uniqueness
proof
let T1,T2 be Function of the Morphisms of C,the Morphisms of B such that
A1: for f being Morphism of C holds T1.f = S.(f opp) and
A2: for f being Morphism of C holds T2.f = S.(f opp);
now let f be Morphism of C;
thus T1.f = S.(f opp) by A1 .= T2.f by A2;
end;
hence thesis by FUNCT_2:113;
end;
end;

theorem
for S being Function of the Morphisms of C opp,the Morphisms of B
for f being Morphism of C opp holds (/*S).(opp f) = S.f
proof let S be Function of the Morphisms of C opp,the Morphisms of B;
let f be Morphism of C opp;
thus (/*S).(opp f) = S.((opp f) opp) by Def6 .= S.f by Th8;
end;

Lm2: for S being Functor of C opp,B, c being Object of C
holds (/*S).(id c) = id((Obj S).(c opp))
proof let S be Functor of C opp,B, c be Object of C;
thus (/*S).(id c) = S.((id c) opp) by Def6
.= S.(id(c opp)) by Th21
.= id((Obj S).(c opp)) by CAT_1:104;
end;

theorem Th29:
for S being Functor of C opp,B, c being Object of C
holds (Obj /*S).c = (Obj S).(c opp)
proof let S be Functor of C opp,B, c be Object of C;
A1: now let c be Object of C;
(/*S).(id c) = id((Obj S).(c opp)) by Lm2;
hence ex d being Object of B st (/*S).(id c) = id d;
end;
(/*S).(id c) = id((Obj S).(c opp)) by Lm2;
hence (Obj /*S).c = (Obj S).(c opp) by A1,CAT_1:102;
end;

theorem
for S being Functor of C opp,B, c being Object of C opp
holds (Obj /*S).(opp c) = (Obj S).c
proof let S be Functor of C opp,B, c be Object of C opp;
thus (Obj /*S).(opp c) = (Obj S).((opp c) opp) by Th29
.= (Obj S).c by Th5;
end;

Lm3: for S being Functor of C opp,B, c being Object of C
holds /*S.(id c) = id((Obj /*S).c)
proof let S be Functor of C opp,B, c be Object of C;
thus /*S.(id c) = S.((id c) opp) by Def6
.= S.(id(c opp)) by Th21
.= id((Obj S).(c opp)) by CAT_1:104
.= id((Obj /*S).c) by Th29;
end;

Lm4:
now let C,B; let S be Functor of C opp,B, c be Object of C;
(/*S).(id c) = id ((Obj /*S).c) by Lm3;
hence ex d being Object of B st (/*S).(id c) = id d;
end;

Lm5: for S being Functor of C opp,B, f being Morphism of C
holds (Obj /*S).(dom f) = cod (/*S.f) & (Obj /*S).(cod f) = dom (/*S.f)
proof let S be Functor of C opp,B, f be Morphism of C;
now
thus (Obj /*S).(dom f) = (Obj S).((dom f) opp) by Th29
.= (Obj S).(cod (f opp)) by Th11
.= cod(S.(f opp)) by CAT_1:105;
thus (Obj /*S).(cod f) = (Obj S).((cod f) opp) by Th29
.= (Obj S).(dom (f opp)) by Th11
.= dom(S.(f opp)) by CAT_1:105;
end;
hence thesis by Def6;
end;

Lm6:
now let C,B; let S be Functor of C opp,B, f be Morphism of C;
thus (/*S).(id dom f) = id((Obj /*S).(dom f)) by Lm3
.= id cod (/*S.f) by Lm5;
thus (/*S).(id cod f) = id((Obj /*S).(cod f)) by Lm3
.= id dom (/*S.f) by Lm5;
end;

Lm7: for S being Functor of C opp,B, f,g being Morphism of C st dom g = cod f
holds /*S.(g*f) = (/*S.f)*(/*S.g)
proof let S be Functor of C opp,B, f,g be Morphism of C such that
A1:  dom g = cod f;
A2:  dom(f opp) = cod f & cod (g opp) = dom g by Th9;
thus /*S.(g*f) = S.((g*f) opp) by Def6
.= S.((f opp)*(g opp)) by A1,Th17
.= (S.(f opp))*(S.(g opp)) by A1,A2,CAT_1:99
.= (/*S.f)*(S.(g opp)) by Def6
.= (/*S.f)*(/*S.g) by Def6;
end;

definition let C,D;
mode Contravariant_Functor of C,D
-> Function of the Morphisms of C,the Morphisms of D means
:Def7:
( for c being Object of C ex d being Object of D st it.(id c) = id d )
& ( for f being Morphism of C
holds it.(id dom f) = id cod (it.f) & it.(id cod f) = id dom (it.f) )
& ( for f,g being Morphism of C st dom g = cod f
holds it.(g*f) = (it.f)*(it.g));
existence
proof consider S being Functor of C opp,D; take /*S;
thus thesis by Lm4,Lm6,Lm7;
end;
end;

theorem Th31:
for S being Contravariant_Functor of C,D,
c being Object of C, d being Object of D st S.(id c) = id d
holds (Obj S).c = d
proof let S be Contravariant_Functor of C,D;
let c be Object of C, d be Object of D;
for c being Object of C ex d being Object of D st S.(id c) = id d
by Def7;
hence thesis by CAT_1:102;
end;

theorem Th32:
for S being Contravariant_Functor of C,D,c being Object of C
holds S.(id c) = id((Obj S).c)
proof let S be Contravariant_Functor of C,D,c be Object of C;
ex d being Object of D st S.(id c) = id d by Def7;
hence S.(id c) = id((Obj S).c) by Th31;
end;

theorem Th33:
for S being Contravariant_Functor of C,D, f being Morphism of C
holds (Obj S).(dom f) = cod (S.f) & (Obj S).(cod f) = dom (S.f)
proof let S be Contravariant_Functor of C,D, f be Morphism of C;
S.(id dom f) = id cod (S.f) & S.(id cod f) = id dom (S.f) by Def7;
hence thesis by Th31;
end;

theorem Th34:
for S being Contravariant_Functor of C,D, f,g being Morphism of C
st dom g = cod f holds dom (S.f) = cod (S.g)
proof let S be Contravariant_Functor of C,D, f,g be Morphism of C;
assume dom g = cod f;
hence dom (S.f) = (Obj S).(dom g) by Th33 .= cod (S.g) by Th33;
end;

theorem Th35:
for S being Functor of C opp,B holds /*S is Contravariant_Functor of C,B
proof let S be Functor of C opp,B;
thus for c being Object of C ex d being Object of B st /*S.(id c) = id d
by Lm4;
thus thesis by Lm6,Lm7;
end;

theorem Th36:
for S1 being Contravariant_Functor of C,B,
S2 being Contravariant_Functor of B,D
holds S2*S1 is Functor of C,D
proof
let S1 be Contravariant_Functor of C,B, S2 be Contravariant_Functor of B,D;
set T = S2*S1;
now
thus for c being Object of C ex d being Object of D st T.(id c) = id d
proof let c be Object of C;
consider b being Object of B such that
A1:    S1.(id c) = id b by Def7;
consider d being Object of D such that
A2:    S2.(id b) = id d by Def7;
take d;
thus T.(id c) = id d by A1,A2,FUNCT_2:21;
end;
thus for f being Morphism of C
holds T.(id dom f) = id dom (T.f) & T.(id cod f) = id cod (T.f)
proof let f be Morphism of C;
thus T.(id dom f) = S2.(S1.(id dom f)) by FUNCT_2:21
.= S2.(id cod (S1.f)) by Def7
.= id dom (S2.((S1.f))) by Def7
.= id dom (T.f) by FUNCT_2:21;
thus T.(id cod f) = S2.(S1.(id cod f)) by FUNCT_2:21
.= S2.(id dom (S1.f)) by Def7
.= id cod (S2.((S1.f))) by Def7
.= id cod (T.f) by FUNCT_2:21;
end;
let f,g be Morphism of C; assume
A3:   dom g = cod f;
then A4:   cod (S1.g) = dom(S1.f) by Th34;
thus T.(g*f) = S2.(S1.(g*f)) by FUNCT_2:21
.= S2.((S1.f)*(S1.g)) by A3,Def7
.= (S2.(S1.g))*(S2.(S1.f)) by A4,Def7
.= (T.g)*(S2.(S1.f)) by FUNCT_2:21
.= (T.g)*(T.f) by FUNCT_2:21;
end;
hence thesis by CAT_1:96;
end;

Lm8: for S being Contravariant_Functor of C opp,B, c being Object of C
holds (/*S).(id c) = id((Obj S).(c opp))
proof let S be Contravariant_Functor of C opp,B, c be Object of C;
thus (/*S).(id c) = S.((id c) opp) by Def6
.= S.(id(c opp)) by Th21
.= id((Obj S).(c opp)) by Th32;
end;

theorem Th37:
for S being Contravariant_Functor of C opp,B, c being Object of C
holds (Obj /*S).c = (Obj S).(c opp)
proof let S be Contravariant_Functor of C opp,B, c be Object of C;
A1: now let c be Object of C;
(/*S).(id c) = id((Obj S).(c opp)) by Lm8;
hence ex d being Object of B st (/*S).(id c) = id d;
end;
(/*S).(id c) = id((Obj S).(c opp)) by Lm8;
hence (Obj /*S).c = (Obj S).(c opp) by A1,CAT_1:102;
end;

theorem
for S being Contravariant_Functor of C opp,B, c being Object of C opp
holds (Obj /*S).(opp c) = (Obj S).c
proof let S be Contravariant_Functor of C opp,B, c be Object of C opp;
thus (Obj /*S).(opp c) = (Obj S).((opp c) opp) by Th37
.= (Obj S).c by Th5;
end;

Lm9: for S being Contravariant_Functor of C opp,B, c being Object of C
holds /*S.(id c) = id((Obj /*S).c)
proof let S be Contravariant_Functor of C opp,B, c be Object of C;
thus /*S.(id c) = S.((id c) opp) by Def6
.= S.(id(c opp)) by Th21
.= id((Obj S).(c opp)) by Th32
.= id((Obj /*S).c) by Th37;
end;

Lm10: for S being Contravariant_Functor of C opp,B, f being Morphism of C
holds (Obj /*S).(dom f) = dom (/*S.f) & (Obj /*S).(cod f) = cod (/*S.f)
proof let S be Contravariant_Functor of C opp,B, f be Morphism of C;
now
thus (Obj /*S).(dom f) = (Obj S).((dom f) opp) by Th37
.= (Obj S).(cod (f opp)) by Th11
.= dom(S.(f opp)) by Th33;
thus (Obj /*S).(cod f) = (Obj S).((cod f) opp) by Th37
.= (Obj S).(dom (f opp)) by Th11
.= cod(S.(f opp)) by Th33;
end;
hence thesis by Def6;
end;

theorem
for S being Contravariant_Functor of C opp,B holds /*S is Functor of C,B
proof let S be Contravariant_Functor of C opp,B;
now
thus for c being Object of C ex d being Object of B st /*S.(id c) = id d
proof let c be Object of C;
(/*S).(id c) = id ((Obj /*S).c) by Lm9;
hence ex d being Object of B st (/*S).(id c) = id d;
end;
thus for f being Morphism of C
holds (/*S).(id dom f) = id dom (/*S.f) &
(/*S).(id cod f) = id cod (/*S.f)
proof let f be Morphism of C;
thus (/*S).(id dom f) = id((Obj /*S).(dom f)) by Lm9
.= id dom (/*S.f) by Lm10;
thus (/*S).(id cod f) = id((Obj /*S).(cod f)) by Lm9
.= id cod (/*S.f) by Lm10;
end;
let f,g be Morphism of C such that
A1:  dom g = cod f;
A2:  dom(f opp) = cod f & cod (g opp) = dom g by Th9;
thus /*S.(g*f) = S.((g*f) opp) by Def6
.= S.((f opp)*(g opp)) by A1,Th17
.= (S.(g opp))*(S.(f opp)) by A1,A2,Def7
.= (/*S.g)*(S.(f opp)) by Def6
.= (/*S.g)*(/*S.f) by Def6;
end;
hence thesis by CAT_1:96;
end;

:: Dualization functors

definition
let C,B; let S be Function of the Morphisms of C,the Morphisms of B;
func *'S -> Function of the Morphisms of C opp,the Morphisms of B means
:Def8: for f being Morphism of C opp holds it.f = S.(opp f);
existence
proof
deffunc F(Morphism of C opp) = S.(opp \$1);
thus ex F being Function of the Morphisms of C opp,the Morphisms of B st
for f being Morphism of C opp holds F.f = F(f) from LambdaD;
end;
uniqueness
proof
let T1,T2 be Function of the Morphisms of C opp,the Morphisms of B such that
A1: for f being Morphism of C opp holds T1.f = S.(opp f) and
A2: for f being Morphism of C opp holds T2.f = S.(opp f);
now let f be Morphism of C opp;
thus T1.f = S.(opp f) by A1 .= T2.f by A2;
end;
hence thesis by FUNCT_2:113;
end;
func S*' -> Function of the Morphisms of C,the Morphisms of B opp means
:Def9: for f being Morphism of C holds it.f = (S.f) opp;
existence
proof
deffunc F(Morphism of C) = (S.\$1) opp;
thus ex F being Function of the Morphisms of C,the Morphisms of B opp st
for f being Morphism of C holds F.f = F(f) from LambdaD;
end;
uniqueness
proof
let T1,T2 be Function of the Morphisms of C,the Morphisms of B opp such that
A3: for f being Morphism of C holds T1.f = (S.f) opp and
A4: for f being Morphism of C holds T2.f = (S.f) opp;
now let f be Morphism of C;
thus T1.f = (S.f) opp by A3 .= T2.f by A4;
end;
hence thesis by FUNCT_2:113;
end;
end;

theorem
for S being Function of the Morphisms of C,the Morphisms of B
for f being Morphism of C holds (*'S).(f opp) = S.f
proof let S be Function of the Morphisms of C,the Morphisms of B;
let f be Morphism of C;
thus (*'S).(f opp) = S.(opp (f opp)) by Def8 .= S.f by Th7;
end;

Lm11: for S being Functor of C,B, c being Object of C opp
holds (*'S).(id c) = id((Obj S).(opp c))
proof let S be Functor of C,B, c be Object of C opp;
thus (*'S).(id c) = S.(opp id c) by Def8
.= S.(id opp c) by Th22
.= id((Obj S).(opp c)) by CAT_1:104;
end;

theorem Th41:
for S being Functor of C,B, c being Object of C opp
holds (Obj *'S).c = (Obj S).(opp c)
proof let S be Functor of C,B, c be Object of C opp;
now thus (*'S).(id c) = id((Obj S).(opp c)) by Lm11;
let c be Object of C opp;
(*'S).(id c) = id((Obj S).(opp c)) by Lm11;
hence ex d being Object of B st (*'S).(id c) = id d;
end;
hence (Obj *'S).c = (Obj S).(opp c) by CAT_1:102;
end;

theorem
for S being Functor of C,B, c being Object of C
holds (Obj *'S).(c opp) = (Obj S).c
proof let S be Functor of C,B, c be Object of C;
thus (Obj *'S).(c opp) = (Obj S).(opp (c opp)) by Th41
.= (Obj S).c by Th4;
end;

Lm12: for S being Functor of C,B, c being Object of C
holds (S*').(id c) = id(((Obj S).c) opp)
proof let S be Functor of C,B, c be Object of C;
thus (S*').(id c) = (S.(id c)) opp by Def9
.= (id((Obj S).c)) opp by CAT_1:104
.= id(((Obj S).c) opp) by Th21;
end;

theorem Th43:
for S being Functor of C,B, c being Object of C
holds (Obj S*').c = ((Obj S).c) opp
proof let S be Functor of C,B, c be Object of C;
now thus (S*').(id c) = id(((Obj S).c) opp) by Lm12;
let c be Object of C;
(S*').(id c) = id(((Obj S).c) opp) by Lm12;
hence ex d being Object of B opp st (S*').(id c) = id d;
end;
hence (Obj S*').c = ((Obj S).c) opp by CAT_1:102;
end;

Lm13: for S being Contravariant_Functor of C,B, c being Object of C opp
holds (*'S).(id c) = id((Obj S).(opp c))
proof let S be Contravariant_Functor of C,B, c be Object of C opp;
thus (*'S).(id c) = S.(opp id c) by Def8
.= S.(id opp c) by Th22
.= id((Obj S).(opp c)) by Th32;
end;

theorem Th44:
for S being Contravariant_Functor of C,B, c being Object of C opp
holds (Obj *'S).c = (Obj S).(opp c)
proof let S be Contravariant_Functor of C,B, c be Object of C opp;
now thus (*'S).(id c) = id((Obj S).(opp c)) by Lm13;
let c be Object of C opp;
(*'S).(id c) = id((Obj S).(opp c)) by Lm13;
hence ex d being Object of B st (*'S).(id c) = id d;
end;
hence (Obj *'S).c = (Obj S).(opp c) by CAT_1:102;
end;

theorem
for S being Contravariant_Functor of C,B, c being Object of C
holds (Obj *'S).(c opp) = (Obj S).c
proof let S be Contravariant_Functor of C,B, c be Object of C;
thus (Obj *'S).(c opp) = (Obj S).(opp (c opp)) by Th44
.= (Obj S).c by Th4;
end;

Lm14: for S being Contravariant_Functor of C,B, c being Object of C
holds (S*').(id c) = id(((Obj S).c) opp)
proof let S be Contravariant_Functor of C,B, c be Object of C;
thus (S*').(id c) = (S.(id c)) opp by Def9
.= (id((Obj S).c)) opp by Th32
.= id(((Obj S).c) opp) by Th21;
end;

theorem Th46:
for S being Contravariant_Functor of C,B, c being Object of C
holds (Obj S*').c = ((Obj S).c) opp
proof let S be Contravariant_Functor of C,B, c be Object of C;
now thus (S*').(id c) = id(((Obj S).c) opp) by Lm14;
let c be Object of C;
(S*').(id c) = id(((Obj S).c) opp) by Lm14;
hence ex d being Object of B opp st (S*').(id c) = id d;
end;
hence (Obj S*').c = ((Obj S).c) opp by CAT_1:102;
end;

Lm15:
for F being Function of the Morphisms of C,the Morphisms of D
for f being Morphism of C opp holds *'F*'.f = (F.(opp f)) opp
proof let F be Function of the Morphisms of C,the Morphisms of D;
let f be Morphism of C opp;
thus *'F*'.f = (*'F.f) opp by Def9
.= (F.(opp f)) opp by Def8;
end;

theorem Th47:
for F being Function of the Morphisms of C,the Morphisms of D
for f being Morphism of C holds *'F*'.(f opp) = (F.f) opp
proof let F be Function of the Morphisms of C,the Morphisms of D;
let f be Morphism of C;
thus *'F*'.(f opp) = (F.(opp(f opp))) opp by Lm15
.= (F.f) opp by Th7;
end;

theorem Th48:
for S being Function of the Morphisms of C,the Morphisms of D
holds /*(*'S) = S
proof let S be Function of the Morphisms of C,the Morphisms of D;
now let f be Morphism of C;
thus /*(*'S).f = (*'S).(f opp) by Def6
.= S.(opp (f opp)) by Def8
.= S.f by Th7;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for S being Function of the Morphisms of C opp,the Morphisms of D
holds *'(/*S) = S
proof let S be Function of the Morphisms of C opp,the Morphisms of D;
now let f be Morphism of C opp;
thus *'(/*S).f = (/*S).(opp f) by Def8
.= S.((opp f) opp) by Def6
.= S.f by Th8;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for S being Function of the Morphisms of C, the Morphisms of D
holds *'S*' = *'(S*')
proof let S be Function of the Morphisms of C, the Morphisms of D;
now let f be Morphism of C opp;
thus *'S*'.f = (*'S.f) opp by Def9
.= (S.(opp f)) opp by Def8
.= (S*').(opp f) by Def9
.= *'(S*').f by Def8;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for D being strict Category,
S being Function of the Morphisms of C, the Morphisms of D
holds S*'*' = S
proof let D be strict Category;
let S be Function of the Morphisms of C, the Morphisms of D;
now thus D opp opp = D by Th2;
let f be Morphism of C;
thus S*'*'.f = (S*'.f) opp by Def9
.= (S.f) opp opp by Def9
.= S.f by Th6;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for C being strict Category,
S being Function of the Morphisms of C, the Morphisms of D
holds *'*'S = S
proof let C be strict Category;
let S be Function of the Morphisms of C, the Morphisms of D;
now thus C opp opp = C by Th2;
let f be Morphism of C opp opp;
thus *'*'S.f = *'S.(opp f) by Def8
.= S.(opp opp f) by Def8
.= S.((opp f) opp) by Def5
.= S.f by Th8;
end;
hence thesis by FUNCT_2:113;
end;

Lm16:
for S being Function of the Morphisms of C opp,the Morphisms of B
for T being Function of the Morphisms of B,the Morphisms of D
holds /*(T*S) = T*(/*S)
proof let S be Function of the Morphisms of C opp,the Morphisms of B;
let T be Function of the Morphisms of B,the Morphisms of D;
now let f be Morphism of C;
thus /*(T*S).f = (T*S).(f opp) by Def6
.= T.(S.(f opp)) by FUNCT_2:21
.= T.(/*S.f) by Def6
.= (T*(/*S)).f by FUNCT_2:21;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for S being Function of the Morphisms of C,the Morphisms of B
for T being Function of the Morphisms of B,the Morphisms of D
holds *'(T*S) = T*(*'S)
proof let S be Function of the Morphisms of C,the Morphisms of B;
let T be Function of the Morphisms of B,the Morphisms of D;
now let f be Morphism of C opp;
thus (*'(T*S)).f = (T*S).(opp f) by Def8
.= T.(S.(opp f)) by FUNCT_2:21
.= T.(*'S.f) by Def8
.= (T*(*'S)).f by FUNCT_2:21;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for S being Function of the Morphisms of C,the Morphisms of B
for T being Function of the Morphisms of B,the Morphisms of D
holds (T*S)*' = T*'*S
proof let S be Function of the Morphisms of C,the Morphisms of B;
let T be Function of the Morphisms of B,the Morphisms of D;
now let f be Morphism of C;
thus (T*S)*'.f = ((T*S).f) opp by Def9
.= (T.(S.f)) opp by FUNCT_2:21
.= T*'.(S.f) by Def9
.= (T*'*S).f by FUNCT_2:21;
end;
hence thesis by FUNCT_2:113;
end;

theorem
for F1 being Function of the Morphisms of C,the Morphisms of B
for F2 being Function of the Morphisms of B,the Morphisms of D
holds *'(F2*F1)*' = (*'F2*')*(*'F1*')
proof let F1 be Function of the Morphisms of C,the Morphisms of B;
let F2 be Function of the Morphisms of B,the Morphisms of D;
now let f be Morphism of C opp;
thus (*'(F2*F1)*').f = ((F2*F1).(opp f)) opp by Lm15
.= (F2.(F1.(opp f))) opp by FUNCT_2:21
.= (*'F2*').((F1.(opp f)) opp) by Th47
.= (*'F2*').((*'F1*').f) by Lm15
.= ((*'F2*')*(*'F1*')).f by FUNCT_2:21;
end;
hence thesis by FUNCT_2:113;
end;

Lm17: for S being Contravariant_Functor of C,B, c being Object of C opp
holds *'S.(id c) = id((Obj *'S).c)
proof let S be Contravariant_Functor of C,B, c be Object of C opp;
thus *'S.(id c) = S.(opp id c) by Def8
.= S.(id opp c) by Th22
.= id((Obj S).(opp c)) by Th32
.= id((Obj *'S).c) by Th44;
end;

Lm18: for S being Contravariant_Functor of C,B, f being Morphism of C opp
holds (Obj *'S).(dom f) = dom (*'S.f) & (Obj *'S).(cod f) = cod (*'S.f)
proof let S be Contravariant_Functor of C,B, f be Morphism of C opp;
now
thus (Obj *'S).(dom f) = (Obj S).(opp dom f) by Th44
.= (Obj S).(cod opp f ) by Th12
.= dom(S.(opp f)) by Th33;
thus (Obj *'S).(cod f) = (Obj S).(opp cod f) by Th44
.= (Obj S).(dom opp f) by Th12
.= cod(S.(opp f)) by Th33;
end;
hence thesis by Def8;
end;

theorem Th56:
for S being Contravariant_Functor of C,D holds *'S is Functor of C opp,D
proof let S be Contravariant_Functor of C,D;
now
thus for c being Object of C opp ex d being Object of D st *'S.(id c) = id
d
proof let c be Object of C opp;
(*'S).(id c) = id ((Obj *'S).c) by Lm17;
hence ex d being Object of D st (*'S).(id c) = id d;
end;
thus for f being Morphism of C opp
holds *'S.(id dom f) = id dom (*'S.f) & *'S.(id cod f) = id cod (*'S.f)
proof let f be Morphism of C opp;
thus (*'S).(id dom f) = id((Obj *'S).(dom f)) by Lm17
.= id dom (*'S.f) by Lm18;
thus (*'S).(id cod f) = id((Obj *'S).(cod f)) by Lm17
.= id cod (*'S.f) by Lm18;
end;
let f,g be Morphism of C opp such that
A1:  dom g = cod f;
A2:  dom(opp f) = cod f & cod (opp g) = dom g by Th10;
thus *'S.(g*f) = S.(opp (g*f)) by Def8
.= S.((opp f)*(opp g)) by A1,Th19
.= (S.(opp g))*(S.(opp f)) by A1,A2,Def7
.= (*'S.g)*(S.(opp f)) by Def8
.= (*'S.g)*(*'S.f) by Def8;
end;
hence *'S is Functor of C opp,D by CAT_1:96;
end;

Lm19: for S being Contravariant_Functor of C,B, c being Object of C
holds S*'.(id c) = id((Obj S*').c)
proof let S be Contravariant_Functor of C,B, c be Object of C;
thus S*'.(id c) = (S.(id c)) opp by Def9
.= (id((Obj S).c)) opp by Th32
.= id(((Obj S).c) opp) by Th21
.= id((Obj S*').c) by Th46;
end;

Lm20: for S being Contravariant_Functor of C,B, f being Morphism of C
holds (Obj S*').(dom f) = dom (S*'.f) & (Obj S*').(cod f) = cod (S*'.f)
proof let S be Contravariant_Functor of C,B, f be Morphism of C;
now
thus (Obj S*').(dom f) = ((Obj S).(dom f)) opp by Th46
.= (cod(S.f)) opp by Th33
.= dom((S.f) opp) by Th11;
thus (Obj S*').(cod f) = ((Obj S).(cod f)) opp by Th46
.= (dom(S.f)) opp by Th33
.= cod((S.f) opp) by Th11;
end;
hence thesis by Def9;
end;

theorem Th57:
for S being Contravariant_Functor of C,D holds S*' is Functor of C, D opp
proof let S be Contravariant_Functor of C,D;
now
thus for c being Object of C ex d being Object of D opp st S*'.(id c) = id
d
proof let c be Object of C;
(S*').(id c) = id(((Obj S).c) opp) by Lm14;
hence ex d being Object of D opp st (S*').(id c) = id d;
end;
thus for f being Morphism of C
holds S*'.(id dom f) = id dom (S*'.f) & S*'.(id cod f) = id cod (S*'.f)
proof let f be Morphism of C;
thus (S*').(id dom f) = id((Obj S*').(dom f)) by Lm19
.= id dom (S*'.f) by Lm20;
thus (S*').(id cod f) = id((Obj S*').(cod f)) by Lm19
.= id cod (S*'.f) by Lm20;
end;
let f,g be Morphism of C; assume
A1:  dom g = cod f;
then A2:  dom(S.f) = cod (S.g) by Th34;
thus S*'.(g*f) = (S.(g*f)) opp by Def9
.= ((S.f)*(S.g)) opp by A1,Def7
.= ((S.g) opp)*((S.f) opp) by A2,Th17
.= (S*'.g)*((S.f) opp) by Def9
.= (S*'.g)*(S*'.f) by Def9;
end;
hence S*' is Functor of C,D opp by CAT_1:96;
end;

Lm21: for S being Functor of C,B, c being Object of C opp
holds *'S.(id c) = id((Obj *'S).c)
proof let S be Functor of C,B, c be Object of C opp;
thus *'S.(id c) = S.(opp id c) by Def8
.= S.(id opp c) by Th22
.= id((Obj S).(opp c)) by CAT_1:104
.= id((Obj *'S).c) by Th41;
end;

Lm22: for S being Functor of C,B, f being Morphism of C opp
holds (Obj *'S).(dom f) = cod (*'S.f) & (Obj *'S).(cod f) = dom (*'S.f)
proof let S be Functor of C,B, f be Morphism of C opp;
now
thus (Obj *'S).(dom f) = (Obj S).(opp dom f) by Th41
.= (Obj S).(cod opp f ) by Th12
.= cod(S.(opp f)) by CAT_1:105;
thus (Obj *'S).(cod f) = (Obj S).(opp cod f) by Th41
.= (Obj S).(dom opp f) by Th12
.= dom(S.(opp f)) by CAT_1:105;
end;
hence thesis by Def8;
end;

theorem Th58:
for S being Functor of C,D holds *'S is Contravariant_Functor of C opp,D
proof let S be Functor of C,D;
thus for c being Object of C opp ex d being Object of D st *'S.(id c) = id
d
proof let c be Object of C opp;
(*'S).(id c) = id ((Obj *'S).c) by Lm21;
hence ex d being Object of D st (*'S).(id c) = id d;
end;
thus for f being Morphism of C opp
holds *'S.(id dom f) = id cod (*'S.f) & *'S.(id cod f) = id dom (*'S.f)
proof let f be Morphism of C opp;
thus (*'S).(id dom f) = id((Obj *'S).(dom f)) by Lm21
.= id cod(*'S.f) by Lm22;
thus (*'S).(id cod f) = id((Obj *'S).(cod f)) by Lm21
.= id dom(*'S.f) by Lm22;
end;
let f,g be Morphism of C opp such that
A1:  dom g = cod f;
A2:  dom(opp f) = cod f & cod (opp g) = dom g by Th10;
thus *'S.(g*f) = S.(opp (g*f)) by Def8
.= S.((opp f)*(opp g)) by A1,Th19
.= (S.(opp f))*(S.(opp g)) by A1,A2,CAT_1:99
.= (*'S.f)*(S.(opp g)) by Def8
.= (*'S.f)*(*'S.g) by Def8;
end;

Lm23: for S being Functor of C,B, c being Object of C
holds S*'.(id c) = id((Obj S*').c)
proof let S be Functor of C,B, c be Object of C;
thus S*'.(id c) = (S.(id c)) opp by Def9
.= (id((Obj S).c)) opp by CAT_1:104
.= id(((Obj S).c) opp) by Th21
.= id((Obj S*').c) by Th43;
end;

Lm24: for S being Functor of C,B, f being Morphism of C
holds (Obj S*').(dom f) = cod (S*'.f) & (Obj S*').(cod f) = dom (S*'.f)
proof let S be Functor of C,B, f be Morphism of C;
now
thus (Obj S*').(dom f) = ((Obj S).(dom f)) opp by Th43
.= (dom(S.f)) opp by CAT_1:105
.= cod((S.f) opp) by Th11;
thus (Obj S*').(cod f) = ((Obj S).(cod f)) opp by Th43
.= (cod(S.f)) opp by CAT_1:105
.= dom((S.f) opp) by Th11;
end;
hence thesis by Def9;
end;

theorem Th59:
for S being Functor of C,D holds S*' is Contravariant_Functor of C, D opp
proof let S be Functor of C,D;
thus for c being Object of C ex d being Object of D opp st S*'.(id c) = id
d
proof let c be Object of C;
(S*').(id c) = id ((Obj S*').c) by Lm23;
hence ex d being Object of D opp st (S*').(id c) = id d;
end;
thus for f being Morphism of C
holds S*'.(id dom f) = id cod (S*'.f) & S*'.(id cod f) = id dom (S*'.f)
proof let f be Morphism of C;
thus (S*').(id dom f) = id((Obj S*').(dom f)) by Lm23
.= id cod(S*'.f) by Lm24;
thus (S*').(id cod f) = id((Obj S*').(cod f)) by Lm23
.= id dom(S*'.f) by Lm24;
end;
let f,g be Morphism of C; assume
A1:  dom g = cod f;
then A2:  dom(S.g) = cod (S.f) by CAT_1:99;
thus S*'.(g*f) = (S.(g*f)) opp by Def9
.= ((S.g)*(S.f)) opp by A1,CAT_1:99
.= ((S.f) opp)*((S.g) opp) by A2,Th17
.= (S*'.f)*((S.g) opp) by Def9
.= (S*'.f)*(S*'.g) by Def9;
end;

theorem
for S1 being Contravariant_Functor of C,B, S2 being Functor of B,D
holds S2*S1 is Contravariant_Functor of C,D
proof let S1 be Contravariant_Functor of C,B, S2 be Functor of B,D;
*'S1 is Functor of C opp,B by Th56;
then S2*(*'S1) is Functor of C opp,D by CAT_1:110;
then /*(S2*(*'S1)) is Contravariant_Functor of C,D by Th35;
then S2*(/*(*'S1)) is Contravariant_Functor of C,D by Lm16;
hence thesis by Th48;
end;

theorem
for S1 being Functor of C,B, S2 being Contravariant_Functor of B,D
holds S2*S1 is Contravariant_Functor of C,D
proof let S1 be Functor of C,B, S2 be Contravariant_Functor of B,D;
*'S1 is Contravariant_Functor of C opp,B by Th58;
then S2*(*'S1) is Functor of C opp,D by Th36;
then /*(S2*(*'S1)) is Contravariant_Functor of C,D by Th35;
then S2*(/*(*'S1)) is Contravariant_Functor of C,D by Lm16;
hence thesis by Th48;
end;

theorem
for F being Functor of C,D, c being Object of C
holds (Obj *'F*').(c opp) = ((Obj F).c) opp
proof let F be Functor of C,D, c be Object of C;
*'F is Contravariant_Functor of C opp,D by Th58;
hence (Obj *'F*').(c opp) = ((Obj *'F).(c opp)) opp by Th46
.= ((Obj F).(opp (c opp))) opp by Th41
.= ((Obj F).c) opp by Th4;
end;

theorem
for F being Contravariant_Functor of C,D, c being Object of C
holds (Obj *'F*').(c opp) = ((Obj F).c) opp
proof let F be Contravariant_Functor of C,D, c be Object of C;
*'F is Functor of C opp,D by Th56;
hence (Obj *'F*').(c opp) = ((Obj *'F).(c opp)) opp by Th43
.= ((Obj F).(opp(c opp))) opp by Th44
.= ((Obj F).c) opp by Th4;
end;

theorem
for F being Functor of C,D holds *'F*' is Functor of C opp,D opp
proof let F be Functor of C,D;
*'F is Contravariant_Functor of C opp,D by Th58;
hence thesis by Th57;
end;

theorem
for F being Contravariant_Functor of C,D
holds *'F*' is Contravariant_Functor of C opp,D opp
proof let F be Contravariant_Functor of C,D;
*'F is Functor of C opp,D by Th56;
hence thesis by Th59;
end;

::  Duality Functors

definition let C;
func id* C -> Contravariant_Functor of C,C opp equals
:Def10:  (id C)*';
coherence by Th59;
func *id C -> Contravariant_Functor of C opp,C equals
:Def11:  *'(id C);
coherence by Th58;
end;

theorem Th66:
for f being Morphism of C holds (id* C).f = f opp
proof let f be Morphism of C;
thus (id* C).f = (id C)*'.f by Def10
.= ((id C).f) opp by Def9
.= f opp by CAT_1:115;
end;

theorem
for c being Object of C holds (Obj id* C).c = c opp
proof let c be Object of C;
thus (Obj id* C).c = (Obj (id C)*').c by Def10
.= ((Obj id C).c) opp by Th43
.= c opp by CAT_1:116;
end;

theorem Th68:
for f being Morphism of C opp holds (*id C).f = opp f
proof let f be Morphism of C opp;
thus (*id C).f = *'(id C).f by Def11
.= ((id C).(opp f)) by Def8
.= opp f by CAT_1:115;
end;

theorem
for c being Object of C opp holds (Obj *id C).c = opp c
proof let c be Object of C opp;
thus (Obj *id C).c = (Obj *'(id C)).c by Def11
.= (Obj id C).(opp c) by Th41
.= opp c by CAT_1:116;
end;

theorem
for S being Function of the Morphisms of C,the Morphisms of D
holds *'S = S*(*id C) & S*' = (id* D)*S
proof let S be Function of the Morphisms of C,the Morphisms of D;
now let f be Morphism of C opp;
thus *'S.f = S.(opp f) by Def8
.= S.((*id C).f) by Th68
.= (S*(*id C)).f by FUNCT_2:21;
end;
hence *'S = S*(*id C) by FUNCT_2:113;
now let f be Morphism of C;
thus S*'.f = (S.f) opp by Def9
.= (id* D).(S.f) by Th66
.= ((id* D)*S).f by FUNCT_2:21;
end;
hence thesis by FUNCT_2:113;
end;
```