Article ALTCAT_3, MML version 4.99.1005

:: ALTCAT_3:prednot 1 => ALTCAT_3:pred 1
definition
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  let a5 be Element of <^a3,a2^>;
  pred A4 is_left_inverse_of A5 means
    a4 * a5 = idm a3;
end;

:: ALTCAT_3:dfs 1
definiens
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  let a5 be Element of <^a3,a2^>;
To prove
     a4 is_left_inverse_of a5
it is sufficient to prove
  thus a4 * a5 = idm a3;

:: ALTCAT_3:def 1
theorem
for b1 being non empty with_units AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^>
for b5 being Element of <^b3,b2^> holds
      b4 is_left_inverse_of b5
   iff
      b4 * b5 = idm b3;

:: ALTCAT_3:prednot 2 => ALTCAT_3:pred 1
notation
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  let a5 be Element of <^a3,a2^>;
  synonym a5 is_right_inverse_of a4 for a4 is_left_inverse_of a5;
end;

:: ALTCAT_3:attrnot 1 => ALTCAT_3:attr 1
definition
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  attr a4 is retraction means
    ex b1 being Element of <^a3,a2^> st
       a4 is_left_inverse_of b1;
end;

:: ALTCAT_3:dfs 2
definiens
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
To prove
     a4 is retraction
it is sufficient to prove
  thus ex b1 being Element of <^a3,a2^> st
       a4 is_left_inverse_of b1;

:: ALTCAT_3:def 2
theorem
for b1 being non empty with_units AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^> holds
      b4 is retraction(b1, b2, b3)
   iff
      ex b5 being Element of <^b3,b2^> st
         b4 is_left_inverse_of b5;

:: ALTCAT_3:attrnot 2 => ALTCAT_3:attr 2
definition
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  attr a4 is coretraction means
    ex b1 being Element of <^a3,a2^> st
       b1 is_left_inverse_of a4;
end;

:: ALTCAT_3:dfs 3
definiens
  let a1 be non empty with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
To prove
     a4 is coretraction
it is sufficient to prove
  thus ex b1 being Element of <^a3,a2^> st
       b1 is_left_inverse_of a4;

:: ALTCAT_3:def 3
theorem
for b1 being non empty with_units AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^> holds
      b4 is coretraction(b1, b2, b3)
   iff
      ex b5 being Element of <^b3,b2^> st
         b5 is_left_inverse_of b4;

:: ALTCAT_3:th 1
theorem
for b1 being non empty with_units AltCatStr
for b2 being Element of the carrier of b1 holds
   idm b2 is retraction(b1, b2, b2) & idm b2 is coretraction(b1, b2, b2);

:: ALTCAT_3:funcnot 1 => ALTCAT_3:func 1
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  assume <^a2,a3^> <> {} & <^a3,a2^> <> {} & a4 is retraction(a1, a2, a3) & a4 is coretraction(a1, a2, a3);
  func A4 " -> Element of <^a3,a2^> means
    it is_left_inverse_of a4 & a4 is_left_inverse_of it;
end;

:: ALTCAT_3:def 4
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3 being Element of the carrier of b1
   st <^b2,b3^> <> {} & <^b3,b2^> <> {}
for b4 being Element of <^b2,b3^>
   st b4 is retraction(b1, b2, b3) & b4 is coretraction(b1, b2, b3)
for b5 being Element of <^b3,b2^> holds
      b5 = b4 "
   iff
      b5 is_left_inverse_of b4 & b4 is_left_inverse_of b5;

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

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

:: ALTCAT_3:th 4
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2 being Element of the carrier of b1 holds
   (idm b2) " = idm b2;

:: ALTCAT_3:attrnot 3 => ALTCAT_3:attr 3
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  attr a4 is iso means
    a4 * (a4 ") = idm a3 & a4 " * a4 = idm a2;
end;

:: ALTCAT_3:dfs 5
definiens
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
To prove
     a4 is iso
it is sufficient to prove
  thus a4 * (a4 ") = idm a3 & a4 " * a4 = idm a2;

:: ALTCAT_3:def 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^> holds
      b4 is iso(b1, b2, b3)
   iff
      b4 * (b4 ") = idm b3 & b4 " * b4 = idm b2;

:: ALTCAT_3: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^>
      st b4 is iso(b1, b2, b3)
   holds b4 is retraction(b1, b2, b3) & b4 is coretraction(b1, b2, b3);

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

:: ALTCAT_3:th 7
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 <^b3,b4^>
      st <^b2,b3^> <> {} & <^b3,b4^> <> {} & <^b4,b2^> <> {} & b5 is iso(b1, b2, b3) & b6 is iso(b1, b3, b4)
   holds b6 * b5 is iso(b1, b2, b4) &
    (b6 * b5) " = b5 " * (b6 ");

:: ALTCAT_3:prednot 3 => ALTCAT_3:pred 2
definition
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  pred A2,A3 are_iso means
    <^a2,a3^> <> {} &
     <^a3,a2^> <> {} &
     (ex b1 being Element of <^a2,a3^> st
        b1 is iso(a1, a2, a3));
  symmetry;
::  for a1 being non empty transitive associative with_units AltCatStr
::  for a2, a3 being Element of the carrier of a1
::        st a2,a3 are_iso
::     holds a3,a2 are_iso;
  reflexivity;
::  for a1 being non empty transitive associative with_units AltCatStr
::  for a2 being Element of the carrier of a1 holds
::     a2,a2 are_iso;
end;

:: ALTCAT_3:dfs 6
definiens
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2, a3 be Element of the carrier of a1;
To prove
     a2,a3 are_iso
it is sufficient to prove
  thus <^a2,a3^> <> {} &
     <^a3,a2^> <> {} &
     (ex b1 being Element of <^a2,a3^> st
        b1 is iso(a1, a2, a3));

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

:: ALTCAT_3:th 8
theorem
for b1 being non empty transitive associative with_units AltCatStr
for b2, b3, b4 being Element of the carrier of b1
      st b2,b3 are_iso & b3,b4 are_iso
   holds b2,b4 are_iso;

:: ALTCAT_3:attrnot 4 => ALTCAT_3:attr 4
definition
  let a1 be non empty AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  attr a4 is mono means
    for b1 being Element of the carrier of a1
       st <^b1,a2^> <> {}
    for b2, b3 being Element of <^b1,a2^>
          st a4 * b2 = a4 * b3
       holds b2 = b3;
end;

:: ALTCAT_3:dfs 7
definiens
  let a1 be non empty AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
To prove
     a4 is mono
it is sufficient to prove
  thus for b1 being Element of the carrier of a1
       st <^b1,a2^> <> {}
    for b2, b3 being Element of <^b1,a2^>
          st a4 * b2 = a4 * b3
       holds b2 = b3;

:: ALTCAT_3:def 7
theorem
for b1 being non empty AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^> holds
      b4 is mono(b1, b2, b3)
   iff
      for b5 being Element of the carrier of b1
         st <^b5,b2^> <> {}
      for b6, b7 being Element of <^b5,b2^>
            st b4 * b6 = b4 * b7
         holds b6 = b7;

:: ALTCAT_3:attrnot 5 => ALTCAT_3:attr 5
definition
  let a1 be non empty AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  attr a4 is epi means
    for b1 being Element of the carrier of a1
       st <^a3,b1^> <> {}
    for b2, b3 being Element of <^a3,b1^>
          st b2 * a4 = b3 * a4
       holds b2 = b3;
end;

:: ALTCAT_3:dfs 8
definiens
  let a1 be non empty AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
To prove
     a4 is epi
it is sufficient to prove
  thus for b1 being Element of the carrier of a1
       st <^a3,b1^> <> {}
    for b2, b3 being Element of <^a3,b1^>
          st b2 * a4 = b3 * a4
       holds b2 = b3;

:: ALTCAT_3:def 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^> holds
      b4 is epi(b1, b2, b3)
   iff
      for b5 being Element of the carrier of b1
         st <^b3,b5^> <> {}
      for b6, b7 being Element of <^b3,b5^>
            st b6 * b4 = b7 * b4
         holds b6 = b7;

:: ALTCAT_3:th 9
theorem
for b1 being non empty transitive associative AltCatStr
for b2, b3, b4 being Element of the carrier of b1
   st <^b2,b3^> <> {} & <^b3,b4^> <> {}
for b5 being Element of <^b2,b3^>
for b6 being Element of <^b3,b4^>
      st b5 is mono(b1, b2, b3) & b6 is mono(b1, b3, b4)
   holds b6 * b5 is mono(b1, b2, b4);

:: ALTCAT_3:th 10
theorem
for b1 being non empty transitive associative AltCatStr
for b2, b3, b4 being Element of the carrier of b1
   st <^b2,b3^> <> {} & <^b3,b4^> <> {}
for b5 being Element of <^b2,b3^>
for b6 being Element of <^b3,b4^>
      st b5 is epi(b1, b2, b3) & b6 is epi(b1, b3, b4)
   holds b6 * b5 is epi(b1, b2, b4);

:: ALTCAT_3:th 11
theorem
for b1 being non empty transitive associative AltCatStr
for b2, b3, b4 being Element of the carrier of b1
   st <^b2,b3^> <> {} & <^b3,b4^> <> {}
for b5 being Element of <^b2,b3^>
for b6 being Element of <^b3,b4^>
      st b6 * b5 is mono(b1, b2, b4)
   holds b5 is mono(b1, b2, b3);

:: ALTCAT_3:th 12
theorem
for b1 being non empty transitive associative AltCatStr
for b2, b3, b4 being Element of the carrier of b1
   st <^b2,b3^> <> {} & <^b3,b4^> <> {}
for b5 being Element of <^b2,b3^>
for b6 being Element of <^b3,b4^>
      st b6 * b5 is epi(b1, b2, b4)
   holds b6 is epi(b1, b3, b4);

:: ALTCAT_3:th 13
theorem
for b1 being non empty set
for b2, b3 being Element of the carrier of EnsCat b1
   st <^b2,b3^> <> {}
for b4 being Element of <^b2,b3^>
for b5 being Function-like quasi_total Relation of b2,b3
      st b5 = b4
   holds    b4 is mono(EnsCat b1, b2, b3)
   iff
      b5 is one-to-one;

:: ALTCAT_3:th 14
theorem
for b1 being non empty with_non-empty_elements set
for b2, b3 being Element of the carrier of EnsCat b1
   st <^b2,b3^> <> {}
for b4 being Element of <^b2,b3^>
for b5 being Function-like quasi_total Relation of b2,b3
      st b5 = b4
   holds    b4 is epi(EnsCat b1, b2, b3)
   iff
      b5 is onto(b2, b3);

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

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

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

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

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

:: ALTCAT_3:th 20
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 b4 is retraction(b1, b2, b3) & b4 is mono(b1, b2, b3) & <^b2,b3^> <> {} & <^b3,b2^> <> {}
   holds b4 is iso(b1, b2, b3);

:: ALTCAT_3:th 21
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 b4 is coretraction(b1, b2, b3) & b4 is epi(b1, b2, b3) & <^b2,b3^> <> {} & <^b3,b2^> <> {}
   holds b4 is iso(b1, b2, b3);

:: ALTCAT_3:th 22
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 <^b3,b4^>
      st <^b2,b3^> <> {} & <^b3,b4^> <> {} & <^b4,b2^> <> {} & b6 * b5 is retraction(b1, b2, b4)
   holds b6 is retraction(b1, b3, b4);

:: ALTCAT_3:th 23
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 <^b3,b4^>
      st <^b2,b3^> <> {} & <^b3,b4^> <> {} & <^b4,b2^> <> {} & b6 * b5 is coretraction(b1, b2, b4)
   holds b5 is coretraction(b1, b2, b3);

:: ALTCAT_3:th 24
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)
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_3:exreg 1
registration
  let a1 be non empty with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  cluster retraction coretraction mono epi Element of <^a2,a2^>;
end;

:: ALTCAT_3:exreg 2
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  cluster retraction coretraction iso mono epi Element of <^a2,a2^>;
end;

:: ALTCAT_3:funcreg 1
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  let a3, a4 be mono Element of <^a2,a2^>;
  cluster a3 * a4 -> mono;
end;

:: ALTCAT_3:funcreg 2
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  let a3, a4 be epi Element of <^a2,a2^>;
  cluster a3 * a4 -> epi;
end;

:: ALTCAT_3:funcreg 3
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  let a3, a4 be iso Element of <^a2,a2^>;
  cluster a3 * a4 -> iso;
end;

:: ALTCAT_3:funcreg 4
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  let a3, a4 be retraction Element of <^a2,a2^>;
  cluster a3 * a4 -> retraction;
end;

:: ALTCAT_3:funcreg 5
registration
  let a1 be non empty transitive associative with_units AltCatStr;
  let a2 be Element of the carrier of a1;
  let a3, a4 be coretraction Element of <^a2,a2^>;
  cluster a3 * a4 -> coretraction;
end;

:: ALTCAT_3:attrnot 6 => ALTCAT_3:attr 6
definition
  let a1 be AltGraph;
  let a2 be Element of the carrier of a1;
  attr a2 is initial means
    for b1 being Element of the carrier of a1 holds
       ex b2 being Element of <^a2,b1^> st
          b2 in <^a2,b1^> & <^a2,b1^> is trivial;
end;

:: ALTCAT_3:dfs 9
definiens
  let a1 be AltGraph;
  let a2 be Element of the carrier of a1;
To prove
     a2 is initial
it is sufficient to prove
  thus for b1 being Element of the carrier of a1 holds
       ex b2 being Element of <^a2,b1^> st
          b2 in <^a2,b1^> & <^a2,b1^> is trivial;

:: ALTCAT_3:def 9
theorem
for b1 being AltGraph
for b2 being Element of the carrier of b1 holds
      b2 is initial(b1)
   iff
      for b3 being Element of the carrier of b1 holds
         ex b4 being Element of <^b2,b3^> st
            b4 in <^b2,b3^> & <^b2,b3^> is trivial;

:: ALTCAT_3:th 25
theorem
for b1 being AltGraph
for b2 being Element of the carrier of b1 holds
      b2 is initial(b1)
   iff
      for b3 being Element of the carrier of b1 holds
         ex b4 being Element of <^b2,b3^> st
            b4 in <^b2,b3^> &
             (for b5 being Element of <^b2,b3^>
                   st b5 in <^b2,b3^>
                holds b4 = b5);

:: ALTCAT_3:th 26
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 initial(b1)
   holds b2,b3 are_iso;

:: ALTCAT_3:attrnot 7 => ALTCAT_3:attr 7
definition
  let a1 be AltGraph;
  let a2 be Element of the carrier of a1;
  attr a2 is terminal means
    for b1 being Element of the carrier of a1 holds
       ex b2 being Element of <^b1,a2^> st
          b2 in <^b1,a2^> & <^b1,a2^> is trivial;
end;

:: ALTCAT_3:dfs 10
definiens
  let a1 be AltGraph;
  let a2 be Element of the carrier of a1;
To prove
     a2 is terminal
it is sufficient to prove
  thus for b1 being Element of the carrier of a1 holds
       ex b2 being Element of <^b1,a2^> st
          b2 in <^b1,a2^> & <^b1,a2^> is trivial;

:: ALTCAT_3:def 10
theorem
for b1 being AltGraph
for b2 being Element of the carrier of b1 holds
      b2 is terminal(b1)
   iff
      for b3 being Element of the carrier of b1 holds
         ex b4 being Element of <^b3,b2^> st
            b4 in <^b3,b2^> & <^b3,b2^> is trivial;

:: ALTCAT_3:th 27
theorem
for b1 being AltGraph
for b2 being Element of the carrier of b1 holds
      b2 is terminal(b1)
   iff
      for b3 being Element of the carrier of b1 holds
         ex b4 being Element of <^b3,b2^> st
            b4 in <^b3,b2^> &
             (for b5 being Element of <^b3,b2^>
                   st b5 in <^b3,b2^>
                holds b4 = b5);

:: ALTCAT_3:th 28
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 is terminal(b1)
   holds b2,b3 are_iso;

:: ALTCAT_3:attrnot 8 => ALTCAT_3:attr 8
definition
  let a1 be AltGraph;
  let a2 be Element of the carrier of a1;
  attr a2 is _zero means
    a2 is initial(a1) & a2 is terminal(a1);
end;

:: ALTCAT_3:dfs 11
definiens
  let a1 be AltGraph;
  let a2 be Element of the carrier of a1;
To prove
     a2 is _zero
it is sufficient to prove
  thus a2 is initial(a1) & a2 is terminal(a1);

:: ALTCAT_3:def 11
theorem
for b1 being AltGraph
for b2 being Element of the carrier of b1 holds
      b2 is _zero(b1)
   iff
      b2 is initial(b1) & b2 is terminal(b1);

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

:: ALTCAT_3:attrnot 9 => ALTCAT_3:attr 9
definition
  let a1 be non empty AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
  attr a4 is _zero means
    for b1 being Element of the carrier of a1
       st b1 is _zero(a1)
    for b2 being Element of <^a2,b1^>
    for b3 being Element of <^b1,a3^> holds
       a4 = b3 * b2;
end;

:: ALTCAT_3:dfs 12
definiens
  let a1 be non empty AltCatStr;
  let a2, a3 be Element of the carrier of a1;
  let a4 be Element of <^a2,a3^>;
To prove
     a4 is _zero
it is sufficient to prove
  thus for b1 being Element of the carrier of a1
       st b1 is _zero(a1)
    for b2 being Element of <^a2,b1^>
    for b3 being Element of <^b1,a3^> holds
       a4 = b3 * b2;

:: ALTCAT_3:def 12
theorem
for b1 being non empty AltCatStr
for b2, b3 being Element of the carrier of b1
for b4 being Element of <^b2,b3^> holds
      b4 is _zero(b1, b2, b3)
   iff
      for b5 being Element of the carrier of b1
         st b5 is _zero(b1)
      for b6 being Element of <^b2,b5^>
      for b7 being Element of <^b5,b3^> holds
         b4 = b7 * b6;

:: ALTCAT_3:th 30
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 <^b3,b4^>
      st b5 is _zero(b1, b2, b3) & b6 is _zero(b1, b3, b4)
   holds b6 * b5 is _zero(b1, b2, b4);