Article AUTALG_1, MML version 4.99.1005

:: AUTALG_1:th 1
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   id the carrier of b1 is_isomorphism b1,b1;

:: AUTALG_1:funcnot 1 => AUTALG_1:func 1
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  func UAAut A1 -> FUNCTION_DOMAIN of the carrier of a1,the carrier of a1 means
    (for b1 being Element of it holds
        b1 is Function-like quasi_total Relation of the carrier of a1,the carrier of a1) &
     (for b1 being Function-like quasi_total Relation of the carrier of a1,the carrier of a1 holds
           b1 in it
        iff
           b1 is_isomorphism a1,a1);
end;

:: AUTALG_1: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 = UAAut b1
   iff
      (for b3 being Element of b2 holds
          b3 is Function-like quasi_total Relation of the carrier of b1,the carrier of b1) &
       (for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1 holds
             b3 in b2
          iff
             b3 is_isomorphism b1,b1);

:: AUTALG_1:th 2
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   UAAut b1 c= Funcs(the carrier of b1,the carrier of b1);

:: AUTALG_1:th 4
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   id the carrier of b1 in UAAut b1;

:: AUTALG_1:th 5
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2, b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1
      st b2 is Element of UAAut b1 & b3 = b2 "
   holds b3 is_isomorphism b1,b1;

:: AUTALG_1:th 6
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Element of UAAut b1 holds
   b2 " in UAAut b1;

:: AUTALG_1:th 7
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2, b3 being Element of UAAut b1 holds
b2 * b3 in UAAut b1;

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

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

:: AUTALG_1:funcnot 3 => AUTALG_1:func 3
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  func UAAutGroup A1 -> non empty Group-like associative multMagma equals
    multMagma(#UAAut a1,UAAutComp a1#);
end;

:: AUTALG_1:def 3
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   UAAutGroup b1 = multMagma(#UAAut b1,UAAutComp b1#);

:: AUTALG_1:funcreg 1
registration
  let a1 be non empty partial quasi_total non-empty UAStr;
  cluster UAAutGroup a1 -> non empty strict Group-like associative;
end;

:: AUTALG_1:th 8
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2, b3 being Element of the carrier of UAAutGroup b1
for b4, b5 being Element of UAAut b1
      st b2 = b4 & b3 = b5
   holds b2 * b3 = b5 * b4;

:: AUTALG_1:th 9
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   id the carrier of b1 = 1_ UAAutGroup b1;

:: AUTALG_1:th 10
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Element of UAAut b1
for b3 being Element of the carrier of UAAutGroup b1
      st b2 = b3
   holds b2 " = b3 ";

:: AUTALG_1:th 11
theorem
for b1 being set
for b2, b3, b4 being ManySortedSet of b1
      st b2 is_transformable_to b3 & b3 is_transformable_to b4
   holds b2 is_transformable_to b4;

:: AUTALG_1:th 12
theorem
for b1 being set
for b2 being ManySortedSet of {b1} holds
   b2 = b1 .--> (b2 . b1);

:: AUTALG_1:th 13
theorem
for b1, b2, b3 being Relation-like Function-like Function-yielding set holds
(b3 ** b2) ** b1 = b3 ** (b2 ** b1);

:: AUTALG_1:th 14
theorem
for b1 being set
for b2, b3 being non-empty ManySortedSet of b1
for b4 being ManySortedFunction of b2,b3
      st b4 is "1-1" & b4 is "onto"(b1, b2, b3)
   holds b4 "" is "1-1" & b4 "" is "onto"(b1, b3, b2);

:: AUTALG_1:th 15
theorem
for b1 being set
for b2, b3 being non-empty ManySortedSet of b1
for b4 being ManySortedFunction of b2,b3
      st b4 is "1-1" & b4 is "onto"(b1, b2, b3)
   holds b4 "" "" = b4;

:: AUTALG_1:th 16
theorem
for b1, b2 being Relation-like Function-like Function-yielding set
      st b1 is "1-1" & b2 is "1-1"
   holds b2 ** b1 is "1-1";

:: AUTALG_1:th 17
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3, b4 being non-empty ManySortedSet of b1
for b5 being ManySortedFunction of b2,b3
for b6 being ManySortedFunction of b3,b4
      st b5 is "onto"(b1, b2, b3) & b6 is "onto"(b1, b3, b4)
   holds b6 ** b5 is "onto"(b1, b2, b4);

:: AUTALG_1:th 18
theorem
for b1 being set
for b2, b3, b4 being non-empty ManySortedSet of b1
for b5 being ManySortedFunction of b2,b3
for b6 being ManySortedFunction of b3,b4
      st b5 is "1-1" & b5 is "onto"(b1, b2, b3) & b6 is "1-1" & b6 is "onto"(b1, b3, b4)
   holds (b6 ** b5) "" = b5 "" ** (b6 "");

:: AUTALG_1:th 19
theorem
for b1 being set
for b2, b3 being non-empty ManySortedSet of b1
for b4 being ManySortedFunction of b2,b3
for b5 being ManySortedFunction of b3,b2
      st b4 is "1-1" & b4 is "onto"(b1, b2, b3) & b5 ** b4 = id b2
   holds b5 = b4 "";

:: AUTALG_1:th 21
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
   st b2 is_transformable_to b3
for b4 being set
      st b4 in product MSFuncs(b2,b3)
   holds b4 is ManySortedFunction of b2,b3;

:: AUTALG_1:th 22
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
   st b2 is_transformable_to b3
for b4 being ManySortedFunction of b2,b3 holds
   b4 in product MSFuncs(b2,b3);

:: AUTALG_1:th 23
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
      st b2 is_transformable_to b3
   holds MSFuncs(b2,b3) is non-empty;

:: AUTALG_1:modenot 1 => AUTALG_1:mode 1
definition
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  assume a2 is_transformable_to a3;
  mode MSFunctionSet of A2,A3 -> non empty set means
    for b1 being set
          st b1 in it
       holds b1 is ManySortedFunction of a2,a3;
end;

:: AUTALG_1:dfs 4
definiens
  let a1 be set;
  let a2, a3 be ManySortedSet of a1;
  let a4 be non empty set;
To prove
     a4 is MSFunctionSet of a2,a3
it is sufficient to prove
thus a2 is_transformable_to a3;
  thus for b1 being set
          st b1 in a4
       holds b1 is ManySortedFunction of a2,a3;

:: AUTALG_1:def 6
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
   st b2 is_transformable_to b3
for b4 being non empty set holds
      b4 is MSFunctionSet of b2,b3
   iff
      for b5 being set
            st b5 in b4
         holds b5 is ManySortedFunction of b2,b3;

:: AUTALG_1:funcreg 2
registration
  let a1 be set;
  let a2 be ManySortedSet of a1;
  cluster MSFuncs(a2,a2) -> non-empty;
end;

:: AUTALG_1:modenot 2
definition
  let a1 be non empty non void ManySortedSign;
  let a2, a3 be non-empty MSAlgebra over a1;
  mode MSFunctionSet of a2,a3 is MSFunctionSet of the Sorts of a2,the Sorts of a3;
end;

:: AUTALG_1:exreg 1
registration
  let a1 be set;
  let a2 be ManySortedSet of a1;
  cluster non empty MSFunctionSet of a2,a2;
end;

:: AUTALG_1:modenot 3 => AUTALG_1:mode 2
definition
  let a1 be set;
  let a2 be ManySortedSet of a1;
  let a3 be non empty MSFunctionSet of a2,a2;
  redefine mode Element of a3 -> ManySortedFunction of a2,a2;
end;

:: AUTALG_1:th 24
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   id b2 is "onto"(b1, b2, b2);

:: AUTALG_1:th 25
theorem
for b1 being set
for b2 being ManySortedSet of b1 holds
   id b2 is "1-1";

:: AUTALG_1:th 27
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   id the Sorts of b2 in product MSFuncs(the Sorts of b2,the Sorts of b2);

:: AUTALG_1:funcnot 4 => AUTALG_1:func 4
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  func MSAAut 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_isomorphism a2,a2);
end;

:: AUTALG_1:def 7
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 = MSAAut 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_isomorphism b2,b2);

:: AUTALG_1:th 29
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of MSAAut b2 holds
   b3 in product MSFuncs(the Sorts of b2,the Sorts of b2);

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

:: AUTALG_1:th 31
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   id the Sorts of b2 in MSAAut b2;

:: AUTALG_1:th 32
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of MSAAut b2 holds
   b3 "" in MSAAut b2;

:: AUTALG_1:th 33
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3, b4 being Element of MSAAut b2 holds
b3 ** b4 in MSAAut b2;

:: AUTALG_1:th 34
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 UAAut b1
      st b2 = 0 .--> b3
   holds b2 in MSAAut MSAlg b1;

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

:: AUTALG_1:def 8
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 [:MSAAut b2,MSAAut b2:],MSAAut b2 holds
      b3 = MSAAutComp b2
   iff
      for b4, b5 being Element of MSAAut b2 holds
      b3 .(b4,b5) = b5 ** b4;

:: AUTALG_1:funcnot 6 => AUTALG_1:func 6
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  func MSAAutGroup A2 -> non empty Group-like associative multMagma equals
    multMagma(#MSAAut a2,MSAAutComp a2#);
end;

:: AUTALG_1:def 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   MSAAutGroup b2 = multMagma(#MSAAut b2,MSAAutComp b2#);

:: AUTALG_1:funcreg 3
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  cluster MSAAutGroup a2 -> non empty strict Group-like associative;
end;

:: AUTALG_1:th 35
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 MSAAutGroup b2
for b5, b6 being Element of MSAAut b2
      st b3 = b5 & b4 = b6
   holds b3 * b4 = b6 ** b5;

:: AUTALG_1:th 36
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   id the Sorts of b2 = 1_ MSAAutGroup b2;

:: AUTALG_1:th 37
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of MSAAut b2
for b4 being Element of the carrier of MSAAutGroup b2
      st b3 = b4
   holds b3 "" = b4 ";

:: AUTALG_1:th 38
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
   st b1,b2 are_similar
for b3 being ManySortedFunction of the Sorts of MSAlg b1,the Sorts of (MSAlg b2) Over MSSign b1 holds
   b3 . 0 is Function-like quasi_total Relation of the carrier of b1,the carrier of b2;

:: AUTALG_1:th 39
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Element of UAAut b1 holds
   0 .--> b2 is ManySortedFunction of the Sorts of MSAlg b1,the Sorts of MSAlg b1;

:: AUTALG_1:th 40
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Relation-like Function-like set
      st proj1 b2 = UAAut b1 &
         (for b3 being set
               st b3 in UAAut b1
            holds b2 . b3 = 0 .--> b3)
   holds b2 is Function-like quasi_total multiplicative Relation of the carrier of UAAutGroup b1,the carrier of MSAAutGroup MSAlg b1;

:: AUTALG_1:th 41
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Function-like quasi_total multiplicative Relation of the carrier of UAAutGroup b1,the carrier of MSAAutGroup MSAlg b1
      st for b3 being set
              st b3 in UAAut b1
           holds b2 . b3 = 0 .--> b3
   holds b2 is being_isomorphism(UAAutGroup b1, MSAAutGroup MSAlg b1);

:: AUTALG_1:th 42
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   UAAutGroup b1,MSAAutGroup MSAlg b1 are_isomorphic;