Article ALG_1, MML version 4.99.1005

:: ALG_1:th 1
theorem
for b1, b2 being non empty set
for b3 being FinSequence of b1
for b4 being Function-like quasi_total Relation of b1,b2 holds
   dom (b4 * b3) = dom b3 &
    len (b4 * b3) = len b3 &
    (for b5 being natural set
          st b5 in dom (b4 * b3)
       holds (b4 * b3) . b5 = b4 . (b3 . b5));

:: ALG_1:th 2
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being non empty Element of bool the carrier of b1
      st b2 = the carrier of b1
   holds Opers(b1,b2) = the charact of b1;

:: ALG_1:th 3
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
   b3 * <*> the carrier of b1 = <*> the carrier of b2;

:: ALG_1:th 4
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being FinSequence of the carrier of b1 holds
   (id the carrier of b1) * b2 = b2;

:: ALG_1:th 5
theorem
for b1, b2, b3 being non empty partial quasi_total non-empty UAStr
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
for b6 being FinSequence of the carrier of b1 holds
   b5 * (b4 * b6) = (b5 * b4) * b6;

:: ALG_1:prednot 1 => ALG_1:pred 1
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_homomorphism A1,A2 means
    a1,a2 are_similar &
     (for b1 being Element of NAT
        st b1 in dom the charact of a1
     for b2 being Element of Operations a1
     for b3 being Element of Operations a2
        st b2 = (the charact of a1) . b1 & b3 = (the charact of a2) . b1
     for b4 being FinSequence of the carrier of a1
           st b4 in dom b2
        holds a3 . (b2 . b4) = b3 . (a3 * b4));
end;

:: ALG_1:dfs 1
definiens
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_homomorphism a1,a2
it is sufficient to prove
  thus a1,a2 are_similar &
     (for b1 being Element of NAT
        st b1 in dom the charact of a1
     for b2 being Element of Operations a1
     for b3 being Element of Operations a2
        st b2 = (the charact of a1) . b1 & b3 = (the charact of a2) . b1
     for b4 being FinSequence of the carrier of a1
           st b4 in dom b2
        holds a3 . (b2 . b4) = b3 . (a3 * b4));

:: ALG_1:def 1
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_homomorphism b1,b2
   iff
      b1,b2 are_similar &
       (for b4 being Element of NAT
          st b4 in dom the charact of b1
       for b5 being Element of Operations b1
       for b6 being Element of Operations b2
          st b5 = (the charact of b1) . b4 & b6 = (the charact of b2) . b4
       for b7 being FinSequence of the carrier of b1
             st b7 in dom b5
          holds b3 . (b5 . b7) = b6 . (b3 * b7));

:: ALG_1:prednot 2 => ALG_1:pred 2
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_monomorphism A1,A2 means
    a3 is_homomorphism a1,a2 & a3 is one-to-one;
end;

:: ALG_1:dfs 2
definiens
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_monomorphism a1,a2
it is sufficient to prove
  thus a3 is_homomorphism a1,a2 & a3 is one-to-one;

:: ALG_1:def 2
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_monomorphism b1,b2
   iff
      b3 is_homomorphism b1,b2 & b3 is one-to-one;

:: ALG_1:prednot 3 => ALG_1:pred 3
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_epimorphism A1,A2 means
    a3 is_homomorphism a1,a2 & rng a3 = the carrier of a2;
end;

:: ALG_1:dfs 3
definiens
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_epimorphism a1,a2
it is sufficient to prove
  thus a3 is_homomorphism a1,a2 & rng a3 = the carrier of a2;

:: ALG_1:def 3
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_epimorphism b1,b2
   iff
      b3 is_homomorphism b1,b2 & rng b3 = the carrier of b2;

:: ALG_1:prednot 4 => ALG_1:pred 4
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  pred A3 is_isomorphism A1,A2 means
    a3 is_monomorphism a1,a2 & a3 is_epimorphism a1,a2;
end;

:: ALG_1:dfs 4
definiens
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
To prove
     a3 is_isomorphism a1,a2
it is sufficient to prove
  thus a3 is_monomorphism a1,a2 & a3 is_epimorphism a1,a2;

:: ALG_1:def 4
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_isomorphism b1,b2
   iff
      b3 is_monomorphism b1,b2 & b3 is_epimorphism b1,b2;

:: ALG_1:prednot 5 => ALG_1:pred 5
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  pred A1,A2 are_isomorphic means
    ex b1 being Function-like quasi_total Relation of the carrier of a1,the carrier of a2 st
       b1 is_isomorphism a1,a2;
end;

:: ALG_1:dfs 5
definiens
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
To prove
     a1,a2 are_isomorphic
it is sufficient to prove
  thus ex b1 being Function-like quasi_total Relation of the carrier of a1,the carrier of a2 st
       b1 is_isomorphism a1,a2;

:: ALG_1:def 5
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr holds
   b1,b2 are_isomorphic
iff
   ex b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 st
      b3 is_isomorphism b1,b2;

:: ALG_1:th 6
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   id the carrier of b1 is_homomorphism b1,b1;

:: ALG_1:th 7
theorem
for b1, b2, b3 being non empty partial quasi_total non-empty UAStr
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
      st b4 is_homomorphism b1,b2 & b5 is_homomorphism b2,b3
   holds b5 * b4 is_homomorphism b1,b3;

:: ALG_1:th 8
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2 holds
      b3 is_isomorphism b1,b2
   iff
      b3 is_homomorphism b1,b2 & rng b3 = the carrier of b2 & b3 is one-to-one;

:: ALG_1:th 9
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
      st b3 is_isomorphism b1,b2
   holds dom b3 = the carrier of b1 & rng b3 = the carrier of b2;

:: ALG_1:th 10
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b1
      st b3 is_isomorphism b1,b2 & b4 = b3 "
   holds b4 is_homomorphism b2,b1;

:: ALG_1:th 11
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b1
      st b3 is_isomorphism b1,b2 & b4 = b3 "
   holds b4 is_isomorphism b2,b1;

:: ALG_1:th 12
theorem
for b1, b2, b3 being non empty partial quasi_total non-empty UAStr
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
      st b4 is_isomorphism b1,b2 & b5 is_isomorphism b2,b3
   holds b5 * b4 is_isomorphism b1,b3;

:: ALG_1:th 13
theorem
for b1 being non empty partial quasi_total non-empty UAStr holds
   b1,b1 are_isomorphic;

:: ALG_1:th 14
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
      st b1,b2 are_isomorphic
   holds b2,b1 are_isomorphic;

:: ALG_1:th 15
theorem
for b1, b2, b3 being non empty partial quasi_total non-empty UAStr
      st b1,b2 are_isomorphic & b2,b3 are_isomorphic
   holds b1,b3 are_isomorphic;

:: ALG_1:funcnot 1 => ALG_1:func 1
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  assume a3 is_homomorphism a1,a2;
  func Image A3 -> strict SubAlgebra of a2 means
    the carrier of it = a3 .: the carrier of a1;
end;

:: ALG_1:def 6
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
   st b3 is_homomorphism b1,b2
for b4 being strict SubAlgebra of b2 holds
      b4 = Image b3
   iff
      the carrier of b4 = b3 .: the carrier of b1;

:: ALG_1:th 16
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
      st b3 is_homomorphism b1,b2
   holds rng b3 = the carrier of Image b3;

:: ALG_1:th 17
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being non empty strict partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
      st b3 is_homomorphism b1,b2
   holds    b3 is_epimorphism b1,b2
   iff
      Image b3 = b2;

:: ALG_1:modenot 1
definition
  let a1 be 1-sorted;
  mode Relation of a1 is Relation of the carrier of a1,the carrier of a1;
end;

:: ALG_1:modenot 2
definition
  let a1 be 1-sorted;
  mode Equivalence_Relation of a1 is symmetric transitive total Relation of the carrier of a1,the carrier of a1;
end;

:: ALG_1:funcnot 2 => ALG_1:func 2
definition
  let a1 be non empty set;
  let a2 be Relation of a1,a1;
  func ExtendRel A2 -> Relation of a1 *,a1 * means
    for b1, b2 being FinSequence of a1 holds
       [b1,b2] in it
    iff
       len b1 = len b2 &
        (for b3 being Element of NAT
              st b3 in dom b1
           holds [b1 . b3,b2 . b3] in a2);
end;

:: ALG_1:def 9
theorem
for b1 being non empty set
for b2 being Relation of b1,b1
for b3 being Relation of b1 *,b1 * holds
      b3 = ExtendRel b2
   iff
      for b4, b5 being FinSequence of b1 holds
         [b4,b5] in b3
      iff
         len b4 = len b5 &
          (for b6 being Element of NAT
                st b6 in dom b4
             holds [b4 . b6,b5 . b6] in b2);

:: ALG_1:th 18
theorem
for b1 being non empty set holds
   ExtendRel id b1 = id (b1 *);

:: ALG_1:modenot 3 => ALG_1:mode 1
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  mode Congruence of A1 -> symmetric transitive total Relation of the carrier of a1,the carrier of a1 means
    for b1 being Element of NAT
    for b2 being Element of Operations a1
       st b1 in dom the charact of a1 & b2 = (the charact of a1) . b1
    for b3, b4 being FinSequence of the carrier of a1
          st b3 in dom b2 & b4 in dom b2 & [b3,b4] in ExtendRel it
       holds [b2 . b3,b2 . b4] in it;
end;

:: ALG_1:dfs 8
definiens
  let a1 be non empty partial quasi_total non-empty UAStr;
  let a2 be symmetric transitive total Relation of the carrier of a1,the carrier of a1;
To prove
     a2 is Congruence of a1
it is sufficient to prove
  thus for b1 being Element of NAT
    for b2 being Element of Operations a1
       st b1 in dom the charact of a1 & b2 = (the charact of a1) . b1
    for b3, b4 being FinSequence of the carrier of a1
          st b3 in dom b2 & b4 in dom b2 & [b3,b4] in ExtendRel a2
       holds [b2 . b3,b2 . b4] in a2;

:: ALG_1:def 10
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being symmetric transitive total Relation of the carrier of b1,the carrier of b1 holds
      b2 is Congruence of b1
   iff
      for b3 being Element of NAT
      for b4 being Element of Operations b1
         st b3 in dom the charact of b1 & b4 = (the charact of b1) . b3
      for b5, b6 being FinSequence of the carrier of b1
            st b5 in dom b4 & b6 in dom b4 & [b5,b6] in ExtendRel b2
         holds [b4 . b5,b4 . b6] in b2;

:: ALG_1:prednot 6 => ALG_1:pred 6
definition
  let a1 be non empty set;
  let a2 be symmetric transitive total Relation of a1,a1;
  let a3 be FinSequence of Class a2;
  let a4 be FinSequence of a1;
  pred A4 is_representatives_FS A3 means
    len a4 = len a3 &
     (for b1 being Element of NAT
           st b1 in dom a4
        holds Class(a2,a4 . b1) = a3 . b1);
end;

:: ALG_1:dfs 9
definiens
  let a1 be non empty set;
  let a2 be symmetric transitive total Relation of a1,a1;
  let a3 be FinSequence of Class a2;
  let a4 be FinSequence of a1;
To prove
     a4 is_representatives_FS a3
it is sufficient to prove
  thus len a4 = len a3 &
     (for b1 being Element of NAT
           st b1 in dom a4
        holds Class(a2,a4 . b1) = a3 . b1);

:: ALG_1:def 11
theorem
for b1 being non empty set
for b2 being symmetric transitive total Relation of b1,b1
for b3 being FinSequence of Class b2
for b4 being FinSequence of b1 holds
      b4 is_representatives_FS b3
   iff
      len b4 = len b3 &
       (for b5 being Element of NAT
             st b5 in dom b4
          holds Class(b2,b4 . b5) = b3 . b5);

:: ALG_1:th 19
theorem
for b1 being non empty set
for b2 being symmetric transitive total Relation of b1,b1
for b3 being FinSequence of Class b2 holds
   ex b4 being FinSequence of b1 st
      b4 is_representatives_FS b3;

:: ALG_1:funcnot 3 => ALG_1:func 3
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  let a2 be Congruence of a1;
  let a3 be Element of Operations a1;
  func QuotOp(A3,A2) -> non empty Function-like homogeneous quasi_total Relation of (Class a2) *,Class a2 means
    dom it = (arity a3) -tuples_on Class a2 &
     (for b1 being FinSequence of Class a2
        st b1 in dom it
     for b2 being FinSequence of the carrier of a1
           st b2 is_representatives_FS b1
        holds it . b1 = Class(a2,a3 . b2));
end;

:: ALG_1:def 12
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1
for b3 being Element of Operations b1
for b4 being non empty Function-like homogeneous quasi_total Relation of (Class b2) *,Class b2 holds
      b4 = QuotOp(b3,b2)
   iff
      dom b4 = (arity b3) -tuples_on Class b2 &
       (for b5 being FinSequence of Class b2
          st b5 in dom b4
       for b6 being FinSequence of the carrier of b1
             st b6 is_representatives_FS b5
          holds b4 . b5 = Class(b2,b3 . b6));

:: ALG_1:funcnot 4 => ALG_1:func 4
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  let a2 be Congruence of a1;
  func QuotOpSeq(A1,A2) -> FinSequence of PFuncs((Class a2) *,Class a2) means
    len it = len the charact of a1 &
     (for b1 being Element of NAT
        st b1 in dom it
     for b2 being Element of Operations a1
           st (the charact of a1) . b1 = b2
        holds it . b1 = QuotOp(b2,a2));
end;

:: ALG_1:def 13
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1
for b3 being FinSequence of PFuncs((Class b2) *,Class b2) holds
      b3 = QuotOpSeq(b1,b2)
   iff
      len b3 = len the charact of b1 &
       (for b4 being Element of NAT
          st b4 in dom b3
       for b5 being Element of Operations b1
             st (the charact of b1) . b4 = b5
          holds b3 . b4 = QuotOp(b5,b2));

:: ALG_1:th 20
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1 holds
   UAStr(#Class b2,QuotOpSeq(b1,b2)#) is non empty strict partial quasi_total non-empty UAStr;

:: ALG_1:funcnot 5 => ALG_1:func 5
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  let a2 be Congruence of a1;
  func QuotUnivAlg(A1,A2) -> non empty strict partial quasi_total non-empty UAStr equals
    UAStr(#Class a2,QuotOpSeq(a1,a2)#);
end;

:: ALG_1:def 14
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1 holds
   QuotUnivAlg(b1,b2) = UAStr(#Class b2,QuotOpSeq(b1,b2)#);

:: ALG_1:funcnot 6 => ALG_1:func 6
definition
  let a1 be non empty partial quasi_total non-empty UAStr;
  let a2 be Congruence of a1;
  func Nat_Hom(A1,A2) -> Function-like quasi_total Relation of the carrier of a1,the carrier of QuotUnivAlg(a1,a2) means
    for b1 being Element of the carrier of a1 holds
       it . b1 = Class(a2,b1);
end;

:: ALG_1:def 15
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of QuotUnivAlg(b1,b2) holds
      b3 = Nat_Hom(b1,b2)
   iff
      for b4 being Element of the carrier of b1 holds
         b3 . b4 = Class(b2,b4);

:: ALG_1:th 21
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1 holds
   Nat_Hom(b1,b2) is_homomorphism b1,QuotUnivAlg(b1,b2);

:: ALG_1:th 22
theorem
for b1 being non empty partial quasi_total non-empty UAStr
for b2 being Congruence of b1 holds
   Nat_Hom(b1,b2) is_epimorphism b1,QuotUnivAlg(b1,b2);

:: ALG_1:funcnot 7 => ALG_1:func 7
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  assume a3 is_homomorphism a1,a2;
  func Cng A3 -> Congruence of a1 means
    for b1, b2 being Element of the carrier of a1 holds
       [b1,b2] in it
    iff
       a3 . b1 = a3 . b2;
end;

:: ALG_1:def 16
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
   st b3 is_homomorphism b1,b2
for b4 being Congruence of b1 holds
      b4 = Cng b3
   iff
      for b5, b6 being Element of the carrier of b1 holds
         [b5,b6] in b4
      iff
         b3 . b5 = b3 . b6;

:: ALG_1:funcnot 8 => ALG_1:func 8
definition
  let a1, a2 be non empty partial quasi_total non-empty UAStr;
  let a3 be Function-like quasi_total Relation of the carrier of a1,the carrier of a2;
  assume a3 is_homomorphism a1,a2;
  func HomQuot A3 -> Function-like quasi_total Relation of the carrier of QuotUnivAlg(a1,Cng a3),the carrier of a2 means
    for b1 being Element of the carrier of a1 holds
       it . Class(Cng a3,b1) = a3 . b1;
end;

:: ALG_1:def 17
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
   st b3 is_homomorphism b1,b2
for b4 being Function-like quasi_total Relation of the carrier of QuotUnivAlg(b1,Cng b3),the carrier of b2 holds
      b4 = HomQuot b3
   iff
      for b5 being Element of the carrier of b1 holds
         b4 . Class(Cng b3,b5) = b3 . b5;

:: ALG_1:th 23
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
      st b3 is_homomorphism b1,b2
   holds HomQuot b3 is_homomorphism QuotUnivAlg(b1,Cng b3),b2 & HomQuot b3 is_monomorphism QuotUnivAlg(b1,Cng b3),b2;

:: ALG_1:th 24
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
      st b3 is_epimorphism b1,b2
   holds HomQuot b3 is_isomorphism QuotUnivAlg(b1,Cng b3),b2;

:: ALG_1:th 25
theorem
for b1, b2 being non empty partial quasi_total non-empty UAStr
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
      st b3 is_epimorphism b1,b2
   holds QuotUnivAlg(b1,Cng b3),b2 are_isomorphic;