Article ALGSPEC1, MML version 4.99.1005

:: ALGSPEC1:th 1
theorem
for b1, b2, b3 being Relation-like Function-like set
      st (proj1 b1) /\ proj1 b2 c= proj1 b3
   holds (b1 +* b2) +* b3 = (b2 +* b1) +* b3;

:: ALGSPEC1:th 2
theorem
for b1, b2, b3 being Relation-like Function-like set
      st b1 c= b2 & (proj2 b3) /\ proj1 b2 c= proj1 b1
   holds b3 * b2 = b3 * b1;

:: ALGSPEC1:th 3
theorem
for b1, b2, b3 being Relation-like Function-like set
      st proj1 b1 c= proj2 b2 & proj1 b1 misses proj2 b3 & b2 .: proj1 b3 misses proj1 b1
   holds (b2 +* b3) * b1 = b2 * b1;

:: ALGSPEC1:th 4
theorem
for b1, b2, b3, b4 being Relation-like Function-like set
      st b1 tolerates b2 & b3 tolerates b4
   holds b3 * b1 tolerates b4 * b2;

:: ALGSPEC1:th 5
theorem
for b1, b2, b3, b4 being non empty set
for b5 being Function-like quasi_total Relation of b1,b3
for b6 being Function-like quasi_total Relation of b2,b4
      st b5 c= b6
   holds b5 * c= b6 *;

:: ALGSPEC1:th 6
theorem
for b1, b2, b3, b4 being non empty set
for b5 being Function-like quasi_total Relation of b1,b3
for b6 being Function-like quasi_total Relation of b2,b4
      st b5 tolerates b6
   holds b5 * tolerates b6 *;

:: ALGSPEC1:funcnot 1 => ALGSPEC1:func 1
definition
  let a1 be set;
  let a2 be Relation-like Function-like set;
  func A1 -indexing A2 -> ManySortedSet of a1 equals
    (id a1) +* (a2 | a1);
end;

:: ALGSPEC1:def 1
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
   b1 -indexing b2 = (id b1) +* (b2 | b1);

:: ALGSPEC1:th 7
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
   proj2 (b1 -indexing b2) = (b1 \ proj1 b2) \/ (b2 .: b1);

:: ALGSPEC1:th 8
theorem
for b1 being non empty set
for b2 being Relation-like Function-like set
for b3 being Element of b1 holds
   (b1 -indexing b2) . b3 = ((id b1) +* b2) . b3;

:: ALGSPEC1:th 9
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st b2 in b1
   holds (b2 in proj1 b3 implies (b1 -indexing b3) . b2 = b3 . b2) &
    (b2 in proj1 b3 or (b1 -indexing b3) . b2 = b2);

:: ALGSPEC1:th 10
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st proj1 b2 = b1
   holds b1 -indexing b2 = b2;

:: ALGSPEC1:th 11
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
   b1 -indexing (b1 -indexing b2) = b1 -indexing b2;

:: ALGSPEC1:th 12
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
   b1 -indexing ((id b1) +* b2) = b1 -indexing b2;

:: ALGSPEC1:th 13
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b2 c= id b1
   holds b1 -indexing b2 = id b1;

:: ALGSPEC1:th 14
theorem
for b1 being set holds
   b1 -indexing {} = id b1;

:: ALGSPEC1:th 16
theorem
for b1 being set
for b2 being Relation-like Function-like set
      st b1 c= proj1 b2
   holds b1 -indexing b2 = b2 | b1;

:: ALGSPEC1:th 17
theorem
for b1 being Relation-like Function-like set holds
   {} -indexing b1 = {};

:: ALGSPEC1:th 18
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
      st b1 c= b2
   holds (b2 -indexing b3) | b1 = b1 -indexing b3;

:: ALGSPEC1:th 19
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
   (b1 \/ b2) -indexing b3 = (b1 -indexing b3) +* (b2 -indexing b3);

:: ALGSPEC1:th 20
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
   b1 -indexing b3 tolerates b2 -indexing b3;

:: ALGSPEC1:th 21
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set holds
   (b1 \/ b2) -indexing b3 = (b1 -indexing b3) \/ (b2 -indexing b3);

:: ALGSPEC1:th 22
theorem
for b1 being non empty set
for b2, b3 being Relation-like Function-like set
      st proj2 b3 c= b1
   holds b3 * (b1 -indexing b2) = b3 * ((id b1) +* b2);

:: ALGSPEC1:th 23
theorem
for b1, b2 being Relation-like Function-like set
   st proj1 b1 misses proj1 b2 & proj2 b2 misses proj1 b1
for b3 being set holds
   (b3 -indexing b2) * b1 = b1 | b3;

:: ALGSPEC1:modenot 1 => ALGSPEC1:mode 1
definition
  let a1 be Relation-like Function-like set;
  mode rng-retract of A1 -> Relation-like Function-like set means
    proj1 it = proj2 a1 & it * a1 = id proj2 a1;
end;

:: ALGSPEC1:dfs 2
definiens
  let a1, a2 be Relation-like Function-like set;
To prove
     a2 is rng-retract of a1
it is sufficient to prove
  thus proj1 a2 = proj2 a1 & a2 * a1 = id proj2 a1;

:: ALGSPEC1:def 2
theorem
for b1, b2 being Relation-like Function-like set holds
   b2 is rng-retract of b1
iff
   proj1 b2 = proj2 b1 & b2 * b1 = id proj2 b1;

:: ALGSPEC1:th 24
theorem
for b1 being Relation-like Function-like set
for b2 being rng-retract of b1 holds
   proj2 b2 c= proj1 b1;

:: ALGSPEC1:th 25
theorem
for b1 being Relation-like Function-like set
for b2 being rng-retract of b1
for b3 being set
      st b3 in proj2 b1
   holds b2 . b3 in proj1 b1 & b1 . (b2 . b3) = b3;

:: ALGSPEC1:th 26
theorem
for b1 being Relation-like Function-like set
      st b1 is one-to-one
   holds b1 " is rng-retract of b1;

:: ALGSPEC1:th 27
theorem
for b1 being Relation-like Function-like set
   st b1 is one-to-one
for b2 being rng-retract of b1 holds
   b2 = b1 ";

:: ALGSPEC1:th 28
theorem
for b1, b2 being Relation-like Function-like set
   st b1 tolerates b2
for b3 being rng-retract of b1
for b4 being rng-retract of b2 holds
   b3 +* b4 is rng-retract of b1 +* b2;

:: ALGSPEC1:th 29
theorem
for b1, b2 being Relation-like Function-like set
   st b1 c= b2
for b3 being rng-retract of b1 holds
   ex b4 being rng-retract of b2 st
      b3 c= b4;

:: ALGSPEC1:prednot 1 => ALGSPEC1:pred 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2, a3 be Relation-like Function-like set;
  pred A2,A3 form_a_replacement_in A1 means
    for b1, b2 being Element of the OperSymbols of a1
          st ((id the OperSymbols of a1) +* a3) . b1 = ((id the OperSymbols of a1) +* a3) . b2
       holds (the_arity_of b1) * ((id the carrier of a1) +* a2) = (the_arity_of b2) * ((id the carrier of a1) +* a2) &
        ((id the carrier of a1) +* a2) . the_result_sort_of b1 = ((id the carrier of a1) +* a2) . the_result_sort_of b2;
end;

:: ALGSPEC1:dfs 3
definiens
  let a1 be non empty non void ManySortedSign;
  let a2, a3 be Relation-like Function-like set;
To prove
     a2,a3 form_a_replacement_in a1
it is sufficient to prove
  thus for b1, b2 being Element of the OperSymbols of a1
          st ((id the OperSymbols of a1) +* a3) . b1 = ((id the OperSymbols of a1) +* a3) . b2
       holds (the_arity_of b1) * ((id the carrier of a1) +* a2) = (the_arity_of b2) * ((id the carrier of a1) +* a2) &
        ((id the carrier of a1) +* a2) . the_result_sort_of b1 = ((id the carrier of a1) +* a2) . the_result_sort_of b2;

:: ALGSPEC1:def 3
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being Relation-like Function-like set holds
   b2,b3 form_a_replacement_in b1
iff
   for b4, b5 being Element of the OperSymbols of b1
         st ((id the OperSymbols of b1) +* b3) . b4 = ((id the OperSymbols of b1) +* b3) . b5
      holds (the_arity_of b4) * ((id the carrier of b1) +* b2) = (the_arity_of b5) * ((id the carrier of b1) +* b2) &
       ((id the carrier of b1) +* b2) . the_result_sort_of b4 = ((id the carrier of b1) +* b2) . the_result_sort_of b5;

:: ALGSPEC1:th 30
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being Relation-like Function-like set holds
   b2,b3 form_a_replacement_in b1
iff
   for b4, b5 being Element of the OperSymbols of b1
         st ((the OperSymbols of b1) -indexing b3) . b4 = ((the OperSymbols of b1) -indexing b3) . b5
      holds (the_arity_of b4) * ((the carrier of b1) -indexing b2) = (the_arity_of b5) * ((the carrier of b1) -indexing b2) &
       ((the carrier of b1) -indexing b2) . the_result_sort_of b4 = ((the carrier of b1) -indexing b2) . the_result_sort_of b5;

:: ALGSPEC1:th 31
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being Relation-like Function-like set holds
   b2,b3 form_a_replacement_in b1
iff
   (the carrier of b1) -indexing b2,(the OperSymbols of b1) -indexing b3 form_a_replacement_in b1;

:: ALGSPEC1:th 32
theorem
for b1, b2 being non void feasible ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b3,b4 form_morphism_between b1,b2
   holds b3,b4 form_a_replacement_in b1;

:: ALGSPEC1:th 33
theorem
for b1 being non void feasible ManySortedSign
for b2 being Relation-like Function-like set holds
   b2,{} form_a_replacement_in b1;

:: ALGSPEC1:th 34
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st b2 is one-to-one & (the OperSymbols of b1) /\ proj2 b2 c= proj1 b2
   holds b3,b2 form_a_replacement_in b1;

:: ALGSPEC1:th 35
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st b2 is one-to-one & proj2 b2 misses the OperSymbols of b1
   holds b3,b2 form_a_replacement_in b1;

:: ALGSPEC1:funcreg 1
registration
  let a1 be set;
  let a2 be non empty set;
  let a3 be Function-like quasi_total Relation of a2,a1 *;
  let a4 be Function-like quasi_total Relation of a2,a1;
  cluster ManySortedSign(#a1,a2,a3,a4#) -> strict non void;
end;

:: ALGSPEC1:funcnot 2 => ALGSPEC1:func 2
definition
  let a1 be non empty non void ManySortedSign;
  let a2, a3 be Relation-like Function-like set;
  assume a2,a3 form_a_replacement_in a1;
  func A1 with-replacement(A2,A3) -> non empty strict non void ManySortedSign means
    (the carrier of a1) -indexing a2,(the OperSymbols of a1) -indexing a3 form_morphism_between a1,it &
     the carrier of it = proj2 ((the carrier of a1) -indexing a2) &
     the OperSymbols of it = proj2 ((the OperSymbols of a1) -indexing a3);
end;

:: ALGSPEC1:def 4
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being Relation-like Function-like set
   st b2,b3 form_a_replacement_in b1
for b4 being non empty strict non void ManySortedSign holds
      b4 = b1 with-replacement(b2,b3)
   iff
      (the carrier of b1) -indexing b2,(the OperSymbols of b1) -indexing b3 form_morphism_between b1,b4 &
       the carrier of b4 = proj2 ((the carrier of b1) -indexing b2) &
       the OperSymbols of b4 = proj2 ((the OperSymbols of b1) -indexing b3);

:: ALGSPEC1:th 36
theorem
for b1, b2 being non void feasible ManySortedSign
for b3 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
for b4 being Relation-like Function-like set
      st b3,b4 form_morphism_between b1,b2
   holds b3 * * the Arity of b1 = b4 * the Arity of b2;

:: ALGSPEC1:th 37
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st b2,b3 form_a_replacement_in b1
   holds (the carrier of b1) -indexing b2 is Function-like quasi_total Relation of the carrier of b1,the carrier of b1 with-replacement(b2,b3);

:: ALGSPEC1:th 38
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
   st b2,b3 form_a_replacement_in b1
for b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1 with-replacement(b2,b3)
   st b4 = (the carrier of b1) -indexing b2
for b5 being rng-retract of (the OperSymbols of b1) -indexing b3 holds
   the Arity of b1 with-replacement(b2,b3) = b5 * (b4 * * the Arity of b1);

:: ALGSPEC1:th 39
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
   st b2,b3 form_a_replacement_in b1
for b4 being rng-retract of (the OperSymbols of b1) -indexing b3 holds
   the ResultSort of b1 with-replacement(b2,b3) = b4 * (((the carrier of b1) -indexing b2) * the ResultSort of b1);

:: ALGSPEC1:th 40
theorem
for b1, b2 being non void feasible ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b3,b4 form_morphism_between b1,b2
   holds b1 with-replacement(b3,b4) is Subsignature of b2;

:: ALGSPEC1:th 41
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set holds
   b2,b3 form_a_replacement_in b1
iff
   (the carrier of b1) -indexing b2,(the OperSymbols of b1) -indexing b3 form_morphism_between b1,b1 with-replacement(b2,b3);

:: ALGSPEC1:th 42
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st proj1 b2 c= the carrier of b1 & proj1 b3 c= the OperSymbols of b1 & b2,b3 form_a_replacement_in b1
   holds (id the carrier of b1) +* b2,(id the OperSymbols of b1) +* b3 form_morphism_between b1,b1 with-replacement(b2,b3);

:: ALGSPEC1:th 43
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st proj1 b2 = the carrier of b1 & proj1 b3 = the OperSymbols of b1 & b2,b3 form_a_replacement_in b1
   holds b2,b3 form_morphism_between b1,b1 with-replacement(b2,b3);

:: ALGSPEC1:th 44
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st b2,b3 form_a_replacement_in b1
   holds b1 with-replacement((the carrier of b1) -indexing b2,b3) = b1 with-replacement(b2,b3);

:: ALGSPEC1:th 45
theorem
for b1 being non void feasible ManySortedSign
for b2, b3 being Relation-like Function-like set
      st b2,b3 form_a_replacement_in b1
   holds b1 with-replacement(b2,(the OperSymbols of b1) -indexing b3) = b1 with-replacement(b2,b3);

:: ALGSPEC1:modenot 2 => ALGSPEC1:mode 2
definition
  let a1 be feasible ManySortedSign;
  mode Extension of A1 -> feasible ManySortedSign means
    a1 is Subsignature of it;
end;

:: ALGSPEC1:dfs 5
definiens
  let a1, a2 be feasible ManySortedSign;
To prove
     a2 is Extension of a1
it is sufficient to prove
  thus a1 is Subsignature of a2;

:: ALGSPEC1:def 5
theorem
for b1, b2 being feasible ManySortedSign holds
   b2 is Extension of b1
iff
   b1 is Subsignature of b2;

:: ALGSPEC1:th 47
theorem
for b1 being feasible ManySortedSign holds
   b1 is Extension of b1;

:: ALGSPEC1:th 48
theorem
for b1 being feasible ManySortedSign
for b2 being Extension of b1
for b3 being Extension of b2 holds
   b3 is Extension of b1;

:: ALGSPEC1:th 49
theorem
for b1, b2 being non empty feasible ManySortedSign
      st b1 tolerates b2
   holds b1 +* b2 is Extension of b1;

:: ALGSPEC1:th 50
theorem
for b1, b2 being non empty feasible ManySortedSign holds
b1 +* b2 is Extension of b2;

:: ALGSPEC1:th 51
theorem
for b1, b2, b3 being non empty ManySortedSign
for b4, b5, b6, b7 being Relation-like Function-like set
      st b4 tolerates b6 & b4,b5 form_morphism_between b1,b3 & b6,b7 form_morphism_between b2,b3
   holds b4 +* b6,b5 +* b7 form_morphism_between b1 +* b2,b3;

:: ALGSPEC1:th 52
theorem
for b1, b2, b3 being non empty feasible ManySortedSign holds
   b3 is Extension of b1 & b3 is Extension of b2
iff
   b1 tolerates b2 & b3 is Extension of b1 +* b2;

:: ALGSPEC1:condreg 1
registration
  let a1 be non empty feasible ManySortedSign;
  cluster -> non empty (Extension of a1);
end;

:: ALGSPEC1:condreg 2
registration
  let a1 be non void feasible ManySortedSign;
  cluster -> non void (Extension of a1);
end;

:: ALGSPEC1:th 53
theorem
for b1, b2 being feasible ManySortedSign
      st b1 is empty
   holds b2 is Extension of b1;

:: ALGSPEC1:exreg 1
registration
  let a1 be feasible ManySortedSign;
  cluster non empty strict non void feasible Extension of a1;
end;

:: ALGSPEC1:th 54
theorem
for b1, b2 being Relation-like Function-like set
for b3 being non void feasible ManySortedSign
for b4 being Extension of b3
      st b1,b2 form_a_replacement_in b4
   holds b1,b2 form_a_replacement_in b3;

:: ALGSPEC1:th 55
theorem
for b1, b2 being Relation-like Function-like set
for b3 being non void feasible ManySortedSign
for b4 being Extension of b3
      st b1,b2 form_a_replacement_in b4
   holds b4 with-replacement(b1,b2) is Extension of b3 with-replacement(b1,b2);

:: ALGSPEC1:th 56
theorem
for b1, b2 being non void feasible ManySortedSign
   st b1 tolerates b2
for b3, b4 being Relation-like Function-like set
      st b3,b4 form_a_replacement_in b1 +* b2
   holds (b1 +* b2) with-replacement(b3,b4) = (b1 with-replacement(b3,b4)) +* (b2 with-replacement(b3,b4));

:: ALGSPEC1:modenot 3 => ALGSPEC1:mode 3
definition
  mode Algebra means
    ex b1 being non void feasible ManySortedSign st
       it is feasible MSAlgebra over b1;
end;

:: ALGSPEC1:dfs 6
definiens
  let a1 be set;
To prove
     a1 is Algebra
it is sufficient to prove
  thus ex b1 being non void feasible ManySortedSign st
       a1 is feasible MSAlgebra over b1;

:: ALGSPEC1:def 6
theorem
for b1 being set holds
      b1 is Algebra
   iff
      ex b2 being non void feasible ManySortedSign st
         b1 is feasible MSAlgebra over b2;

:: ALGSPEC1:modenot 4 => ALGSPEC1:mode 4
definition
  let a1 be feasible ManySortedSign;
  mode Algebra of A1 -> Algebra means
    ex b1 being non void Extension of a1 st
       it is feasible MSAlgebra over b1;
end;

:: ALGSPEC1:dfs 7
definiens
  let a1 be feasible ManySortedSign;
  let a2 be Algebra;
To prove
     a2 is Algebra of a1
it is sufficient to prove
  thus ex b1 being non void Extension of a1 st
       a2 is feasible MSAlgebra over b1;

:: ALGSPEC1:def 7
theorem
for b1 being feasible ManySortedSign
for b2 being Algebra holds
      b2 is Algebra of b1
   iff
      ex b3 being non void Extension of b1 st
         b2 is feasible MSAlgebra over b3;

:: ALGSPEC1:th 57
theorem
for b1 being non void feasible ManySortedSign
for b2 being feasible MSAlgebra over b1 holds
   b2 is Algebra of b1;

:: ALGSPEC1:th 58
theorem
for b1 being feasible ManySortedSign
for b2 being Extension of b1
for b3 being Algebra of b2 holds
   b3 is Algebra of b1;

:: ALGSPEC1:th 59
theorem
for b1 being feasible ManySortedSign
for b2 being non empty feasible ManySortedSign
for b3 being MSAlgebra over b2
      st b3 is Algebra of b1
   holds the carrier of b1 c= the carrier of b2 & the OperSymbols of b1 c= the OperSymbols of b2;

:: ALGSPEC1:th 60
theorem
for b1 being non void feasible ManySortedSign
for b2 being non empty feasible ManySortedSign
for b3 being MSAlgebra over b2
   st b3 is Algebra of b1
for b4 being Element of the OperSymbols of b1 holds
   (the Charact of b3) . b4 is Function-like quasi_total Relation of (the Sorts of b3) # . the_arity_of b4,(the Sorts of b3) . the_result_sort_of b4;

:: ALGSPEC1:th 61
theorem
for b1 being non empty feasible ManySortedSign
for b2 being Algebra of b1
for b3 being non empty ManySortedSign
      st b2 is MSAlgebra over b3
   holds b2 is MSAlgebra over b3 +* b1;

:: ALGSPEC1:th 62
theorem
for b1, b2 being non empty feasible ManySortedSign
for b3 being MSAlgebra over b1
      st b3 is MSAlgebra over b2
   holds the carrier of b1 = the carrier of b2 & the OperSymbols of b1 = the OperSymbols of b2;

:: ALGSPEC1:th 63
theorem
for b1 being non void feasible ManySortedSign
for b2 being non-empty disjoint_valued MSAlgebra over b1 holds
   the Sorts of b2 is one-to-one;

:: ALGSPEC1:th 64
theorem
for b1 being non void feasible ManySortedSign
for b2 being disjoint_valued MSAlgebra over b1
for b3, b4 being Element of proj2 the Sorts of b2
      st b3 <> b4
   holds b3 misses b4;

:: ALGSPEC1:th 65
theorem
for b1, b2 being non void feasible ManySortedSign
for b3 being non-empty disjoint_valued MSAlgebra over b1
      st b3 is MSAlgebra over b2
   holds ManySortedSign(#the carrier of b1,the OperSymbols of b1,the Arity of b1,the ResultSort of b1#) = ManySortedSign(#the carrier of b2,the OperSymbols of b2,the Arity of b2,the ResultSort of b2#);

:: ALGSPEC1:th 66
theorem
for b1, b2 being non void feasible ManySortedSign
for b3 being non-empty disjoint_valued MSAlgebra over b1
      st b3 is Algebra of b2
   holds b1 is Extension of b2;