Article ALTCAT_4, MML version 4.99.1005

:: ALTCAT_4:funcreg 1
registration
  let a1 be non empty with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  cluster <^a2,a2^> -> non empty;
end;

:: ALTCAT_4:th 1
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3, b4 being Element of the carrier of b1
for b5 being Element of <^b2,b3^>
for b6 being Element of <^b2,b4^>
for b7 being Element of <^b3,b4^>
      st b6 = b7 * b5 & b7 " * b7 = idm b3 & <^b2,b3^> <> {} & <^b3,b4^> <> {} & <^b4,b3^> <> {}
   holds b5 = b7 " * b6;

:: ALTCAT_4:th 2
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3, b4 being Element of the carrier of b1
for b5 being Element of <^b2,b3^>
for b6 being Element of <^b4,b3^>
for b7 being Element of <^b4,b2^>
      st b6 = b5 * b7 & b7 * (b7 ") = idm b2 & <^b4,b2^> <> {} & <^b2,b4^> <> {} & <^b2,b3^> <> {}
   holds b5 = b6 * (b7 ");

:: ALTCAT_4:th 3
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^>
      st <^b2,b3^> <> {} & <^b3,b2^> <> {} & b4 is iso(b1, b2, b3)
   holds b4 " is iso(b1, b3, b2);

:: ALTCAT_4:th 4
theorem
for b1 being non empty with_units AltCatStr
for b2 being Element of the carrier of b1 holds
   idm b2 is epi(b1, b2, b2) & idm b2 is mono(b1, b2, b2);

:: ALTCAT_4:funcreg 2
registration
  let a1 be non empty with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  cluster idm a2 -> retraction coretraction mono epi;
end;

:: ALTCAT_4:funcreg 3
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  cluster idm a2 -> iso;
end;

:: ALTCAT_4:th 5
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^>
for b5, b6 being Element of <^b3,b2^>
      st b6 * b4 = idm b2 & b4 * b5 = idm b3 & <^b2,b3^> <> {} & <^b3,b2^> <> {}
   holds b5 = b6;

:: ALTCAT_4:th 6
theorem
for b1 being non empty transitive associative with_units AltCatStr
   st for b2, b3 being Element of the carrier of b1
     for b4 being Element of <^b2,b3^> holds
        b4 is coretraction(b1, b2, b3)
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^>
      st <^b2,b3^> <> {} & <^b3,b2^> <> {}
   holds b4 is iso(b1, b2, b3);

:: ALTCAT_4:th 7
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
for b4, b5 being Element of <^b2,b3^>
      st b4 is _zero(b1, b2, b3) &
         b5 is _zero(b1, b2, b3) &
         (ex b6 being Element of the carrier of b1 st
            b6 is _zero(b1))
   holds b4 = b5;

:: ALTCAT_4:th 8
theorem
for b1 being non empty AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^>
      st b2 is terminal(b1)
   holds b4 is mono(b1, b2, b3);

:: ALTCAT_4:th 9
theorem
for b1 being non empty AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b3,b2^>
      st b2 is initial(b1)
   holds b4 is epi(b1, b3, b2);

:: ALTCAT_4:th 10
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
      st b2 is terminal(b1) & b3,b2 are_iso
   holds b3 is terminal(b1);

:: ALTCAT_4:th 11
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
      st b2 is initial(b1) & b2,b3 are_iso
   holds b3 is initial(b1);

:: ALTCAT_4:th 12
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
      st b2 is initial(b1) & b3 is terminal(b1) & <^b3,b2^> <> {}
   holds b3 is initial(b1) & b2 is terminal(b1);

:: ALTCAT_4:th 13
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4 being Element of the carrier of b1 holds
   b3 . idm b4 = idm (b3 . b4);

:: ALTCAT_4:th 14
theorem
for b1, b2 being non empty AltCatStr
for b3 being Contravariant FunctorStr over b1,b2 holds
      b3 is full(b1, b2)
   iff
      for b4, b5 being Element of the carrier of b1 holds
      Morph-Map(b3,b5,b4) is onto(<^b5,b4^>, <^b3 . b4,b3 . b5^>);

:: ALTCAT_4:th 15
theorem
for b1, b2 being non empty AltCatStr
for b3 being Contravariant FunctorStr over b1,b2 holds
      b3 is faithful(b1, b2)
   iff
      for b4, b5 being Element of the carrier of b1 holds
      Morph-Map(b3,b5,b4) is one-to-one;

:: ALTCAT_4:th 16
theorem
for b1, b2 being non empty AltCatStr
for b3 being Covariant FunctorStr over b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b3 . b4,b3 . b5^>
      st <^b4,b5^> <> {} & b3 is full(b1, b2) & b3 is feasible(b1, b2)
   holds ex b7 being Element of <^b4,b5^> st
      b6 = b3 . b7;

:: ALTCAT_4:th 17
theorem
for b1, b2 being non empty AltCatStr
for b3 being Contravariant FunctorStr over b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b3 . b5,b3 . b4^>
      st <^b4,b5^> <> {} & b3 is full(b1, b2) & b3 is feasible(b1, b2)
   holds ex b7 being Element of <^b4,b5^> st
      b6 = b3 . b7;

:: ALTCAT_4:th 18
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st <^b4,b5^> <> {} & <^b5,b4^> <> {} & b6 is retraction(b1, b4, b5)
   holds b3 . b6 is retraction(b2, b3 . b4, b3 . b5);

:: ALTCAT_4:th 19
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st <^b4,b5^> <> {} & <^b5,b4^> <> {} & b6 is coretraction(b1, b4, b5)
   holds b3 . b6 is coretraction(b2, b3 . b4, b3 . b5);

:: ALTCAT_4:th 20
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st <^b4,b5^> <> {} & <^b5,b4^> <> {} & b6 is iso(b1, b4, b5)
   holds b3 . b6 is iso(b2, b3 . b4, b3 . b5);

:: ALTCAT_4:th 21
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
      st b4,b5 are_iso
   holds b3 . b4,b3 . b5 are_iso;

:: ALTCAT_4:th 22
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st <^b4,b5^> <> {} & <^b5,b4^> <> {} & b6 is retraction(b1, b4, b5)
   holds b3 . b6 is coretraction(b2, b3 . b5, b3 . b4);

:: ALTCAT_4:th 23
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st <^b4,b5^> <> {} & <^b5,b4^> <> {} & b6 is coretraction(b1, b4, b5)
   holds b3 . b6 is retraction(b2, b3 . b5, b3 . b4);

:: ALTCAT_4:th 24
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st <^b4,b5^> <> {} & <^b5,b4^> <> {} & b6 is iso(b1, b4, b5)
   holds b3 . b6 is iso(b2, b3 . b5, b3 . b4);

:: ALTCAT_4:th 25
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
      st b4,b5 are_iso
   holds b3 . b5,b3 . b4 are_iso;

:: ALTCAT_4:th 26
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st b3 is full(b1, b2) &
         b3 is faithful(b1, b2) &
         <^b4,b5^> <> {} &
         <^b5,b4^> <> {} &
         b3 . b6 is retraction(b2, b3 . b4, b3 . b5)
   holds b6 is retraction(b1, b4, b5);

:: ALTCAT_4:th 27
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st b3 is full(b1, b2) &
         b3 is faithful(b1, b2) &
         <^b4,b5^> <> {} &
         <^b5,b4^> <> {} &
         b3 . b6 is coretraction(b2, b3 . b4, b3 . b5)
   holds b6 is coretraction(b1, b4, b5);

:: ALTCAT_4:th 28
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st b3 is full(b1, b2) & b3 is faithful(b1, b2) & <^b4,b5^> <> {} & <^b5,b4^> <> {} & b3 . b6 is iso(b2, b3 . b4, b3 . b5)
   holds b6 is iso(b1, b4, b5);

:: ALTCAT_4:th 29
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being covariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
      st b3 is full(b1, b2) & b3 is faithful(b1, b2) & <^b4,b5^> <> {} & <^b5,b4^> <> {} & b3 . b4,b3 . b5 are_iso
   holds b4,b5 are_iso;

:: ALTCAT_4:th 30
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st b3 is full(b1, b2) &
         b3 is faithful(b1, b2) &
         <^b4,b5^> <> {} &
         <^b5,b4^> <> {} &
         b3 . b6 is retraction(b2, b3 . b5, b3 . b4)
   holds b6 is coretraction(b1, b4, b5);

:: ALTCAT_4:th 31
theorem
for b1, b2 being non empty transitive with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st b3 is full(b1, b2) &
         b3 is faithful(b1, b2) &
         <^b4,b5^> <> {} &
         <^b5,b4^> <> {} &
         b3 . b6 is coretraction(b2, b3 . b5, b3 . b4)
   holds b6 is retraction(b1, b4, b5);

:: ALTCAT_4:th 32
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
for b6 being Element of <^b4,b5^>
      st b3 is full(b1, b2) & b3 is faithful(b1, b2) & <^b4,b5^> <> {} & <^b5,b4^> <> {} & b3 . b6 is iso(b2, b3 . b5, b3 . b4)
   holds b6 is iso(b1, b4, b5);

:: ALTCAT_4:th 33
theorem
for b1, b2 being non empty transitive associative with_units AltCatStr
for b3 being contravariant Functor of b1,b2
for b4, b5 being Element of the carrier of b1
      st b3 is full(b1, b2) & b3 is faithful(b1, b2) & <^b4,b5^> <> {} & <^b5,b4^> <> {} & b3 . b5,b3 . b4 are_iso
   holds b4,b5 are_iso;

:: ALTCAT_4:th 34
theorem
for b1 being AltCatStr
for b2 being SubCatStr of b1
      st the carrier of b1 = the carrier of b2 & the Arrows of b1 = the Arrows of b2
   holds b2 is full(b1);

:: ALTCAT_4:th 35
theorem
for b1 being non empty with_units AltCatStr
for b2 being SubCatStr of b1
      st the carrier of b1 = the carrier of b2 & the Arrows of b1 = the Arrows of b2
   holds b2 is id-inheriting(b1);

:: ALTCAT_4:exreg 1
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  cluster non empty transitive strict full id-inheriting SubCatStr of a1;
end;

:: ALTCAT_4:th 36
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive id-inheriting SubCatStr of b1
for b3 being non empty transitive id-inheriting SubCatStr of b2 holds
   b3 is non empty transitive id-inheriting SubCatStr of b1;

:: ALTCAT_4:th 37
theorem
for b1 being non empty transitive AltCatStr
for b2 being non empty transitive SubCatStr of b1
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
for b7 being Element of <^b3,b4^>
for b8 being Element of <^b5,b6^>
      st b5 = b3 & b6 = b4 & b7 = b8 & <^b5,b6^> <> {}
   holds (b7 is mono(b1, b3, b4) implies b8 is mono(b2, b5, b6)) & (b7 is epi(b1, b3, b4) implies b8 is epi(b2, b5, b6));

:: ALTCAT_4:th 38
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 b1
for b5, b6 being Element of the carrier of b2
for b7 being Element of <^b3,b4^>
for b8 being Element of <^b4,b3^>
for b9 being Element of <^b5,b6^>
for b10 being Element of <^b6,b5^>
      st b5 = b3 & b6 = b4 & b7 = b9 & b8 = b10 & <^b5,b6^> <> {} & <^b6,b5^> <> {}
   holds (b7 is_left_inverse_of b8 implies b9 is_left_inverse_of b10) & (b9 is_left_inverse_of b10 implies b7 is_left_inverse_of b8) & (b8 is_left_inverse_of b7 implies b10 is_left_inverse_of b9) & (b10 is_left_inverse_of b9 implies b8 is_left_inverse_of b7);

:: ALTCAT_4:th 39
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive full id-inheriting SubCatStr of b1
for b3, b4 being Element of the carrier of b1
for b5, b6 being Element of the carrier of b2
for b7 being Element of <^b3,b4^>
for b8 being Element of <^b5,b6^>
      st b5 = b3 & b6 = b4 & b7 = b8 & <^b5,b6^> <> {} & <^b6,b5^> <> {}
   holds (b7 is retraction(b1, b3, b4) implies b8 is retraction(b2, b5, b6)) & (b7 is coretraction(b1, b3, b4) implies b8 is coretraction(b2, b5, b6)) & (b7 is iso(b1, b3, b4) implies b8 is iso(b2, b5, b6));

:: ALTCAT_4:th 40
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 b1
for b5, b6 being Element of the carrier of b2
for b7 being Element of <^b3,b4^>
for b8 being Element of <^b5,b6^>
      st b5 = b3 & b6 = b4 & b7 = b8 & <^b5,b6^> <> {} & <^b6,b5^> <> {}
   holds (b8 is retraction(b2, b5, b6) implies b7 is retraction(b1, b3, b4)) & (b8 is coretraction(b2, b5, b6) implies b7 is coretraction(b1, b3, b4)) & (b8 is iso(b2, b5, b6) implies b7 is iso(b1, b3, b4));

:: ALTCAT_4:funcnot 1 => ALTCAT_4:func 1
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  func AllMono A1 -> non empty transitive strict SubCatStr of a1 means
    the carrier of it = the carrier of a1 &
     the Arrows of it cc= the Arrows of a1 &
     (for b1, b2 being Element of the carrier of a1
     for b3 being Element of <^b1,b2^> holds
           b3 in (the Arrows of it) .(b1,b2)
        iff
           <^b1,b2^> <> {} & b3 is mono(a1, b1, b2));
end;

:: ALTCAT_4:def 1
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive strict SubCatStr of b1 holds
      b2 = AllMono b1
   iff
      the carrier of b2 = the carrier of b1 &
       the Arrows of b2 cc= the Arrows of b1 &
       (for b3, b4 being Element of the carrier of b1
       for b5 being Element of <^b3,b4^> holds
             b5 in (the Arrows of b2) .(b3,b4)
          iff
             <^b3,b4^> <> {} & b5 is mono(b1, b3, b4));

:: ALTCAT_4:funcreg 4
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  cluster AllMono a1 -> non empty transitive strict id-inheriting;
end;

:: ALTCAT_4:funcnot 2 => ALTCAT_4:func 2
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  func AllEpi A1 -> non empty transitive strict SubCatStr of a1 means
    the carrier of it = the carrier of a1 &
     the Arrows of it cc= the Arrows of a1 &
     (for b1, b2 being Element of the carrier of a1
     for b3 being Element of <^b1,b2^> holds
           b3 in (the Arrows of it) .(b1,b2)
        iff
           <^b1,b2^> <> {} & b3 is epi(a1, b1, b2));
end;

:: ALTCAT_4:def 2
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive strict SubCatStr of b1 holds
      b2 = AllEpi b1
   iff
      the carrier of b2 = the carrier of b1 &
       the Arrows of b2 cc= the Arrows of b1 &
       (for b3, b4 being Element of the carrier of b1
       for b5 being Element of <^b3,b4^> holds
             b5 in (the Arrows of b2) .(b3,b4)
          iff
             <^b3,b4^> <> {} & b5 is epi(b1, b3, b4));

:: ALTCAT_4:funcreg 5
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  cluster AllEpi a1 -> non empty transitive strict id-inheriting;
end;

:: ALTCAT_4:funcnot 3 => ALTCAT_4:func 3
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  func AllRetr A1 -> non empty transitive strict SubCatStr of a1 means
    the carrier of it = the carrier of a1 &
     the Arrows of it cc= the Arrows of a1 &
     (for b1, b2 being Element of the carrier of a1
     for b3 being Element of <^b1,b2^> holds
           b3 in (the Arrows of it) .(b1,b2)
        iff
           <^b1,b2^> <> {} & <^b2,b1^> <> {} & b3 is retraction(a1, b1, b2));
end;

:: ALTCAT_4:def 3
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive strict SubCatStr of b1 holds
      b2 = AllRetr b1
   iff
      the carrier of b2 = the carrier of b1 &
       the Arrows of b2 cc= the Arrows of b1 &
       (for b3, b4 being Element of the carrier of b1
       for b5 being Element of <^b3,b4^> holds
             b5 in (the Arrows of b2) .(b3,b4)
          iff
             <^b3,b4^> <> {} & <^b4,b3^> <> {} & b5 is retraction(b1, b3, b4));

:: ALTCAT_4:funcreg 6
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  cluster AllRetr a1 -> non empty transitive strict id-inheriting;
end;

:: ALTCAT_4:funcnot 4 => ALTCAT_4:func 4
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  func AllCoretr A1 -> non empty transitive strict SubCatStr of a1 means
    the carrier of it = the carrier of a1 &
     the Arrows of it cc= the Arrows of a1 &
     (for b1, b2 being Element of the carrier of a1
     for b3 being Element of <^b1,b2^> holds
           b3 in (the Arrows of it) .(b1,b2)
        iff
           <^b1,b2^> <> {} & <^b2,b1^> <> {} & b3 is coretraction(a1, b1, b2));
end;

:: ALTCAT_4:def 4
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive strict SubCatStr of b1 holds
      b2 = AllCoretr b1
   iff
      the carrier of b2 = the carrier of b1 &
       the Arrows of b2 cc= the Arrows of b1 &
       (for b3, b4 being Element of the carrier of b1
       for b5 being Element of <^b3,b4^> holds
             b5 in (the Arrows of b2) .(b3,b4)
          iff
             <^b3,b4^> <> {} & <^b4,b3^> <> {} & b5 is coretraction(b1, b3, b4));

:: ALTCAT_4:funcreg 7
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  cluster AllCoretr a1 -> non empty transitive strict id-inheriting;
end;

:: ALTCAT_4:funcnot 5 => ALTCAT_4:func 5
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  func AllIso A1 -> non empty transitive strict SubCatStr of a1 means
    the carrier of it = the carrier of a1 &
     the Arrows of it cc= the Arrows of a1 &
     (for b1, b2 being Element of the carrier of a1
     for b3 being Element of <^b1,b2^> holds
           b3 in (the Arrows of it) .(b1,b2)
        iff
           <^b1,b2^> <> {} & <^b2,b1^> <> {} & b3 is iso(a1, b1, b2));
end;

:: ALTCAT_4:def 5
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being non empty transitive strict SubCatStr of b1 holds
      b2 = AllIso b1
   iff
      the carrier of b2 = the carrier of b1 &
       the Arrows of b2 cc= the Arrows of b1 &
       (for b3, b4 being Element of the carrier of b1
       for b5 being Element of <^b3,b4^> holds
             b5 in (the Arrows of b2) .(b3,b4)
          iff
             <^b3,b4^> <> {} & <^b4,b3^> <> {} & b5 is iso(b1, b3, b4));

:: ALTCAT_4:funcreg 8
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  cluster AllIso a1 -> non empty transitive strict id-inheriting;
end;

:: ALTCAT_4:th 41
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso b1 is non empty transitive id-inheriting SubCatStr of AllRetr b1;

:: ALTCAT_4:th 42
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso b1 is non empty transitive id-inheriting SubCatStr of AllCoretr b1;

:: ALTCAT_4:th 43
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllCoretr b1 is non empty transitive id-inheriting SubCatStr of AllMono b1;

:: ALTCAT_4:th 44
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllRetr b1 is non empty transitive id-inheriting SubCatStr of AllEpi b1;

:: ALTCAT_4:th 45
theorem
for b1 being non empty transitive associative with_units AltCatStr
      st for b2, b3 being Element of the carrier of b1
        for b4 being Element of <^b2,b3^> holds
           b4 is mono(b1, b2, b3)
   holds AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#) = AllMono b1;

:: ALTCAT_4:th 46
theorem
for b1 being non empty transitive associative with_units AltCatStr
      st for b2, b3 being Element of the carrier of b1
        for b4 being Element of <^b2,b3^> holds
           b4 is epi(b1, b2, b3)
   holds AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#) = AllEpi b1;

:: ALTCAT_4:th 47
theorem
for b1 being non empty transitive associative with_units AltCatStr
      st for b2, b3 being Element of the carrier of b1
        for b4 being Element of <^b2,b3^> holds
           b4 is retraction(b1, b2, b3) & <^b3,b2^> <> {}
   holds AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#) = AllRetr b1;

:: ALTCAT_4:th 48
theorem
for b1 being non empty transitive associative with_units AltCatStr
      st for b2, b3 being Element of the carrier of b1
        for b4 being Element of <^b2,b3^> holds
           b4 is coretraction(b1, b2, b3) & <^b3,b2^> <> {}
   holds AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#) = AllCoretr b1;

:: ALTCAT_4:th 49
theorem
for b1 being non empty transitive associative with_units AltCatStr
      st for b2, b3 being Element of the carrier of b1
        for b4 being Element of <^b2,b3^> holds
           b4 is iso(b1, b2, b3) & <^b3,b2^> <> {}
   holds AltCatStr(#the carrier of b1,the Arrows of b1,the Comp of b1#) = AllIso b1;

:: ALTCAT_4:th 50
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of AllMono b1
for b4 being Element of <^b2,b3^>
      st <^b2,b3^> <> {}
   holds b4 is mono(AllMono b1, b2, b3);

:: ALTCAT_4:th 51
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of AllEpi b1
for b4 being Element of <^b2,b3^>
      st <^b2,b3^> <> {}
   holds b4 is epi(AllEpi b1, b2, b3);

:: ALTCAT_4:th 52
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of AllIso b1
for b4 being Element of <^b2,b3^>
      st <^b2,b3^> <> {}
   holds b4 is iso(AllIso b1, b2, b3) & b4 " in <^b3,b2^>;

:: ALTCAT_4:th 53
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllMono AllMono b1 = AllMono b1;

:: ALTCAT_4:th 54
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllEpi AllEpi b1 = AllEpi b1;

:: ALTCAT_4:th 55
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso AllIso b1 = AllIso b1;

:: ALTCAT_4:th 56
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso AllMono b1 = AllIso b1;

:: ALTCAT_4:th 57
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso AllEpi b1 = AllIso b1;

:: ALTCAT_4:th 58
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso AllRetr b1 = AllIso b1;

:: ALTCAT_4:th 59
theorem
for b1 being non empty transitive associative with_units AltCatStr holds
   AllIso AllCoretr b1 = AllIso b1;