Article MSATERM, MML version 4.99.1005

:: MSATERM:funcreg 1
registration
  let a1 be non empty set;
  let a2 be non-empty ManySortedSet of a1;
  let a3 be Element of a1;
  cluster a2 . a3 -> non empty;
end;

:: MSATERM:funcnot 1 => MSATERM:func 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be ManySortedSet of the carrier of a1;
  func A1 -Terms A2 -> Element of bool FinTrees the carrier of DTConMSA a2 equals
    TS DTConMSA a2;
end;

:: MSATERM:def 1
theorem
for b1 being non empty non void ManySortedSign
for b2 being ManySortedSet of the carrier of b1 holds
   b1 -Terms b2 = TS DTConMSA b2;

:: MSATERM:funcreg 2
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  cluster a1 -Terms a2 -> non empty;
end;

:: MSATERM:modenot 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  mode Term of a1,a2 is Element of a1 -Terms a2;
end;

:: MSATERM:funcnot 2 => MSATERM:func 2
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of the OperSymbols of a1;
  redefine func Sym(a3,a2) -> Element of NonTerminals DTConMSA a2;
end;

:: MSATERM:modenot 2 => MSATERM:mode 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of NonTerminals DTConMSA a2;
  mode ArgumentSeq of A3 -> FinSequence of a1 -Terms a2 means
    it is SubtreeSeq of a3;
end;

:: MSATERM:dfs 2
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of NonTerminals DTConMSA a2;
  let a4 be FinSequence of a1 -Terms a2;
To prove
     a4 is ArgumentSeq of a3
it is sufficient to prove
  thus a4 is SubtreeSeq of a3;

:: MSATERM:def 2
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of NonTerminals DTConMSA b2
for b4 being FinSequence of b1 -Terms b2 holds
      b4 is ArgumentSeq of b3
   iff
      b4 is SubtreeSeq of b3;

:: MSATERM:th 1
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being Relation-like Function-like FinSequence-like set holds
      [b3,the carrier of b1] -tree b4 in b1 -Terms b2 &
       b4 is DTree-yielding
   iff
      b4 is ArgumentSeq of Sym(b3,b2);

:: MSATERM:sch 1
scheme MSATERM:sch 1
{F1 -> non empty non void ManySortedSign,
  F2 -> non-empty ManySortedSet of the carrier of F1()}:
for b1 being Element of F1() -Terms F2() holds
   P1[b1]
provided
   for b1 being Element of the carrier of F1()
   for b2 being Element of F2() . b1 holds
      P1[root-tree [b2,b1]]
and
   for b1 being Element of the OperSymbols of F1()
   for b2 being ArgumentSeq of Sym(b1,F2())
         st for b3 being Element of F1() -Terms F2()
                 st b3 in proj2 b2
              holds P1[b3]
      holds P1[[b1,the carrier of F1()] -tree b2];


:: MSATERM:modenot 3
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  mode c-Term of a2,a3 is Element of a1 -Terms ((the Sorts of a2) \/ a3);
end;

:: MSATERM:modenot 4
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be Element of the OperSymbols of a1;
  mode ArgumentSeq of a4,a2,a3 is ArgumentSeq of Sym(a4,(the Sorts of a2) \/ a3);
end;

:: MSATERM:sch 2
scheme MSATERM:sch 2
{F1 -> non empty non void ManySortedSign,
  F2 -> non-empty MSAlgebra over F1(),
  F3 -> non-empty ManySortedSet of the carrier of F1()}:
for b1 being Element of F1() -Terms ((the Sorts of F2()) \/ F3()) holds
   P1[b1]
provided
   for b1 being Element of the carrier of F1()
   for b2 being Element of (the Sorts of F2()) . b1 holds
      P1[root-tree [b2,b1]]
and
   for b1 being Element of the carrier of F1()
   for b2 being Element of F3() . b1 holds
      P1[root-tree [b2,b1]]
and
   for b1 being Element of the OperSymbols of F1()
   for b2 being ArgumentSeq of Sym(b1,(the Sorts of F2()) \/ F3())
         st for b3 being Element of F1() -Terms ((the Sorts of F2()) \/ F3())
                 st b3 in proj2 b2
              holds P1[b3]
      holds P1[(Sym(b1,(the Sorts of F2()) \/ F3())) -tree b2];


:: MSATERM:funcnot 3 => MSATERM:func 3
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of a1 -Terms a2;
  let a4 be Element of proj1 a3;
  redefine func a3 . a4 -> Element of the carrier of DTConMSA a2;
end;

:: MSATERM:condreg 1
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  cluster -> finite (Element of a1 -Terms a2);
end;

:: MSATERM:th 2
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
      st for b4 being Element of the carrier of b1
        for b5 being Element of b2 . b4 holds
           b3 . {} <> [b5,b4]
   holds b3 . {} in [:the OperSymbols of b1,{the carrier of b1}:];

:: MSATERM:th 3
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of b1 -Terms ((the Sorts of b3) \/ b2)
      st (for b5 being Element of the carrier of b1
         for b6 being set
               st b6 in (the Sorts of b3) . b5
            holds b4 . {} <> [b6,b5]) &
         (for b5 being Element of the carrier of b1
         for b6 being Element of b2 . b5 holds
            b4 . {} <> [b6,b5])
   holds b4 . {} in [:the OperSymbols of b1,{the carrier of b1}:];

:: MSATERM:th 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1
for b4 being Element of b2 . b3 holds
   root-tree [b4,b3] is Element of b1 -Terms b2;

:: MSATERM:th 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
for b4 being Element of the carrier of b1
for b5 being Element of b2 . b4
      st b3 . {} = [b5,b4]
   holds b3 = root-tree [b5,b4];

:: MSATERM:th 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of the carrier of b1
for b5 being set
      st b5 in (the Sorts of b3) . b4
   holds root-tree [b5,b4] is Element of b1 -Terms ((the Sorts of b3) \/ b2);

:: MSATERM:th 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of b1 -Terms ((the Sorts of b3) \/ b2)
for b5 being Element of the carrier of b1
for b6 being set
      st b6 in (the Sorts of b3) . b5 & b4 . {} = [b6,b5]
   holds b4 = root-tree [b6,b5];

:: MSATERM:th 8
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of the carrier of b1
for b5 being Element of b2 . b4 holds
   root-tree [b5,b4] is Element of b1 -Terms ((the Sorts of b3) \/ b2);

:: MSATERM:th 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of b1 -Terms ((the Sorts of b3) \/ b2)
for b5 being Element of the carrier of b1
for b6 being Element of b2 . b5
      st b4 . {} = [b6,b5]
   holds b4 = root-tree [b6,b5];

:: MSATERM:th 10
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
for b4 being Element of the OperSymbols of b1
      st b3 . {} = [b4,the carrier of b1]
   holds ex b5 being ArgumentSeq of Sym(b4,b2) st
      b3 = [b4,the carrier of b1] -tree b5;

:: MSATERM:funcnot 4 => MSATERM:func 4
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be Element of the carrier of a1;
  let a5 be Element of (the Sorts of a2) . a4;
  func A5 -term(A2,A3) -> Element of a1 -Terms ((the Sorts of a2) \/ a3) equals
    root-tree [a5,a4];
end;

:: MSATERM:def 3
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being Element of the carrier of b1
for b5 being Element of (the Sorts of b2) . b4 holds
   b5 -term(b2,b3) = root-tree [b5,b4];

:: MSATERM:funcnot 5 => MSATERM:func 5
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be Element of the carrier of a1;
  let a5 be Element of a3 . a4;
  func A5 -term A2 -> Element of a1 -Terms ((the Sorts of a2) \/ a3) equals
    root-tree [a5,a4];
end;

:: MSATERM:def 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being Element of the carrier of b1
for b5 being Element of b3 . b4 holds
   b5 -term b2 = root-tree [b5,b4];

:: MSATERM:funcnot 6 => MSATERM:func 6
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of NonTerminals DTConMSA a2;
  let a4 be ArgumentSeq of a3;
  redefine func a3 -tree a4 -> Element of a1 -Terms a2;
end;

:: MSATERM:sch 3
scheme MSATERM:sch 3
{F1 -> non empty non void ManySortedSign,
  F2 -> non-empty MSAlgebra over F1(),
  F3 -> non-empty ManySortedSet of the carrier of F1()}:
for b1 being Element of F1() -Terms ((the Sorts of F2()) \/ F3()) holds
   P1[b1]
provided
   for b1 being Element of the carrier of F1()
   for b2 being Element of (the Sorts of F2()) . b1 holds
      P1[b2 -term(F2(),F3())]
and
   for b1 being Element of the carrier of F1()
   for b2 being Element of F3() . b1 holds
      P1[b2 -term F2()]
and
   for b1 being Element of the OperSymbols of F1()
   for b2 being ArgumentSeq of Sym(b1,(the Sorts of F2()) \/ F3())
         st for b3 being Element of F1() -Terms ((the Sorts of F2()) \/ F3())
                 st b3 in proj2 b2
              holds P1[b3]
      holds P1[(Sym(b1,(the Sorts of F2()) \/ F3())) -tree b2];


:: MSATERM:th 11
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2 holds
   ex b4 being Element of the carrier of b1 st
      b3 in FreeSort(b2,b4);

:: MSATERM:th 12
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1 holds
   FreeSort(b2,b3) c= b1 -Terms b2;

:: MSATERM:th 13
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
   b1 -Terms b2 = Union FreeSort b2;

:: MSATERM:funcnot 7 => MSATERM:func 7
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of a1 -Terms a2;
  func the_sort_of A3 -> Element of the carrier of a1 means
    a3 in FreeSort(a2,it);
end;

:: MSATERM:def 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
for b4 being Element of the carrier of b1 holds
      b4 = the_sort_of b3
   iff
      b3 in FreeSort(b2,b4);

:: MSATERM:th 14
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
for b4 being Element of the carrier of b1
for b5 being Element of b2 . b4
      st b3 = root-tree [b5,b4]
   holds the_sort_of b3 = b4;

:: MSATERM:th 15
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of b1 -Terms ((the Sorts of b3) \/ b2)
for b5 being Element of the carrier of b1
for b6 being set
      st b6 in (the Sorts of b3) . b5 & b4 = root-tree [b6,b5]
   holds the_sort_of b4 = b5;

:: MSATERM:th 16
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of b1 -Terms ((the Sorts of b3) \/ b2)
for b5 being Element of the carrier of b1
for b6 being Element of b2 . b5
      st b4 = root-tree [b6,b5]
   holds the_sort_of b4 = b5;

:: MSATERM:th 17
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
for b4 being Element of the OperSymbols of b1
      st b3 . {} = [b4,the carrier of b1]
   holds the_sort_of b3 = the_result_sort_of b4;

:: MSATERM:th 18
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty MSAlgebra over b1
for b4 being Element of the carrier of b1
for b5 being Element of (the Sorts of b3) . b4 holds
   the_sort_of (b5 -term(b3,b2)) = b4;

:: MSATERM:th 19
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSAlgebra over b1
for b4 being Element of the carrier of b1
for b5 being Element of b2 . b4 holds
   the_sort_of (b5 -term b3) = b4;

:: MSATERM:th 20
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being ArgumentSeq of Sym(b3,b2) holds
   the_sort_of ((Sym(b3,b2)) -tree b4) = the_result_sort_of b3;

:: MSATERM:th 21
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being FinSequence of b1 -Terms b2 holds
      b4 is ArgumentSeq of Sym(b3,b2)
   iff
      Sym(b3,b2) ==> roots b4;

:: MSATERM:th 22
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being ArgumentSeq of Sym(b3,b2) holds
   len b4 = len the_arity_of b3 &
    dom b4 = dom the_arity_of b3 &
    (for b5 being natural set
          st b5 in dom b4
       holds b4 . b5 is Element of b1 -Terms b2);

:: MSATERM:th 23
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being ArgumentSeq of Sym(b3,b2)
for b5 being natural set
   st b5 in dom b4
for b6 being Element of b1 -Terms b2
      st b6 = b4 . b5
   holds b6 = b4 /. b5 & the_sort_of b6 = (the_arity_of b3) . b5 & the_sort_of b6 = (the_arity_of b3) /. b5;

:: MSATERM:th 24
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being Relation-like Function-like FinSequence-like set
      st (len b4 = len the_arity_of b3 or dom b4 = dom the_arity_of b3) &
         (for b5 being natural set
               st b5 in dom b4
            holds ex b6 being Element of b1 -Terms b2 st
               b6 = b4 . b5 & the_sort_of b6 = (the_arity_of b3) . b5 or for b5 being natural set
               st b5 in dom b4
            holds ex b6 being Element of b1 -Terms b2 st
               b6 = b4 . b5 & the_sort_of b6 = (the_arity_of b3) /. b5)
   holds b4 is ArgumentSeq of Sym(b3,b2);

:: MSATERM:th 25
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being FinSequence of b1 -Terms b2
      st (len b4 = len the_arity_of b3 or dom b4 = dom the_arity_of b3) &
         (for b5 being natural set
            st b5 in dom b4
         for b6 being Element of b1 -Terms b2
               st b6 = b4 . b5
            holds the_sort_of b6 = (the_arity_of b3) . b5 or for b5 being natural set
            st b5 in dom b4
         for b6 being Element of b1 -Terms b2
               st b6 = b4 . b5
            holds the_sort_of b6 = (the_arity_of b3) /. b5)
   holds b4 is ArgumentSeq of Sym(b3,b2);

:: MSATERM:th 26
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty ManySortedSet of the carrier of b1
   st b2 c= b3
for b4 being Element of b1 -Terms b2 holds
   b4 is Element of b1 -Terms b3;

:: MSATERM:th 27
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being Element of b1 -Terms b3 holds
   b4 is Element of b1 -Terms ((the Sorts of b2) \/ b3);

:: MSATERM:modenot 5 => MSATERM:mode 2
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  mode CompoundTerm of A1,A2 -> Element of a1 -Terms a2 means
    it . {} in [:the OperSymbols of a1,{the carrier of a1}:];
end;

:: MSATERM:dfs 6
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of a1 -Terms a2;
To prove
     a3 is CompoundTerm of a1,a2
it is sufficient to prove
  thus a3 . {} in [:the OperSymbols of a1,{the carrier of a1}:];

:: MSATERM:def 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2 holds
      b3 is CompoundTerm of b1,b2
   iff
      b3 . {} in [:the OperSymbols of b1,{the carrier of b1}:];

:: MSATERM:modenot 6 => MSATERM:mode 3
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  mode SetWithCompoundTerm of A1,A2 -> non empty Element of bool (a1 -Terms a2) means
    ex b1 being CompoundTerm of a1,a2 st
       b1 in it;
end;

:: MSATERM:dfs 7
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
To prove
     a3 is SetWithCompoundTerm of a1,a2
it is sufficient to prove
  thus ex b1 being CompoundTerm of a1,a2 st
       b1 in a3;

:: MSATERM:def 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2) holds
      b3 is SetWithCompoundTerm of b1,b2
   iff
      ex b4 being CompoundTerm of b1,b2 st
         b4 in b3;

:: MSATERM:th 28
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
      st b3 is not root
   holds b3 is CompoundTerm of b1,b2;

:: MSATERM:th 29
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
for b4 being Element of proj1 b3 holds
   b3 | b4 is Element of b1 -Terms b2;

:: MSATERM:funcnot 8 => MSATERM:func 8
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be Element of a1 -Terms a2;
  let a4 be Element of proj1 a3;
  redefine func a3 | a4 -> Element of a1 -Terms a2;
end;

:: MSATERM:modenot 7 => MSATERM:mode 4
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be MSAlgebra over a1;
  mode Variables of A2 -> non-empty ManySortedSet of the carrier of a1 means
    it misses the Sorts of a2;
end;

:: MSATERM:dfs 8
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
To prove
     a3 is Variables of a2
it is sufficient to prove
  thus a3 misses the Sorts of a2;

:: MSATERM:def 8
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1 holds
      b3 is Variables of b2
   iff
      b3 misses the Sorts of b2;

:: MSATERM:th 30
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of the carrier of b1
for b5 being set
   st b5 in (the Sorts of b2) . b4
for b6 being Element of b3 . b4 holds
   b5 <> b6;

:: MSATERM:prednot 1 => MSATERM:pred 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be Element of a1 -Terms ((the Sorts of a2) \/ a3);
  let a5 be ManySortedFunction of a3,the Sorts of a2;
  let a6 be Relation-like Function-like finite DecoratedTree-like set;
  pred A6 is_an_evaluation_of A4,A5 means
    proj1 a6 = proj1 a4 &
     (for b1 being Element of proj1 a6 holds
        (for b2 being Element of the carrier of a1
         for b3 being Element of a3 . b2
               st a4 . b1 = [b3,b2]
            holds a6 . b1 = (a5 . b2) . b3) &
         (for b2 being Element of the carrier of a1
         for b3 being Element of (the Sorts of a2) . b2
               st a4 . b1 = [b3,b2]
            holds a6 . b1 = b3) &
         (for b2 being Element of the OperSymbols of a1
               st a4 . b1 = [b2,the carrier of a1]
            holds a6 . b1 = (Den(b2,a2)) . succ(a6,b1)));
end;

:: MSATERM:dfs 9
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be Element of a1 -Terms ((the Sorts of a2) \/ a3);
  let a5 be ManySortedFunction of a3,the Sorts of a2;
  let a6 be Relation-like Function-like finite DecoratedTree-like set;
To prove
     a6 is_an_evaluation_of a4,a5
it is sufficient to prove
  thus proj1 a6 = proj1 a4 &
     (for b1 being Element of proj1 a6 holds
        (for b2 being Element of the carrier of a1
         for b3 being Element of a3 . b2
               st a4 . b1 = [b3,b2]
            holds a6 . b1 = (a5 . b2) . b3) &
         (for b2 being Element of the carrier of a1
         for b3 being Element of (the Sorts of a2) . b2
               st a4 . b1 = [b3,b2]
            holds a6 . b1 = b3) &
         (for b2 being Element of the OperSymbols of a1
               st a4 . b1 = [b2,the carrier of a1]
            holds a6 . b1 = (Den(b2,a2)) . succ(a6,b1)));

:: MSATERM:def 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6 being Relation-like Function-like finite DecoratedTree-like set holds
      b6 is_an_evaluation_of b4,b5
   iff
      proj1 b6 = proj1 b4 &
       (for b7 being Element of proj1 b6 holds
          (for b8 being Element of the carrier of b1
           for b9 being Element of b3 . b8
                 st b4 . b7 = [b9,b8]
              holds b6 . b7 = (b5 . b8) . b9) &
           (for b8 being Element of the carrier of b1
           for b9 being Element of (the Sorts of b2) . b8
                 st b4 . b7 = [b9,b8]
              holds b6 . b7 = b9) &
           (for b8 being Element of the OperSymbols of b1
                 st b4 . b7 = [b8,the carrier of b1]
              holds b6 . b7 = (Den(b8,b2)) . succ(b6,b7)));

:: MSATERM:th 31
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6 being Element of the carrier of b1
for b7 being Element of (the Sorts of b2) . b6
      st b4 = root-tree [b7,b6]
   holds root-tree b7 is_an_evaluation_of b4,b5;

:: MSATERM:th 32
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6 being Element of the carrier of b1
for b7 being Element of b3 . b6
      st b4 = root-tree [b7,b6]
   holds root-tree ((b5 . b6) . b7) is_an_evaluation_of b4,b5;

:: MSATERM:th 33
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of the OperSymbols of b1
for b6 being ArgumentSeq of Sym(b5,(the Sorts of b2) \/ b3)
for b7 being Relation-like Function-like FinSequence-like DTree-yielding set
      st len b7 = len b6 &
         (for b8 being natural set
         for b9 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
               st b8 in dom b6 & b9 = b6 . b8
            holds ex b10 being Relation-like Function-like finite DecoratedTree-like set st
               b10 = b7 . b8 & b10 is_an_evaluation_of b9,b4)
   holds ex b8 being Relation-like Function-like finite DecoratedTree-like set st
      b8 = ((Den(b5,b2)) . roots b7) -tree b7 &
       b8 is_an_evaluation_of (Sym(b5,(the Sorts of b2) \/ b3)) -tree b6,b4;

:: MSATERM:th 34
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b6 being Relation-like Function-like finite DecoratedTree-like set
   st b6 is_an_evaluation_of b5,b4
for b7 being Element of proj1 b5
for b8 being Element of proj1 b6
      st b8 = b7
   holds b6 | b8 is_an_evaluation_of b5 | b7,b4;

:: MSATERM:th 35
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of the OperSymbols of b1
for b6 being ArgumentSeq of Sym(b5,(the Sorts of b2) \/ b3)
for b7 being Relation-like Function-like finite DecoratedTree-like set
      st b7 is_an_evaluation_of (Sym(b5,(the Sorts of b2) \/ b3)) -tree b6,b4
   holds ex b8 being Relation-like Function-like FinSequence-like DTree-yielding set st
      len b8 = len b6 &
       b7 = ((Den(b5,b2)) . roots b8) -tree b8 &
       (for b9 being natural set
       for b10 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
             st b9 in dom b6 & b10 = b6 . b9
          holds ex b11 being Relation-like Function-like finite DecoratedTree-like set st
             b11 = b8 . b9 & b11 is_an_evaluation_of b10,b4);

:: MSATERM:th 36
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2 holds
   ex b6 being Relation-like Function-like finite DecoratedTree-like set st
      b6 is_an_evaluation_of b4,b5;

:: MSATERM:th 37
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6, b7 being Relation-like Function-like finite DecoratedTree-like set
      st b6 is_an_evaluation_of b4,b5 & b7 is_an_evaluation_of b4,b5
   holds b6 = b7;

:: MSATERM:th 38
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6 being Relation-like Function-like finite DecoratedTree-like set
      st b6 is_an_evaluation_of b4,b5
   holds b6 . {} in (the Sorts of b2) . the_sort_of b4;

:: MSATERM:funcnot 9 => MSATERM:func 9
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be Variables of a2;
  let a4 be Element of a1 -Terms ((the Sorts of a2) \/ a3);
  let a5 be ManySortedFunction of a3,the Sorts of a2;
  func A4 @ A5 -> Element of (the Sorts of a2) . the_sort_of a4 means
    ex b1 being Relation-like Function-like finite DecoratedTree-like set st
       b1 is_an_evaluation_of a4,a5 & it = b1 . {};
end;

:: MSATERM:def 10
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6 being Element of (the Sorts of b2) . the_sort_of b4 holds
      b6 = b4 @ b5
   iff
      ex b7 being Relation-like Function-like finite DecoratedTree-like set st
         b7 is_an_evaluation_of b4,b5 & b6 = b7 . {};

:: MSATERM:th 39
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b6 being Relation-like Function-like finite DecoratedTree-like set
      st b6 is_an_evaluation_of b5,b4
   holds b5 @ b4 = b6 . {};

:: MSATERM:th 40
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
for b6 being Relation-like Function-like finite DecoratedTree-like set
   st b6 is_an_evaluation_of b5,b4
for b7 being Element of proj1 b5 holds
   b6 . b7 = (b5 | b7) @ b4;

:: MSATERM:th 41
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of the carrier of b1
for b6 being Element of (the Sorts of b2) . b5 holds
   (b6 -term(b2,b3)) @ b4 = b6;

:: MSATERM:th 42
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of the carrier of b1
for b6 being Element of b3 . b5 holds
   (b6 -term b2) @ b4 = (b4 . b5) . b6;

:: MSATERM:th 43
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being ManySortedFunction of b3,the Sorts of b2
for b5 being Element of the OperSymbols of b1
for b6 being ArgumentSeq of Sym(b5,(the Sorts of b2) \/ b3)
for b7 being Relation-like Function-like FinSequence-like set
      st len b7 = len b6 &
         (for b8 being natural set
            st b8 in dom b6
         for b9 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
               st b9 = b6 . b8
            holds b7 . b8 = b9 @ b4)
   holds ((Sym(b5,(the Sorts of b2) \/ b3)) -tree b6) @ b4 = (Den(b5,b2)) . b7;