:: YELLOW20 semantic presentation

theorem Th1: :: YELLOW20:1
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being reflexive feasible FunctorStr of b1,b2 holds
( b3 is coreflexive & b3 is bijective implies for b4 being object of b1
for b5 being object of b2 holds
( b3 . b4 = b5 iff (b3 " ) . b5 = b4 ) )
proof end;

theorem Th2: :: YELLOW20:2
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being feasible Covariant FunctorStr of b1,b2
for b4 being feasible Covariant FunctorStr of b2,b1 holds
( b3 is bijective & b4 = b3 " implies for b5, b6 being object of b1 holds
( <^b5,b6^> <> {} implies for b7 being Morphism of b5,b6
for b8 being Morphism of (b3 . b5),(b3 . b6) holds
( b3 . b7 = b8 iff b4 . b8 = b7 ) ) )
proof end;

theorem Th3: :: YELLOW20:3
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being feasible Contravariant FunctorStr of b1,b2
for b4 being feasible Contravariant FunctorStr of b2,b1 holds
( b3 is bijective & b4 = b3 " implies for b5, b6 being object of b1 holds
( <^b5,b6^> <> {} implies for b7 being Morphism of b5,b6
for b8 being Morphism of (b3 . b6),(b3 . b5) holds
( b3 . b7 = b8 iff b4 . b8 = b7 ) ) )
proof end;

theorem Th4: :: YELLOW20:4
for b1, b2 being category
for b3 being Functor of b1,b2 holds
( b3 is bijective implies for b4 being Functor of b2,b1 holds
( b3 * b4 = id b2 implies FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " ) )
proof end;

theorem Th5: :: YELLOW20:5
for b1, b2 being category
for b3 being Functor of b1,b2 holds
( b3 is bijective implies for b4 being Functor of b2,b1 holds
( b4 * b3 = id b1 implies FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " ) )
proof end;

theorem Th6: :: YELLOW20:6
for b1, b2 being category
for b3 being covariant Functor of b1,b2 holds
( b3 is bijective implies for b4 being covariant Functor of b2,b1 holds
( ( for b5 being object of b2 holds b3 . (b4 . b5) = b5 ) & ( for b5, b6 being object of b2 holds
( <^b5,b6^> <> {} implies for b7 being Morphism of b5,b6 holds b3 . (b4 . b7) = b7 ) ) implies FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " ) )
proof end;

theorem Th7: :: YELLOW20:7
for b1, b2 being category
for b3 being contravariant Functor of b1,b2 holds
( b3 is bijective implies for b4 being contravariant Functor of b2,b1 holds
( ( for b5 being object of b2 holds b3 . (b4 . b5) = b5 ) & ( for b5, b6 being object of b2 holds
( <^b5,b6^> <> {} implies for b7 being Morphism of b5,b6 holds b3 . (b4 . b7) = b7 ) ) implies FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " ) )
proof end;

theorem Th8: :: YELLOW20:8
for b1, b2 being category
for b3 being covariant Functor of b1,b2 holds
( b3 is bijective implies for b4 being covariant Functor of b2,b1 holds
( ( for b5 being object of b1 holds b4 . (b3 . b5) = b5 ) & ( for b5, b6 being object of b1 holds
( <^b5,b6^> <> {} implies for b7 being Morphism of b5,b6 holds b4 . (b3 . b7) = b7 ) ) implies FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " ) )
proof end;

theorem Th9: :: YELLOW20:9
for b1, b2 being category
for b3 being contravariant Functor of b1,b2 holds
( b3 is bijective implies for b4 being contravariant Functor of b2,b1 holds
( ( for b5 being object of b1 holds b4 . (b3 . b5) = b5 ) & ( for b5, b6 being object of b1 holds
( <^b5,b6^> <> {} implies for b7 being Morphism of b5,b6 holds b4 . (b3 . b7) = b7 ) ) implies FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " ) )
proof end;

definition
let c1, c2 be AltCatStr ;
pred c1,c2 have_the_same_composition means :Def1: :: YELLOW20:def 1
for b1, b2, b3 being set holds the Comp of a1 . [b1,b2,b3] tolerates the Comp of a2 . [b1,b2,b3];
symmetry
for b1, b2 being AltCatStr holds
( ( for b3, b4, b5 being set holds the Comp of b1 . [b3,b4,b5] tolerates the Comp of b2 . [b3,b4,b5] ) implies for b3, b4, b5 being set holds the Comp of b2 . [b3,b4,b5] tolerates the Comp of b1 . [b3,b4,b5] )
;
end;

:: deftheorem Def1 defines have_the_same_composition YELLOW20:def 1 :
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition iff for b3, b4, b5 being set holds the Comp of b1 . [b3,b4,b5] tolerates the Comp of b2 . [b3,b4,b5] );

theorem Th10: :: YELLOW20:10
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition iff for b3, b4, b5, b6 being set holds
( b6 in dom (the Comp of b1 . [b3,b4,b5]) & b6 in dom (the Comp of b2 . [b3,b4,b5]) implies (the Comp of b1 . [b3,b4,b5]) . b6 = (the Comp of b2 . [b3,b4,b5]) . b6 ) )
proof end;

theorem Th11: :: YELLOW20:11
for b1, b2 being non empty transitive AltCatStr holds
( b1,b2 have_the_same_composition iff for b3, b4, b5 being object of b1 holds
( <^b3,b4^> <> {} & <^b4,b5^> <> {} implies for b6, b7, b8 being object of b2 holds
( <^b6,b7^> <> {} & <^b7,b8^> <> {} & b6 = b3 & b7 = b4 & b8 = b5 implies for b9 being Morphism of b3,b4
for b10 being Morphism of b6,b7 holds
( b10 = b9 implies for b11 being Morphism of b4,b5
for b12 being Morphism of b7,b8 holds
( b12 = b11 implies b11 * b9 = b12 * b10 ) ) ) ) )
proof end;

theorem Th12: :: YELLOW20:12
for b1, b2 being semi-functional para-functional category holds b1,b2 have_the_same_composition
proof end;

definition
let c1, c2 be Function;
func Intersect c1,c2 -> Function means :Def2: :: YELLOW20:def 2
( dom a3 = (dom a1) /\ (dom a2) & ( for b1 being set holds
( b1 in (dom a1) /\ (dom a2) implies a3 . b1 = (a1 . b1) /\ (a2 . b1) ) ) );
existence
ex b1 being Function st
( dom b1 = (dom c1) /\ (dom c2) & ( for b2 being set holds
( b2 in (dom c1) /\ (dom c2) implies b1 . b2 = (c1 . b2) /\ (c2 . b2) ) ) )
proof end;
uniqueness
for b1, b2 being Function holds
( dom b1 = (dom c1) /\ (dom c2) & ( for b3 being set holds
( b3 in (dom c1) /\ (dom c2) implies b1 . b3 = (c1 . b3) /\ (c2 . b3) ) ) & dom b2 = (dom c1) /\ (dom c2) & ( for b3 being set holds
( b3 in (dom c1) /\ (dom c2) implies b2 . b3 = (c1 . b3) /\ (c2 . b3) ) ) implies b1 = b2 )
proof end;
commutativity
for b1, b2, b3 being Function holds
( dom b1 = (dom b2) /\ (dom b3) & ( for b4 being set holds
( b4 in (dom b2) /\ (dom b3) implies b1 . b4 = (b2 . b4) /\ (b3 . b4) ) ) implies ( dom b1 = (dom b3) /\ (dom b2) & ( for b4 being set holds
( b4 in (dom b3) /\ (dom b2) implies b1 . b4 = (b3 . b4) /\ (b2 . b4) ) ) ) )
;
end;

:: deftheorem Def2 defines Intersect YELLOW20:def 2 :
for b1, b2, b3 being Function holds
( b3 = Intersect b1,b2 iff ( dom b3 = (dom b1) /\ (dom b2) & ( for b4 being set holds
( b4 in (dom b1) /\ (dom b2) implies b3 . b4 = (b1 . b4) /\ (b2 . b4) ) ) ) );

theorem Th13: :: YELLOW20:13
for b1 being set
for b2, b3 being ManySortedSet of b1 holds Intersect b2,b3 = b2 /\ b3
proof end;

theorem Th14: :: YELLOW20:14
for b1, b2 being set
for b3 being ManySortedSet of b1
for b4 being ManySortedSet of b2 holds
Intersect b3,b4 is ManySortedSet of b1 /\ b2
proof end;

theorem Th15: :: YELLOW20:15
for b1, b2 being set
for b3 being ManySortedSet of b1
for b4 being Function
for b5 being ManySortedSet of b2 holds
( b5 = Intersect b3,b4 implies b5 cc= b3 )
proof end;

theorem Th16: :: YELLOW20:16
for b1, b2, b3, b4 being set
for b5 being Function of b1,b2
for b6 being Function of b3,b4 holds
( b5 tolerates b6 implies b5 /\ b6 is Function of b1 /\ b3,b2 /\ b4 )
proof end;

theorem Th17: :: YELLOW20:17
for b1, b2 being set
for b3, b4 being ManySortedSet of b1
for b5, b6 being ManySortedSet of b2
for b7, b8 being ManySortedSet of b1 /\ b2 holds
( b7 = Intersect b3,b5 & b8 = Intersect b4,b6 implies for b9 being ManySortedFunction of b3,b4
for b10 being ManySortedFunction of b5,b6 holds
( ( for b11 being set holds
( b11 in dom b9 & b11 in dom b10 implies b9 . b11 tolerates b10 . b11 ) ) implies Intersect b9,b10 is ManySortedFunction of b7,b8 ) )
proof end;

theorem Th18: :: YELLOW20:18
for b1, b2 being set
for b3 being ManySortedSet of [:b1,b1:]
for b4 being ManySortedSet of [:b2,b2:] holds
ex b5 being ManySortedSet of [:(b1 /\ b2),(b1 /\ b2):] st
( b5 = Intersect b3,b4 & Intersect {|b3|},{|b4|} = {|b5|} )
proof end;

theorem Th19: :: YELLOW20:19
for b1, b2 being set
for b3, b4 being ManySortedSet of [:b1,b1:]
for b5, b6 being ManySortedSet of [:b2,b2:] holds
ex b7, b8 being ManySortedSet of [:(b1 /\ b2),(b1 /\ b2):] st
( b7 = Intersect b3,b5 & b8 = Intersect b4,b6 & Intersect {|b3,b4|},{|b5,b6|} = {|b7,b8|} )
proof end;

definition
let c1, c2 be AltCatStr ;
assume E16: c1,c2 have_the_same_composition ;
func Intersect c1,c2 -> strict AltCatStr means :Def3: :: YELLOW20:def 3
( the carrier of a3 = the carrier of a1 /\ the carrier of a2 & the Arrows of a3 = Intersect the Arrows of a1,the Arrows of a2 & the Comp of a3 = Intersect the Comp of a1,the Comp of a2 );
existence
ex b1 being strict AltCatStr st
( the carrier of b1 = the carrier of c1 /\ the carrier of c2 & the Arrows of b1 = Intersect the Arrows of c1,the Arrows of c2 & the Comp of b1 = Intersect the Comp of c1,the Comp of c2 )
proof end;
uniqueness
for b1, b2 being strict AltCatStr holds
( the carrier of b1 = the carrier of c1 /\ the carrier of c2 & the Arrows of b1 = Intersect the Arrows of c1,the Arrows of c2 & the Comp of b1 = Intersect the Comp of c1,the Comp of c2 & the carrier of b2 = the carrier of c1 /\ the carrier of c2 & the Arrows of b2 = Intersect the Arrows of c1,the Arrows of c2 & the Comp of b2 = Intersect the Comp of c1,the Comp of c2 implies b1 = b2 )
;
end;

:: deftheorem Def3 defines Intersect YELLOW20:def 3 :
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition implies for b3 being strict AltCatStr holds
( b3 = Intersect b1,b2 iff ( the carrier of b3 = the carrier of b1 /\ the carrier of b2 & the Arrows of b3 = Intersect the Arrows of b1,the Arrows of b2 & the Comp of b3 = Intersect the Comp of b1,the Comp of b2 ) ) );

theorem Th20: :: YELLOW20:20
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition implies Intersect b1,b2 = Intersect b2,b1 )
proof end;

theorem Th21: :: YELLOW20:21
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition implies Intersect b1,b2 is SubCatStr of b1 )
proof end;

theorem Th22: :: YELLOW20:22
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition implies for b3, b4 being object of b1
for b5, b6 being object of b2
for b7, b8 being object of (Intersect b1,b2) holds
( b7 = b3 & b7 = b5 & b8 = b4 & b8 = b6 implies <^b7,b8^> = <^b3,b4^> /\ <^b5,b6^> ) )
proof end;

theorem Th23: :: YELLOW20:23
for b1, b2 being transitive AltCatStr holds
( b1,b2 have_the_same_composition implies Intersect b1,b2 is transitive )
proof end;

theorem Th24: :: YELLOW20:24
for b1, b2 being AltCatStr holds
( b1,b2 have_the_same_composition implies for b3, b4 being object of b1
for b5, b6 being object of b2
for b7, b8 being object of (Intersect b1,b2) holds
( b7 = b3 & b7 = b5 & b8 = b4 & b8 = b6 & <^b3,b4^> <> {} & <^b5,b6^> <> {} implies for b9 being Morphism of b3,b4
for b10 being Morphism of b5,b6 holds
( b9 = b10 implies b9 in <^b7,b8^> ) ) )
proof end;

theorem Th25: :: YELLOW20:25
for b1, b2 being non empty with_units AltCatStr holds
( b1,b2 have_the_same_composition implies for b3 being object of b1
for b4 being object of b2
for b5 being object of (Intersect b1,b2) holds
( b5 = b3 & b5 = b4 & idm b3 = idm b4 implies idm b3 in <^b5,b5^> ) ) by Th24;

theorem Th26: :: YELLOW20:26
for b1, b2 being category holds
( b1,b2 have_the_same_composition & not Intersect b1,b2 is empty & ( for b3 being object of b1
for b4 being object of b2 holds
( b3 = b4 implies idm b3 = idm b4 ) ) implies Intersect b1,b2 is subcategory of b1 )
proof end;

scheme :: YELLOW20:sch 1
s1{ F1() -> category, F2() -> non empty subcategory of F1(), F3() -> non empty subcategory of F1(), P1[ set ], P2[ set , set , set ] } :
AltCatStr(# the carrier of F2(),the Arrows of F2(),the Comp of F2() #) = AltCatStr(# the carrier of F3(),the Arrows of F3(),the Comp of F3() #)
provided
E21: for b1 being object of F1() holds
( b1 is object of F2() iff P1[b1] ) and E22: for b1, b2 being object of F1()
for b3, b4 being object of F2() holds
( b3 = b1 & b4 = b2 & <^b1,b2^> <> {} implies for b5 being Morphism of b1,b2 holds
( b5 in <^b3,b4^> iff P2[b1,b2,b5] ) ) and E23: for b1 being object of F1() holds
( b1 is object of F3() iff P1[b1] ) and E24: for b1, b2 being object of F1()
for b3, b4 being object of F3() holds
( b3 = b1 & b4 = b2 & <^b1,b2^> <> {} implies for b5 being Morphism of b1,b2 holds
( b5 in <^b3,b4^> iff P2[b1,b2,b5] ) )
proof end;

theorem Th27: :: YELLOW20:27
for b1 being non empty AltCatStr
for b2 being non empty SubCatStr of b1 holds
( b2 is full iff for b3, b4 being object of b1
for b5, b6 being object of b2 holds
( b5 = b3 & b6 = b4 implies <^b5,b6^> = <^b3,b4^> ) )
proof end;

scheme :: YELLOW20:sch 2
s2{ F1() -> category, P1[ set ] } :
ex b1 being non empty strict full subcategory of F1() st
for b2 being object of F1() holds
( b2 is object of b1 iff P1[b2] )
provided
E22: ex b1 being object of F1() st P1[b1]
proof end;

scheme :: YELLOW20:sch 3
s3{ F1() -> category, F2() -> non empty full subcategory of F1(), F3() -> non empty full subcategory of F1(), P1[ set ] } :
AltCatStr(# the carrier of F2(),the Arrows of F2(),the Comp of F2() #) = AltCatStr(# the carrier of F3(),the Arrows of F3(),the Comp of F3() #)
provided
E22: for b1 being object of F1() holds
( b1 is object of F2() iff P1[b1] ) and E23: for b1 being object of F1() holds
( b1 is object of F3() iff P1[b1] )
proof end;

registration
let c1 be Function-yielding Function;
let c2, c3 be set ;
cluster a1 . a2,a3 -> Relation-like Function-like ;
coherence
( c1 . c2,c3 is Relation-like & c1 . c2,c3 is Function-like )
;
end;

theorem Th28: :: YELLOW20:28
for b1 being category
for b2 being non empty subcategory of b1
for b3, b4 being object of b2 holds
( <^b3,b4^> <> {} implies for b5 being Morphism of b3,b4 holds (incl b2) . b5 = b5 )
proof end;

registration
let c1 be category;
let c2 be non empty subcategory of c1;
cluster incl a2 -> id-preserving comp-preserving ;
coherence
( incl c2 is id-preserving & incl c2 is comp-preserving )
proof end;
end;

registration
let c1 be category;
let c2 be non empty subcategory of c1;
cluster incl a2 -> Covariant id-preserving comp-preserving ;
coherence
incl c2 is Covariant
;
end;

definition
let c1 be category;
let c2 be non empty subcategory of c1;
redefine func incl as incl c2 -> strict covariant Functor of a2,a1;
coherence
incl c2 is strict covariant Functor of c2,c1
by FUNCTOR0:def 26, FUNCTOR0:def 27;
end;

definition
let c1, c2 be category;
let c3 be non empty subcategory of c1;
let c4 be covariant Functor of c1,c2;
redefine func | as c4 | c3 -> strict covariant Functor of a3,a2;
coherence
c4 | c3 is strict covariant Functor of c3,c2
proof end;
end;

definition
let c1, c2 be category;
let c3 be non empty subcategory of c1;
let c4 be contravariant Functor of c1,c2;
redefine func | as c4 | c3 -> strict contravariant Functor of a3,a2;
coherence
c4 | c3 is strict contravariant Functor of c3,c2
proof end;
end;

theorem Th29: :: YELLOW20:29
for b1, b2 being category
for b3 being non empty subcategory of b1
for b4 being FunctorStr of b1,b2
for b5 being object of b1
for b6 being object of b3 holds
( b6 = b5 implies (b4 | b3) . b6 = b4 . b5 )
proof end;

theorem Th30: :: YELLOW20:30
for b1, b2 being category
for b3 being non empty subcategory of b1
for b4 being covariant Functor of b1,b2
for b5, b6 being object of b1
for b7, b8 being object of b3 holds
( b7 = b5 & b8 = b6 & <^b7,b8^> <> {} implies for b9 being Morphism of b5,b6
for b10 being Morphism of b7,b8 holds
( b10 = b9 implies (b4 | b3) . b10 = b4 . b9 ) )
proof end;

theorem Th31: :: YELLOW20:31
for b1, b2 being category
for b3 being non empty subcategory of b1
for b4 being contravariant Functor of b1,b2
for b5, b6 being object of b1
for b7, b8 being object of b3 holds
( b7 = b5 & b8 = b6 & <^b7,b8^> <> {} implies for b9 being Morphism of b5,b6
for b10 being Morphism of b7,b8 holds
( b10 = b9 implies (b4 | b3) . b10 = b4 . b9 ) )
proof end;

theorem Th32: :: YELLOW20:32
for b1, b2 being non empty AltGraph
for b3 being BimapStr of b1,b2 holds
( b3 is Covariant & b3 is one-to-one implies for b4, b5 being object of b1 holds
( b3 . b4 = b3 . b5 implies b4 = b5 ) )
proof end;

theorem Th33: :: YELLOW20:33
for b1, b2 being non empty reflexive AltGraph
for b3 being feasible Covariant FunctorStr of b1,b2 holds
( b3 is faithful implies for b4, b5 being object of b1 holds
( <^b4,b5^> <> {} implies for b6, b7 being Morphism of b4,b5 holds
( b3 . b6 = b3 . b7 implies b6 = b7 ) ) )
proof end;

theorem Th34: :: YELLOW20:34
for b1, b2 being non empty AltGraph
for b3 being Covariant FunctorStr of b1,b2 holds
( b3 is surjective implies for b4, b5 being object of b2 holds
( <^b4,b5^> <> {} implies for b6 being Morphism of b4,b5 holds
ex b7, b8 being object of b1ex b9 being Morphism of b7,b8 st
( b4 = b3 . b7 & b5 = b3 . b8 & <^b7,b8^> <> {} & b6 = b3 . b9 ) ) )
proof end;

theorem Th35: :: YELLOW20:35
for b1, b2 being non empty AltGraph
for b3 being BimapStr of b1,b2 holds
( b3 is Contravariant & b3 is one-to-one implies for b4, b5 being object of b1 holds
( b3 . b4 = b3 . b5 implies b4 = b5 ) )
proof end;

theorem Th36: :: YELLOW20:36
for b1, b2 being non empty reflexive AltGraph
for b3 being feasible Contravariant FunctorStr of b1,b2 holds
( b3 is faithful implies for b4, b5 being object of b1 holds
( <^b4,b5^> <> {} implies for b6, b7 being Morphism of b4,b5 holds
( b3 . b6 = b3 . b7 implies b6 = b7 ) ) )
proof end;

theorem Th37: :: YELLOW20:37
for b1, b2 being non empty AltGraph
for b3 being Contravariant FunctorStr of b1,b2 holds
( b3 is surjective implies for b4, b5 being object of b2 holds
( <^b4,b5^> <> {} implies for b6 being Morphism of b4,b5 holds
ex b7, b8 being object of b1ex b9 being Morphism of b7,b8 st
( b5 = b3 . b7 & b4 = b3 . b8 & <^b7,b8^> <> {} & b6 = b3 . b9 ) ) )
proof end;

definition
let c1, c2 be category;
let c3 be FunctorStr of c1,c2;
let c4, c5 be category;
pred c4,c5 are_isomorphic_under c3 means :: YELLOW20:def 4
( a4 is subcategory of a1 & a5 is subcategory of a2 & ex b1 being covariant Functor of a4,a5 st
( b1 is bijective & ( for b2 being object of a4
for b3 being object of a1 holds
( b2 = b3 implies b1 . b2 = a3 . b3 ) ) & ( for b2, b3 being object of a4
for b4, b5 being object of a1 holds
( <^b2,b3^> <> {} & b2 = b4 & b3 = b5 implies for b6 being Morphism of b2,b3
for b7 being Morphism of b4,b5 holds
( b6 = b7 implies b1 . b6 = (Morph-Map a3,b4,b5) . b7 ) ) ) ) );
pred c4,c5 are_anti-isomorphic_under c3 means :: YELLOW20:def 5
( a4 is subcategory of a1 & a5 is subcategory of a2 & ex b1 being contravariant Functor of a4,a5 st
( b1 is bijective & ( for b2 being object of a4
for b3 being object of a1 holds
( b2 = b3 implies b1 . b2 = a3 . b3 ) ) & ( for b2, b3 being object of a4
for b4, b5 being object of a1 holds
( <^b2,b3^> <> {} & b2 = b4 & b3 = b5 implies for b6 being Morphism of b2,b3
for b7 being Morphism of b4,b5 holds
( b6 = b7 implies b1 . b6 = (Morph-Map a3,b4,b5) . b7 ) ) ) ) );
end;

:: deftheorem Def4 defines are_isomorphic_under YELLOW20:def 4 :
for b1, b2 being category
for b3 being FunctorStr of b1,b2
for b4, b5 being category holds
( b4,b5 are_isomorphic_under b3 iff ( b4 is subcategory of b1 & b5 is subcategory of b2 & ex b6 being covariant Functor of b4,b5 st
( b6 is bijective & ( for b7 being object of b4
for b8 being object of b1 holds
( b7 = b8 implies b6 . b7 = b3 . b8 ) ) & ( for b7, b8 being object of b4
for b9, b10 being object of b1 holds
( <^b7,b8^> <> {} & b7 = b9 & b8 = b10 implies for b11 being Morphism of b7,b8
for b12 being Morphism of b9,b10 holds
( b11 = b12 implies b6 . b11 = (Morph-Map b3,b9,b10) . b12 ) ) ) ) ) );

:: deftheorem Def5 defines are_anti-isomorphic_under YELLOW20:def 5 :
for b1, b2 being category
for b3 being FunctorStr of b1,b2
for b4, b5 being category holds
( b4,b5 are_anti-isomorphic_under b3 iff ( b4 is subcategory of b1 & b5 is subcategory of b2 & ex b6 being contravariant Functor of b4,b5 st
( b6 is bijective & ( for b7 being object of b4
for b8 being object of b1 holds
( b7 = b8 implies b6 . b7 = b3 . b8 ) ) & ( for b7, b8 being object of b4
for b9, b10 being object of b1 holds
( <^b7,b8^> <> {} & b7 = b9 & b8 = b10 implies for b11 being Morphism of b7,b8
for b12 being Morphism of b9,b10 holds
( b11 = b12 implies b6 . b11 = (Morph-Map b3,b9,b10) . b12 ) ) ) ) ) );

theorem Th38: :: YELLOW20:38
for b1, b2, b3, b4 being category
for b5 being FunctorStr of b1,b2 holds
( b3,b4 are_isomorphic_under b5 implies b3,b4 are_isomorphic )
proof end;

theorem Th39: :: YELLOW20:39
for b1, b2, b3, b4 being category
for b5 being FunctorStr of b1,b2 holds
( b3,b4 are_anti-isomorphic_under b5 implies b3,b4 are_anti-isomorphic )
proof end;

theorem Th40: :: YELLOW20:40
for b1, b2 being category
for b3 being covariant Functor of b1,b2 holds
( b1,b2 are_isomorphic_under b3 implies b3 is bijective )
proof end;

theorem Th41: :: YELLOW20:41
for b1, b2 being category
for b3 being contravariant Functor of b1,b2 holds
( b1,b2 are_anti-isomorphic_under b3 implies b3 is bijective )
proof end;

theorem Th42: :: YELLOW20:42
for b1, b2 being category
for b3 being covariant Functor of b1,b2 holds
( b3 is bijective implies b1,b2 are_isomorphic_under b3 )
proof end;

theorem Th43: :: YELLOW20:43
for b1, b2 being category
for b3 being contravariant Functor of b1,b2 holds
( b3 is bijective implies b1,b2 are_anti-isomorphic_under b3 )
proof end;

scheme :: YELLOW20:sch 4
s4{ F1() -> non empty category, F2() -> non empty category, F3() -> covariant Functor of F1(),F2(), F4() -> non empty subcategory of F1(), F5() -> non empty subcategory of F2() } :
F4(),F5() are_isomorphic_under F3()
provided
E32: F3() is bijective and E33: for b1 being object of F1() holds
( b1 is object of F4() iff F3() . b1 is object of F5() ) and E34: for b1, b2 being object of F1() holds
( <^b1,b2^> <> {} implies for b3, b4 being object of F4() holds
( b3 = b1 & b4 = b2 implies for b5, b6 being object of F5() holds
( b5 = F3() . b1 & b6 = F3() . b2 implies for b7 being Morphism of b1,b2 holds
( b7 in <^b3,b4^> iff F3() . b7 in <^b5,b6^> ) ) ) )
proof end;

scheme :: YELLOW20:sch 5
s5{ F1() -> non empty category, F2() -> non empty category, F3() -> contravariant Functor of F1(),F2(), F4() -> non empty subcategory of F1(), F5() -> non empty subcategory of F2() } :
F4(),F5() are_anti-isomorphic_under F3()
provided
E32: F3() is bijective and E33: for b1 being object of F1() holds
( b1 is object of F4() iff F3() . b1 is object of F5() ) and E34: for b1, b2 being object of F1() holds
( <^b1,b2^> <> {} implies for b3, b4 being object of F4() holds
( b3 = b1 & b4 = b2 implies for b5, b6 being object of F5() holds
( b5 = F3() . b1 & b6 = F3() . b2 implies for b7 being Morphism of b1,b2 holds
( b7 in <^b3,b4^> iff F3() . b7 in <^b6,b5^> ) ) ) )
proof end;

theorem Th44: :: YELLOW20:44
for b1 being category
for b2 being non empty subcategory of b1 holds b2,b2 are_isomorphic_under id b1
proof end;

theorem Th45: :: YELLOW20:45
for b1, b2 being Function holds
( b1 c= b2 implies ~ b1 c= ~ b2 )
proof end;

theorem Th46: :: YELLOW20:46
for b1, b2 being Function holds
( dom b1 is Relation & ~ b1 c= ~ b2 implies b1 c= b2 )
proof end;

theorem Th47: :: YELLOW20:47
for b1, b2 being set
for b3 being ManySortedSet of [:b1,b1:]
for b4 being ManySortedSet of [:b2,b2:] holds
( b3 cc= b4 implies ~ b3 cc= ~ b4 )
proof end;

theorem Th48: :: YELLOW20:48
for b1 being non empty transitive AltCatStr
for b2 being non empty transitive SubCatStr of b1 holds
b2 opp is SubCatStr of b1 opp
proof end;

theorem Th49: :: YELLOW20:49
for b1 being category
for b2 being non empty subcategory of b1 holds
b2 opp is subcategory of b1 opp
proof end;

theorem Th50: :: YELLOW20:50
for b1 being category
for b2 being non empty subcategory of b1 holds b2,b2 opp are_anti-isomorphic_under dualizing-func b1,(b1 opp )
proof end;

theorem Th51: :: YELLOW20:51
for b1, b2 being category
for b3 being covariant Functor of b1,b2 holds
( b3 is bijective implies for b4 being non empty subcategory of b1
for b5 being non empty subcategory of b2 holds
( b4,b5 are_isomorphic_under b3 implies b5,b4 are_isomorphic_under b3 " ) )
proof end;

theorem Th52: :: YELLOW20:52
for b1, b2 being category
for b3 being contravariant Functor of b1,b2 holds
( b3 is bijective implies for b4 being non empty subcategory of b1
for b5 being non empty subcategory of b2 holds
( b4,b5 are_anti-isomorphic_under b3 implies b5,b4 are_anti-isomorphic_under b3 " ) )
proof end;

theorem Th53: :: YELLOW20:53
for b1, b2, b3 being category
for b4 being covariant Functor of b1,b2
for b5 being covariant Functor of b2,b3
for b6 being non empty subcategory of b1
for b7 being non empty subcategory of b2
for b8 being non empty subcategory of b3 holds
( b6,b7 are_isomorphic_under b4 & b7,b8 are_isomorphic_under b5 implies b6,b8 are_isomorphic_under b5 * b4 )
proof end;

theorem Th54: :: YELLOW20:54
for b1, b2, b3 being category
for b4 being contravariant Functor of b1,b2
for b5 being covariant Functor of b2,b3
for b6 being non empty subcategory of b1
for b7 being non empty subcategory of b2
for b8 being non empty subcategory of b3 holds
( b6,b7 are_anti-isomorphic_under b4 & b7,b8 are_isomorphic_under b5 implies b6,b8 are_anti-isomorphic_under b5 * b4 )
proof end;

theorem Th55: :: YELLOW20:55
for b1, b2, b3 being category
for b4 being covariant Functor of b1,b2
for b5 being contravariant Functor of b2,b3
for b6 being non empty subcategory of b1
for b7 being non empty subcategory of b2
for b8 being non empty subcategory of b3 holds
( b6,b7 are_isomorphic_under b4 & b7,b8 are_anti-isomorphic_under b5 implies b6,b8 are_anti-isomorphic_under b5 * b4 )
proof end;

theorem Th56: :: YELLOW20:56
for b1, b2, b3 being category
for b4 being contravariant Functor of b1,b2
for b5 being contravariant Functor of b2,b3
for b6 being non empty subcategory of b1
for b7 being non empty subcategory of b2
for b8 being non empty subcategory of b3 holds
( b6,b7 are_anti-isomorphic_under b4 & b7,b8 are_anti-isomorphic_under b5 implies b6,b8 are_isomorphic_under b5 * b4 )
proof end;