Article YELLOW20, MML version 4.99.1005

:: YELLOW20:th 1
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being reflexive feasible FunctorStr over b1,b2
   st b3 is coreflexive(b1, b2) & b3 is bijective(b1, b2)
for b4 being Element of the carrier of b1
for b5 being Element of the carrier of b2 holds
      b3 . b4 = b5
   iff
      b3 " . b5 = b4;

:: YELLOW20:th 2
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being feasible Covariant FunctorStr over b1,b2
for b4 being feasible Covariant FunctorStr over b2,b1
   st b3 is bijective(b1, b2) & b4 = b3 "
for b5, b6 being Element of the carrier of b1
   st <^b5,b6^> <> {}
for b7 being Element of <^b5,b6^>
for b8 being Element of <^b3 . b5,b3 . b6^> holds
      b3 . b7 = b8
   iff
      b4 . b8 = b7;

:: YELLOW20:th 3
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being feasible Contravariant FunctorStr over b1,b2
for b4 being feasible Contravariant FunctorStr over b2,b1
   st b3 is bijective(b1, b2) & b4 = b3 "
for b5, b6 being Element of the carrier of b1
   st <^b5,b6^> <> {}
for b7 being Element of <^b5,b6^>
for b8 being Element of <^b3 . b6,b3 . b5^> holds
      b3 . b7 = b8
   iff
      b4 . b8 = b7;

:: YELLOW20:th 4
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being Functor of b2,b1
      st b3 * b4 = id b2
   holds FunctorStr(#the ObjectMap of b4,the MorphMap of b4#) = b3 ";

:: YELLOW20:th 5
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being Functor of b2,b1
      st b4 * b3 = id b1
   holds FunctorStr(#the ObjectMap of b4,the MorphMap of b4#) = b3 ";

:: YELLOW20:th 6
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being covariant Functor of b2,b1
      st (for b5 being Element of the carrier of b2 holds
            b3 . (b4 . b5) = b5) &
         (for b5, b6 being Element of the carrier of b2
            st <^b5,b6^> <> {}
         for b7 being Element of <^b5,b6^> holds
            b3 . (b4 . b7) = b7)
   holds FunctorStr(#the ObjectMap of b4,the MorphMap of b4#) = b3 ";

:: YELLOW20:th 7
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being contravariant Functor of b2,b1
      st (for b5 being Element of the carrier of b2 holds
            b3 . (b4 . b5) = b5) &
         (for b5, b6 being Element of the carrier of b2
            st <^b5,b6^> <> {}
         for b7 being Element of <^b5,b6^> holds
            b3 . (b4 . b7) = b7)
   holds FunctorStr(#the ObjectMap of b4,the MorphMap of b4#) = b3 ";

:: YELLOW20:th 8
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being covariant Functor of b2,b1
      st (for b5 being Element of the carrier of b1 holds
            b4 . (b3 . b5) = b5) &
         (for b5, b6 being Element of the carrier of b1
            st <^b5,b6^> <> {}
         for b7 being Element of <^b5,b6^> holds
            b4 . (b3 . b7) = b7)
   holds FunctorStr(#the ObjectMap of b4,the MorphMap of b4#) = b3 ";

:: YELLOW20:th 9
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being contravariant Functor of b2,b1
      st (for b5 being Element of the carrier of b1 holds
            b4 . (b3 . b5) = b5) &
         (for b5, b6 being Element of the carrier of b1
            st <^b5,b6^> <> {}
         for b7 being Element of <^b5,b6^> holds
            b4 . (b3 . b7) = b7)
   holds FunctorStr(#the ObjectMap of b4,the MorphMap of b4#) = b3 ";

:: YELLOW20:prednot 1 => YELLOW20:pred 1
definition
  let a1, a2 be AltCatStr;
  pred A1,A2 have_the_same_composition means
    for b1, b2, b3 being set holds
    (the Comp of a1) . [b1,b2,b3] tolerates (the Comp of a2) . [b1,b2,b3];
  symmetry;
::  for a1, a2 being AltCatStr
::        st a1,a2 have_the_same_composition
::     holds a2,a1 have_the_same_composition;
end;

:: YELLOW20:dfs 1
definiens
  let a1, a2 be AltCatStr;
To prove
     a1,a2 have_the_same_composition
it is sufficient to prove
  thus for b1, b2, b3 being set holds
    (the Comp of a1) . [b1,b2,b3] tolerates (the Comp of a2) . [b1,b2,b3];

:: YELLOW20:def 1
theorem
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];

:: YELLOW20:th 10
theorem
for b1, b2 being AltCatStr holds
   b1,b2 have_the_same_composition
iff
   for b3, b4, b5, b6 being set
         st b6 in proj1 ((the Comp of b1) . [b3,b4,b5]) &
            b6 in proj1 ((the Comp of b2) . [b3,b4,b5])
      holds ((the Comp of b1) . [b3,b4,b5]) . b6 = ((the Comp of b2) . [b3,b4,b5]) . b6;

:: YELLOW20:th 11
theorem
for b1, b2 being non empty transitive AltCatStr holds
   b1,b2 have_the_same_composition
iff
   for b3, b4, b5 being Element of the carrier of b1
      st <^b3,b4^> <> {} & <^b4,b5^> <> {}
   for b6, b7, b8 being Element of the carrier of b2
      st <^b6,b7^> <> {} & <^b7,b8^> <> {} & b6 = b3 & b7 = b4 & b8 = b5
   for b9 being Element of <^b3,b4^>
   for b10 being Element of <^b6,b7^>
      st b10 = b9
   for b11 being Element of <^b4,b5^>
   for b12 being Element of <^b7,b8^>
         st b12 = b11
      holds b11 * b9 = b12 * b10;

:: YELLOW20:th 12
theorem
for b1, b2 being non empty transitive semi-functional associative with_units para-functional AltCatStr holds
b1,b2 have_the_same_composition;

:: YELLOW20:funcnot 1 => YELLOW20:func 1
definition
  let a1, a2 be Relation-like Function-like set;
  func Intersect(A1,A2) -> Relation-like Function-like set means
    proj1 it = (proj1 a1) /\ proj1 a2 &
     (for b1 being set
           st b1 in (proj1 a1) /\ proj1 a2
        holds it . b1 = (a1 . b1) /\ (a2 . b1));
  commutativity;
::  for a1, a2 being Relation-like Function-like set holds
::  Intersect(a1,a2) = Intersect(a2,a1);
end;

:: YELLOW20:def 2
theorem
for b1, b2, b3 being Relation-like Function-like set holds
   b3 = Intersect(b1,b2)
iff
   proj1 b3 = (proj1 b1) /\ proj1 b2 &
    (for b4 being set
          st b4 in (proj1 b1) /\ proj1 b2
       holds b3 . b4 = (b1 . b4) /\ (b2 . b4));

:: YELLOW20:th 13
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
Intersect(b2,b3) = b2 /\ b3;

:: YELLOW20:th 14
theorem
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;

:: YELLOW20:th 15
theorem
for b1, b2 being set
for b3 being ManySortedSet of b1
for b4 being Relation-like Function-like set
for b5 being ManySortedSet of b2
      st b5 = Intersect(b3,b4)
   holds b5 cc= b3;

:: YELLOW20:th 16
theorem
for b1, b2, b3, b4 being set
for b5 being Function-like quasi_total Relation of b1,b2
for b6 being Function-like quasi_total Relation of b3,b4
      st b5 tolerates b6
   holds b5 /\ b6 is Function-like quasi_total Relation of b1 /\ b3,b2 /\ b4;

:: YELLOW20:th 17
theorem
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
   st b7 = Intersect(b3,b5) & b8 = Intersect(b4,b6)
for b9 being ManySortedFunction of b3,b4
for b10 being ManySortedFunction of b5,b6
      st for b11 being set
              st b11 in proj1 b9 & b11 in proj1 b10
           holds b9 . b11 tolerates b10 . b11
   holds Intersect(b9,b10) is ManySortedFunction of b7,b8;

:: YELLOW20:th 18
theorem
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|};

:: YELLOW20:th 19
theorem
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|};

:: YELLOW20:funcnot 2 => YELLOW20:func 2
definition
  let a1, a2 be AltCatStr;
  assume a1,a2 have_the_same_composition;
  func Intersect(A1,A2) -> strict AltCatStr means
    the carrier of it = (the carrier of a1) /\ the carrier of a2 &
     the Arrows of it = Intersect(the Arrows of a1,the Arrows of a2) &
     the Comp of it = Intersect(the Comp of a1,the Comp of a2);
end;

:: YELLOW20:def 3
theorem
for b1, b2 being AltCatStr
   st b1,b2 have_the_same_composition
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);

:: YELLOW20:th 20
theorem
for b1, b2 being AltCatStr
      st b1,b2 have_the_same_composition
   holds Intersect(b1,b2) = Intersect(b2,b1);

:: YELLOW20:th 21
theorem
for b1, b2 being AltCatStr
      st b1,b2 have_the_same_composition
   holds Intersect(b1,b2) is SubCatStr of b1;

:: YELLOW20:th 22
theorem
for b1, b2 being AltCatStr
   st b1,b2 have_the_same_composition
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
for b7, b8 being Element of the carrier of Intersect(b1,b2)
      st b7 = b3 & b7 = b5 & b8 = b4 & b8 = b6
   holds <^b7,b8^> = <^b3,b4^> /\ <^b5,b6^>;

:: YELLOW20:th 23
theorem
for b1, b2 being transitive AltCatStr
      st b1,b2 have_the_same_composition
   holds Intersect(b1,b2) is transitive;

:: YELLOW20:th 24
theorem
for b1, b2 being AltCatStr
   st b1,b2 have_the_same_composition
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
for b7, b8 being Element of the carrier of Intersect(b1,b2)
   st b7 = b3 & b7 = b5 & b8 = b4 & b8 = b6 & <^b3,b4^> <> {} & <^b5,b6^> <> {}
for b9 being Element of <^b3,b4^>
for b10 being Element of <^b5,b6^>
      st b9 = b10
   holds b9 in <^b7,b8^>;

:: YELLOW20:th 25
theorem
for b1, b2 being non empty with_units AltCatStr
   st b1,b2 have_the_same_composition
for b3 being Element of the carrier of b1
for b4 being Element of the carrier of b2
for b5 being Element of the carrier of Intersect(b1,b2)
      st b5 = b3 & b5 = b4 & idm b3 = idm b4
   holds idm b3 in <^b5,b5^>;

:: YELLOW20:th 26
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
      st b1,b2 have_the_same_composition &
         Intersect(b1,b2) is not empty &
         (for b3 being Element of the carrier of b1
         for b4 being Element of the carrier of b2
               st b3 = b4
            holds idm b3 = idm b4)
   holds Intersect(b1,b2) is transitive id-inheriting SubCatStr of b1;

:: YELLOW20:sch 1
scheme YELLOW20:sch 1
{F1 -> non empty transitive associative with_units AltCatStr,
  F2 -> non empty transitive id-inheriting SubCatStr of F1(),
  F3 -> non empty transitive id-inheriting SubCatStr of F1()}:
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
   for b1 being Element of the carrier of F1() holds
         b1 is Element of the carrier of F2()
      iff
         P1[b1]
and
   for b1, b2 being Element of the carrier of F1()
   for b3, b4 being Element of the carrier of F2()
      st b3 = b1 & b4 = b2 & <^b1,b2^> <> {}
   for b5 being Element of <^b1,b2^> holds
         b5 in <^b3,b4^>
      iff
         P2[b1, b2, b5]
and
   for b1 being Element of the carrier of F1() holds
         b1 is Element of the carrier of F3()
      iff
         P1[b1]
and
   for b1, b2 being Element of the carrier of F1()
   for b3, b4 being Element of the carrier of F3()
      st b3 = b1 & b4 = b2 & <^b1,b2^> <> {}
   for b5 being Element of <^b1,b2^> holds
         b5 in <^b3,b4^>
      iff
         P2[b1, b2, b5];


:: YELLOW20:th 27
theorem
for b1 being non empty AltCatStr
for b2 being non empty SubCatStr of b1 holds
      b2 is full(b1)
   iff
      for b3, b4 being Element of the carrier of b1
      for b5, b6 being Element of the carrier of b2
            st b5 = b3 & b6 = b4
         holds <^b5,b6^> = <^b3,b4^>;

:: YELLOW20:sch 2
scheme YELLOW20:sch 2
{F1 -> non empty transitive associative with_units AltCatStr}:
ex b1 being non empty transitive strict full id-inheriting SubCatStr of F1() st
   for b2 being Element of the carrier of F1() holds
         b2 is Element of the carrier of b1
      iff
         P1[b2]
provided
   ex b1 being Element of the carrier of F1() st
      P1[b1];


:: YELLOW20:sch 3
scheme YELLOW20:sch 3
{F1 -> non empty transitive associative with_units AltCatStr,
  F2 -> non empty transitive full id-inheriting SubCatStr of F1(),
  F3 -> non empty transitive full id-inheriting SubCatStr of F1()}:
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
   for b1 being Element of the carrier of F1() holds
         b1 is Element of the carrier of F2()
      iff
         P1[b1]
and
   for b1 being Element of the carrier of F1() holds
         b1 is Element of the carrier of F3()
      iff
         P1[b1];


:: YELLOW20:funcreg 1
registration
  let a1 be Relation-like Function-like Function-yielding set;
  let a2, a3 be set;
  cluster a1 .(a2,a3) -> Relation-like Function-like;
end;

:: YELLOW20:th 28
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive id-inheriting SubCatStr of b1
for b3, b4 being Element of the carrier of b2
   st <^b3,b4^> <> {}
for b5 being Element of <^b3,b4^> holds
   (incl b2) . b5 = b5;

:: YELLOW20:funcreg 2
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be non empty transitive id-inheriting SubCatStr of a1;
  cluster incl a2 -> strict id-preserving comp-preserving;
end;

:: YELLOW20:funcreg 3
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be non empty transitive id-inheriting SubCatStr of a1;
  cluster incl a2 -> strict Covariant;
end;

:: YELLOW20:funcnot 3 => YELLOW20:func 3
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be non empty transitive id-inheriting SubCatStr of a1;
  redefine func incl a2 -> strict covariant Functor of a2,a1;
end;

:: YELLOW20:funcnot 4 => YELLOW20:func 4
definition
  let a1, a2 be non empty transitive associative with_units AltCatStr;
  let a3 be non empty transitive id-inheriting SubCatStr of a1;
  let a4 be covariant Functor of a1,a2;
  redefine func a4 | a3 -> strict covariant Functor of a3,a2;
end;

:: YELLOW20:funcnot 5 => YELLOW20:func 5
definition
  let a1, a2 be non empty transitive associative with_units AltCatStr;
  let a3 be non empty transitive id-inheriting SubCatStr of a1;
  let a4 be contravariant Functor of a1,a2;
  redefine func a4 | a3 -> strict contravariant Functor of a3,a2;
end;

:: YELLOW20:th 29
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being non empty transitive id-inheriting SubCatStr of b1
for b4 being FunctorStr over b1,b2
for b5 being Element of the carrier of b1
for b6 being Element of the carrier of b3
      st b6 = b5
   holds (b4 | b3) . b6 = b4 . b5;

:: YELLOW20:th 30
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being non empty transitive id-inheriting SubCatStr of b1
for b4 being covariant Functor of b1,b2
for b5, b6 being Element of the carrier of b1
for b7, b8 being Element of the carrier of b3
   st b7 = b5 & b8 = b6 & <^b7,b8^> <> {}
for b9 being Element of <^b5,b6^>
for b10 being Element of <^b7,b8^>
      st b10 = b9
   holds (b4 | b3) . b10 = b4 . b9;

:: YELLOW20:th 31
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being non empty transitive id-inheriting SubCatStr of b1
for b4 being contravariant Functor of b1,b2
for b5, b6 being Element of the carrier of b1
for b7, b8 being Element of the carrier of b3
   st b7 = b5 & b8 = b6 & <^b7,b8^> <> {}
for b9 being Element of <^b5,b6^>
for b10 being Element of <^b7,b8^>
      st b10 = b9
   holds (b4 | b3) . b10 = b4 . b9;

:: YELLOW20:th 32
theorem
for b1, b2 being non empty AltGraph
for b3 being BimapStr over b1,b2
   st b3 is Covariant(b1, b2) & b3 is one-to-one(b1, b2)
for b4, b5 being Element of the carrier of b1
      st b3 . b4 = b3 . b5
   holds b4 = b5;

:: YELLOW20:th 33
theorem
for b1, b2 being non empty reflexive AltGraph
for b3 being feasible Covariant FunctorStr over b1,b2
   st b3 is faithful(b1, b2)
for b4, b5 being Element of the carrier of b1
   st <^b4,b5^> <> {}
for b6, b7 being Element of <^b4,b5^>
      st b3 . b6 = b3 . b7
   holds b6 = b7;

:: YELLOW20:th 34
theorem
for b1, b2 being non empty AltGraph
for b3 being Covariant FunctorStr over b1,b2
   st b3 is surjective(b1, b2)
for b4, b5 being Element of the carrier of b2
   st <^b4,b5^> <> {}
for b6 being Element of <^b4,b5^> holds
   ex b7, b8 being Element of the carrier of b1 st
      ex b9 being Element of <^b7,b8^> st
         b4 = b3 . b7 & b5 = b3 . b8 & <^b7,b8^> <> {} & b6 = b3 . b9;

:: YELLOW20:th 35
theorem
for b1, b2 being non empty AltGraph
for b3 being BimapStr over b1,b2
   st b3 is Contravariant(b1, b2) & b3 is one-to-one(b1, b2)
for b4, b5 being Element of the carrier of b1
      st b3 . b4 = b3 . b5
   holds b4 = b5;

:: YELLOW20:th 36
theorem
for b1, b2 being non empty reflexive AltGraph
for b3 being feasible Contravariant FunctorStr over b1,b2
   st b3 is faithful(b1, b2)
for b4, b5 being Element of the carrier of b1
   st <^b4,b5^> <> {}
for b6, b7 being Element of <^b4,b5^>
      st b3 . b6 = b3 . b7
   holds b6 = b7;

:: YELLOW20:th 37
theorem
for b1, b2 being non empty AltGraph
for b3 being Contravariant FunctorStr over b1,b2
   st b3 is surjective(b1, b2)
for b4, b5 being Element of the carrier of b2
   st <^b4,b5^> <> {}
for b6 being Element of <^b4,b5^> holds
   ex b7, b8 being Element of the carrier of b1 st
      ex b9 being Element of <^b7,b8^> st
         b5 = b3 . b7 & b4 = b3 . b8 & <^b7,b8^> <> {} & b6 = b3 . b9;

:: YELLOW20:prednot 2 => YELLOW20:pred 2
definition
  let a1, a2 be non empty transitive associative with_units AltCatStr;
  let a3 be FunctorStr over a1,a2;
  let a4, a5 be non empty transitive associative with_units AltCatStr;
  pred A4,A5 are_isomorphic_under A3 means
    a4 is transitive id-inheriting SubCatStr of a1 &
     a5 is transitive id-inheriting SubCatStr of a2 &
     (ex b1 being covariant Functor of a4,a5 st
        b1 is bijective(a4, a5) &
         (for b2 being Element of the carrier of a4
         for b3 being Element of the carrier of a1
               st b2 = b3
            holds b1 . b2 = a3 . b3) &
         (for b2, b3 being Element of the carrier of a4
         for b4, b5 being Element of the carrier of a1
            st <^b2,b3^> <> {} & b2 = b4 & b3 = b5
         for b6 being Element of <^b2,b3^>
         for b7 being Element of <^b4,b5^>
               st b6 = b7
            holds b1 . b6 = (Morph-Map(a3,b4,b5)) . b7));
end;

:: YELLOW20:dfs 4
definiens
  let a1, a2 be non empty transitive associative with_units AltCatStr;
  let a3 be FunctorStr over a1,a2;
  let a4, a5 be non empty transitive associative with_units AltCatStr;
To prove
     a4,a5 are_isomorphic_under a3
it is sufficient to prove
  thus a4 is transitive id-inheriting SubCatStr of a1 &
     a5 is transitive id-inheriting SubCatStr of a2 &
     (ex b1 being covariant Functor of a4,a5 st
        b1 is bijective(a4, a5) &
         (for b2 being Element of the carrier of a4
         for b3 being Element of the carrier of a1
               st b2 = b3
            holds b1 . b2 = a3 . b3) &
         (for b2, b3 being Element of the carrier of a4
         for b4, b5 being Element of the carrier of a1
            st <^b2,b3^> <> {} & b2 = b4 & b3 = b5
         for b6 being Element of <^b2,b3^>
         for b7 being Element of <^b4,b5^>
               st b6 = b7
            holds b1 . b6 = (Morph-Map(a3,b4,b5)) . b7));

:: YELLOW20:def 4
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being FunctorStr over b1,b2
for b4, b5 being non empty transitive associative with_units AltCatStr holds
   b4,b5 are_isomorphic_under b3
iff
   b4 is transitive id-inheriting SubCatStr of b1 &
    b5 is transitive id-inheriting SubCatStr of b2 &
    (ex b6 being covariant Functor of b4,b5 st
       b6 is bijective(b4, b5) &
        (for b7 being Element of the carrier of b4
        for b8 being Element of the carrier of b1
              st b7 = b8
           holds b6 . b7 = b3 . b8) &
        (for b7, b8 being Element of the carrier of b4
        for b9, b10 being Element of the carrier of b1
           st <^b7,b8^> <> {} & b7 = b9 & b8 = b10
        for b11 being Element of <^b7,b8^>
        for b12 being Element of <^b9,b10^>
              st b11 = b12
           holds b6 . b11 = (Morph-Map(b3,b9,b10)) . b12));

:: YELLOW20:prednot 3 => YELLOW20:pred 3
definition
  let a1, a2 be non empty transitive associative with_units AltCatStr;
  let a3 be FunctorStr over a1,a2;
  let a4, a5 be non empty transitive associative with_units AltCatStr;
  pred A4,A5 are_anti-isomorphic_under A3 means
    a4 is transitive id-inheriting SubCatStr of a1 &
     a5 is transitive id-inheriting SubCatStr of a2 &
     (ex b1 being contravariant Functor of a4,a5 st
        b1 is bijective(a4, a5) &
         (for b2 being Element of the carrier of a4
         for b3 being Element of the carrier of a1
               st b2 = b3
            holds b1 . b2 = a3 . b3) &
         (for b2, b3 being Element of the carrier of a4
         for b4, b5 being Element of the carrier of a1
            st <^b2,b3^> <> {} & b2 = b4 & b3 = b5
         for b6 being Element of <^b2,b3^>
         for b7 being Element of <^b4,b5^>
               st b6 = b7
            holds b1 . b6 = (Morph-Map(a3,b4,b5)) . b7));
end;

:: YELLOW20:dfs 5
definiens
  let a1, a2 be non empty transitive associative with_units AltCatStr;
  let a3 be FunctorStr over a1,a2;
  let a4, a5 be non empty transitive associative with_units AltCatStr;
To prove
     a4,a5 are_anti-isomorphic_under a3
it is sufficient to prove
  thus a4 is transitive id-inheriting SubCatStr of a1 &
     a5 is transitive id-inheriting SubCatStr of a2 &
     (ex b1 being contravariant Functor of a4,a5 st
        b1 is bijective(a4, a5) &
         (for b2 being Element of the carrier of a4
         for b3 being Element of the carrier of a1
               st b2 = b3
            holds b1 . b2 = a3 . b3) &
         (for b2, b3 being Element of the carrier of a4
         for b4, b5 being Element of the carrier of a1
            st <^b2,b3^> <> {} & b2 = b4 & b3 = b5
         for b6 being Element of <^b2,b3^>
         for b7 being Element of <^b4,b5^>
               st b6 = b7
            holds b1 . b6 = (Morph-Map(a3,b4,b5)) . b7));

:: YELLOW20:def 5
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being FunctorStr over b1,b2
for b4, b5 being non empty transitive associative with_units AltCatStr holds
   b4,b5 are_anti-isomorphic_under b3
iff
   b4 is transitive id-inheriting SubCatStr of b1 &
    b5 is transitive id-inheriting SubCatStr of b2 &
    (ex b6 being contravariant Functor of b4,b5 st
       b6 is bijective(b4, b5) &
        (for b7 being Element of the carrier of b4
        for b8 being Element of the carrier of b1
              st b7 = b8
           holds b6 . b7 = b3 . b8) &
        (for b7, b8 being Element of the carrier of b4
        for b9, b10 being Element of the carrier of b1
           st <^b7,b8^> <> {} & b7 = b9 & b8 = b10
        for b11 being Element of <^b7,b8^>
        for b12 being Element of <^b9,b10^>
              st b11 = b12
           holds b6 . b11 = (Morph-Map(b3,b9,b10)) . b12));

:: YELLOW20:th 38
theorem
for b1, b2, b3, b4 being non empty transitive associative with_units AltCatStr
for b5 being FunctorStr over b1,b2
      st b3,b4 are_isomorphic_under b5
   holds b3,b4 are_isomorphic;

:: YELLOW20:th 39
theorem
for b1, b2, b3, b4 being non empty transitive associative with_units AltCatStr
for b5 being FunctorStr over b1,b2
      st b3,b4 are_anti-isomorphic_under b5
   holds b3,b4 are_anti-isomorphic;

:: YELLOW20:th 40
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
      st b1,b2 are_isomorphic_under b3
   holds b3 is bijective(b1, b2);

:: YELLOW20:th 41
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
      st b1,b2 are_anti-isomorphic_under b3
   holds b3 is bijective(b1, b2);

:: YELLOW20:th 42
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
      st b3 is bijective(b1, b2)
   holds b1,b2 are_isomorphic_under b3;

:: YELLOW20:th 43
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
      st b3 is bijective(b1, b2)
   holds b1,b2 are_anti-isomorphic_under b3;

:: YELLOW20:sch 4
scheme YELLOW20:sch 4
{F1 -> non empty transitive associative with_units AltCatStr,
  F2 -> non empty transitive associative with_units AltCatStr,
  F3 -> covariant Functor of F1(),F2(),
  F4 -> non empty transitive id-inheriting SubCatStr of F1(),
  F5 -> non empty transitive id-inheriting SubCatStr of F2()}:
F4(),F5() are_isomorphic_under F3()
provided
   F3() is bijective(F1(), F2())
and
   for b1 being Element of the carrier of F1() holds
         b1 is Element of the carrier of F4()
      iff
         F3() . b1 is Element of the carrier of F5()
and
   for b1, b2 being Element of the carrier of F1()
      st <^b1,b2^> <> {}
   for b3, b4 being Element of the carrier of F4()
      st b3 = b1 & b4 = b2
   for b5, b6 being Element of the carrier of F5()
      st b5 = F3() . b1 & b6 = F3() . b2
   for b7 being Element of <^b1,b2^> holds
         b7 in <^b3,b4^>
      iff
         F3() . b7 in <^b5,b6^>;


:: YELLOW20:sch 5
scheme YELLOW20:sch 5
{F1 -> non empty transitive associative with_units AltCatStr,
  F2 -> non empty transitive associative with_units AltCatStr,
  F3 -> contravariant Functor of F1(),F2(),
  F4 -> non empty transitive id-inheriting SubCatStr of F1(),
  F5 -> non empty transitive id-inheriting SubCatStr of F2()}:
F4(),F5() are_anti-isomorphic_under F3()
provided
   F3() is bijective(F1(), F2())
and
   for b1 being Element of the carrier of F1() holds
         b1 is Element of the carrier of F4()
      iff
         F3() . b1 is Element of the carrier of F5()
and
   for b1, b2 being Element of the carrier of F1()
      st <^b1,b2^> <> {}
   for b3, b4 being Element of the carrier of F4()
      st b3 = b1 & b4 = b2
   for b5, b6 being Element of the carrier of F5()
      st b5 = F3() . b1 & b6 = F3() . b2
   for b7 being Element of <^b1,b2^> holds
         b7 in <^b3,b4^>
      iff
         F3() . b7 in <^b6,b5^>;


:: YELLOW20:th 44
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive id-inheriting SubCatStr of b1 holds
   b2,b2 are_isomorphic_under id b1;

:: YELLOW20:th 45
theorem
for b1, b2 being Relation-like Function-like set
      st b1 c= b2
   holds ~ b1 c= ~ b2;

:: YELLOW20:th 46
theorem
for b1, b2 being Relation-like Function-like set
      st proj1 b1 is Relation-like set & ~ b1 c= ~ b2
   holds b1 c= b2;

:: YELLOW20:th 47
theorem
for b1, b2 being set
for b3 being ManySortedSet of [:b1,b1:]
for b4 being ManySortedSet of [:b2,b2:]
      st b3 cc= b4
   holds ~ b3 cc= ~ b4;

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

:: YELLOW20:th 49
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive id-inheriting SubCatStr of b1 holds
   b2 opp is transitive id-inheriting SubCatStr of b1 opp;

:: YELLOW20:th 50
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive id-inheriting SubCatStr of b1 holds
   b2,b2 opp are_anti-isomorphic_under dualizing-func(b1,b1 opp);

:: YELLOW20:th 51
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being non empty transitive id-inheriting SubCatStr of b1
for b5 being non empty transitive id-inheriting SubCatStr of b2
      st b4,b5 are_isomorphic_under b3
   holds b5,b4 are_isomorphic_under b3 ";

:: YELLOW20:th 52
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
   st b3 is bijective(b1, b2)
for b4 being non empty transitive id-inheriting SubCatStr of b1
for b5 being non empty transitive id-inheriting SubCatStr of b2
      st b4,b5 are_anti-isomorphic_under b3
   holds b5,b4 are_anti-isomorphic_under b3 ";

:: YELLOW20:th 53
theorem
for b1, b2, b3 being non empty transitive associative with_units AltCatStr
for b4 being covariant Functor of b1,b2
for b5 being covariant Functor of b2,b3
for b6 being non empty transitive id-inheriting SubCatStr of b1
for b7 being non empty transitive id-inheriting SubCatStr of b2
for b8 being non empty transitive id-inheriting SubCatStr of b3
      st b6,b7 are_isomorphic_under b4 & b7,b8 are_isomorphic_under b5
   holds b6,b8 are_isomorphic_under b5 * b4;

:: YELLOW20:th 54
theorem
for b1, b2, b3 being non empty transitive associative with_units AltCatStr
for b4 being contravariant Functor of b1,b2
for b5 being covariant Functor of b2,b3
for b6 being non empty transitive id-inheriting SubCatStr of b1
for b7 being non empty transitive id-inheriting SubCatStr of b2
for b8 being non empty transitive id-inheriting SubCatStr of b3
      st b6,b7 are_anti-isomorphic_under b4 & b7,b8 are_isomorphic_under b5
   holds b6,b8 are_anti-isomorphic_under b5 * b4;

:: YELLOW20:th 55
theorem
for b1, b2, b3 being non empty transitive associative with_units AltCatStr
for b4 being covariant Functor of b1,b2
for b5 being contravariant Functor of b2,b3
for b6 being non empty transitive id-inheriting SubCatStr of b1
for b7 being non empty transitive id-inheriting SubCatStr of b2
for b8 being non empty transitive id-inheriting SubCatStr of b3
      st b6,b7 are_isomorphic_under b4 & b7,b8 are_anti-isomorphic_under b5
   holds b6,b8 are_anti-isomorphic_under b5 * b4;

:: YELLOW20:th 56
theorem
for b1, b2, b3 being non empty transitive associative with_units AltCatStr
for b4 being contravariant Functor of b1,b2
for b5 being contravariant Functor of b2,b3
for b6 being non empty transitive id-inheriting SubCatStr of b1
for b7 being non empty transitive id-inheriting SubCatStr of b2
for b8 being non empty transitive id-inheriting SubCatStr of b3
      st b6,b7 are_anti-isomorphic_under b4 & b7,b8 are_anti-isomorphic_under b5
   holds b6,b8 are_isomorphic_under b5 * b4;