Article ENDALG, MML version 4.99.1005

:: ENDALG:funcnot 1 => ENDALG:func 1
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  func UAEnd A1 -> FUNCTION_DOMAIN of the carrier of a1,the carrier of a1 means
    for b1 being Function-like quasi_total Relation of the carrier of a1,the carrier of a1 holds
          b1 in it
       iff
          b1 is_homomorphism a1,a1;
end;

:: ENDALG:def 1
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being FUNCTION_DOMAIN of the carrier of b1,the carrier of b1 holds
      b2 = UAEnd b1
   iff
      for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1 holds
            b3 in b2
         iff
            b3 is_homomorphism b1,b1;

:: ENDALG:th 1
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   UAEnd b1 c= Funcs(the carrier of b1,the carrier of b1);

:: ENDALG:th 3
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   id the carrier of b1 in UAEnd b1;

:: ENDALG:th 4
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2, b3 being Element of UAEnd b1 holds
b2 * b3 in UAEnd b1;

:: ENDALG:funcnot 2 => ENDALG:func 2
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  func UAEndComp A1 -> Function-like quasi_total Relation of [:UAEnd a1,UAEnd a1:],UAEnd a1 means
    for b1, b2 being Element of UAEnd a1 holds
    it .(b1,b2) = b2 * b1;
end;

:: ENDALG:def 2
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Function-like quasi_total Relation of [:UAEnd b1,UAEnd b1:],UAEnd b1 holds
      b2 = UAEndComp b1
   iff
      for b3, b4 being Element of UAEnd b1 holds
      b2 .(b3,b4) = b4 * b3;

:: ENDALG:funcnot 3 => ENDALG:func 3
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  func UAEndMonoid A1 -> strict multLoopStr means
    the carrier of it = UAEnd a1 & the multF of it = UAEndComp a1 & 1. it = id the carrier of a1;
end;

:: ENDALG:def 3
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being strict multLoopStr holds
      b2 = UAEndMonoid b1
   iff
      the carrier of b2 = UAEnd b1 & the multF of b2 = UAEndComp b1 & 1. b2 = id the carrier of b1;

:: ENDALG:funcreg 1
registration
  let a1 be non empty partial quasi_total non-empty UAStr;
  cluster UAEndMonoid a1 -> non empty strict;
end;

:: ENDALG:funcreg 2
registration
  let a1 be non empty partial quasi_total non-empty UAStr;
  cluster UAEndMonoid a1 -> strict associative well-unital;
end;

:: ENDALG:th 5
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2, b3 being Element of the carrier of UAEndMonoid b1
for b4, b5 being Element of UAEnd b1
      st b2 = b4 & b3 = b5
   holds b2 * b3 = b5 * b4;

:: ENDALG:th 6
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   id the carrier of b1 = 1_ UAEndMonoid b1;

:: ENDALG:funcnot 4 => ENDALG:func 4
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  func MSAEnd A2 -> MSFunctionSet of the Sorts of a2,the Sorts of a2 means
    (for b1 being Element of it holds
        b1 is ManySortedFunction of the Sorts of a2,the Sorts of a2) &
     (for b1 being ManySortedFunction of the Sorts of a2,the Sorts of a2 holds
           b1 in it
        iff
           b1 is_homomorphism a2,a2);
end;

:: ENDALG:def 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being MSFunctionSet of the Sorts of b2,the Sorts of b2 holds
      b3 = MSAEnd b2
   iff
      (for b4 being Element of b3 holds
          b4 is ManySortedFunction of the Sorts of b2,the Sorts of b2) &
       (for b4 being ManySortedFunction of the Sorts of b2,the Sorts of b2 holds
             b4 in b3
          iff
             b4 is_homomorphism b2,b2);

:: ENDALG:th 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   MSAEnd b2 c= product MSFuncs(the Sorts of b2,the Sorts of b2);

:: ENDALG:th 10
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   id the Sorts of b2 in MSAEnd b2;

:: ENDALG:th 11
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3, b4 being Element of MSAEnd b2 holds
b3 ** b4 in MSAEnd b2;

:: ENDALG:th 12
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being ManySortedFunction of the Sorts of MSAlg b1,the Sorts of MSAlg b1
for b3 being Element of UAEnd b1
      st b2 = {0} --> b3
   holds b2 in MSAEnd MSAlg b1;

:: ENDALG:funcnot 5 => ENDALG:func 5
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  func MSAEndComp A2 -> Function-like quasi_total Relation of [:MSAEnd a2,MSAEnd a2:],MSAEnd a2 means
    for b1, b2 being Element of MSAEnd a2 holds
    it .(b1,b2) = b2 ** b1;
end;

:: ENDALG:def 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Function-like quasi_total Relation of [:MSAEnd b2,MSAEnd b2:],MSAEnd b2 holds
      b3 = MSAEndComp b2
   iff
      for b4, b5 being Element of MSAEnd b2 holds
      b3 .(b4,b5) = b5 ** b4;

:: ENDALG:funcnot 6 => ENDALG:func 6
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  func MSAEndMonoid A2 -> strict multLoopStr means
    the carrier of it = MSAEnd a2 & the multF of it = MSAEndComp a2 & 1. it = id the Sorts of a2;
end;

:: ENDALG:def 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being strict multLoopStr holds
      b3 = MSAEndMonoid b2
   iff
      the carrier of b3 = MSAEnd b2 & the multF of b3 = MSAEndComp b2 & 1. b3 = id the Sorts of b2;

:: ENDALG:funcreg 3
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  cluster MSAEndMonoid a2 -> non empty strict;
end;

:: ENDALG:funcreg 4
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  cluster MSAEndMonoid a2 -> strict associative well-unital;
end;

:: ENDALG:th 13
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3, b4 being Element of the carrier of MSAEndMonoid b2
for b5, b6 being Element of MSAEnd b2
      st b3 = b5 & b4 = b6
   holds b3 * b4 = b6 ** b5;

:: ENDALG:th 14
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   id the Sorts of b2 = 1_ MSAEndMonoid b2;

:: ENDALG:th 16
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Element of UAEnd b1 holds
   {0} --> b2 is ManySortedFunction of the Sorts of MSAlg b1,the Sorts of MSAlg b1;

:: ENDALG:exreg 1
registration
  cluster non empty left_unital multLoopStr;
end;

:: ENDALG:exreg 2
registration
  let a1, a2 be non empty well-unital multLoopStr;
  cluster Relation-like Function-like non empty quasi_total unity-preserving multiplicative total Relation of the carrier of a1,the carrier of a2;
end;

:: ENDALG:modenot 1
definition
  let a1, a2 be non empty well-unital multLoopStr;
  mode Homomorphism of a1,a2 is Function-like quasi_total unity-preserving multiplicative Relation of the carrier of a1,the carrier of a2;
end;

:: ENDALG:prednot 1 => ENDALG:pred 1
definition
  let a1, a2 be non empty left_unital multLoopStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_monomorphism means
    a3 is one-to-one;
end;

:: ENDALG:dfs 7
definiens
  let a1, a2 be non empty left_unital multLoopStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_monomorphism
it is sufficient to prove
  thus a3 is one-to-one;

:: ENDALG:def 9
theorem
for b1, b2 being non empty left_unital multLoopStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_monomorphism
   iff
      b3 is one-to-one;

:: ENDALG:prednot 2 => ENDALG:pred 2
definition
  let a1, a2 be non empty left_unital multLoopStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_epimorphism means
    proj2 a3 = the carrier of a2;
end;

:: ENDALG:dfs 8
definiens
  let a1, a2 be non empty left_unital multLoopStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_epimorphism
it is sufficient to prove
  thus proj2 a3 = the carrier of a2;

:: ENDALG:def 10
theorem
for b1, b2 being non empty left_unital multLoopStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_epimorphism
   iff
      proj2 b3 = the carrier of b2;

:: ENDALG:prednot 3 => ENDALG:pred 3
definition
  let a1, a2 be non empty left_unital multLoopStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_isomorphism means
    a3 is_epimorphism & a3 is_monomorphism;
end;

:: ENDALG:dfs 9
definiens
  let a1, a2 be non empty left_unital multLoopStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_isomorphism
it is sufficient to prove
  thus a3 is_epimorphism & a3 is_monomorphism;

:: ENDALG:def 11
theorem
for b1, b2 being non empty left_unital multLoopStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_isomorphism
   iff
      b3 is_epimorphism & b3 is_monomorphism;

:: ENDALG:th 17
theorem
for b1 being non empty well-unital multLoopStr holds
   id the carrier of b1 is Function-like quasi_total unity-preserving multiplicative Relation of the carrier of b1,the carrier of b1;

:: ENDALG:prednot 4 => ENDALG:pred 4
definition
  let a1, a2 be non empty well-unital multLoopStr;
  pred A1,A2 are_isomorphic means
    ex b1 being Function-like quasi_total unity-preserving multiplicative Relation of the carrier of a1,the carrier of a2 st
       b1 is_isomorphism;
  reflexivity;
::  for a1 being non empty well-unital multLoopStr holds
::     a1,a1 are_isomorphic;
end;

:: ENDALG:dfs 10
definiens
  let a1, a2 be non empty well-unital multLoopStr;
To prove
     a1,a2 are_isomorphic
it is sufficient to prove
  thus ex b1 being Function-like quasi_total unity-preserving multiplicative Relation of the carrier of a1,the carrier of a2 st
       b1 is_isomorphism;

:: ENDALG:def 12
theorem
for b1, b2 being non empty well-unital multLoopStr holds
   b1,b2 are_isomorphic
iff
   ex b3 being Function-like quasi_total unity-preserving multiplicative Relation of the carrier of b1,the carrier of b2 st
      b3 is_isomorphism;

:: ENDALG:th 18
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Relation-like Function-like set
      st proj1 b2 = UAEnd b1 &
         (for b3 being set
               st b3 in UAEnd b1
            holds b2 . b3 = {0} --> b3)
   holds b2 is Function-like quasi_total unity-preserving multiplicative Relation of the carrier of UAEndMonoid b1,the carrier of MSAEndMonoid MSAlg b1;

:: ENDALG:th 19
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Function-like quasi_total unity-preserving multiplicative Relation of the carrier of UAEndMonoid b1,the carrier of MSAEndMonoid MSAlg b1
      st for b3 being set
              st b3 in UAEnd b1
           holds b2 . b3 = {0} --> b3
   holds b2 is_isomorphism;

:: ENDALG:th 20
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   UAEndMonoid b1,MSAEndMonoid MSAlg b1 are_isomorphic;