Article OSAFREE, MML version 4.99.1005
:: OSAFREE:modenot 1 => OSAFREE:mode 1
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be order-sorted MSAlgebra over a1;
mode OSGeneratorSet of A2 -> ManySortedSubset of the Sorts of a2 means
for b1 being OSSubset of a2
st b1 = OSCl it
holds the Sorts of GenOSAlg b1 = the Sorts of a2;
end;
:: OSAFREE:dfs 1
definiens
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be order-sorted MSAlgebra over a1;
let a3 be ManySortedSubset of the Sorts of a2;
To prove
a3 is OSGeneratorSet of a2
it is sufficient to prove
thus for b1 being OSSubset of a2
st b1 = OSCl a3
holds the Sorts of GenOSAlg b1 = the Sorts of a2;
:: OSAFREE:def 1
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being order-sorted MSAlgebra over b1
for b3 being ManySortedSubset of the Sorts of b2 holds
b3 is OSGeneratorSet of b2
iff
for b4 being OSSubset of b2
st b4 = OSCl b3
holds the Sorts of GenOSAlg b4 = the Sorts of b2;
:: OSAFREE:th 1
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being strict non-empty order-sorted MSAlgebra over b1
for b3 being ManySortedSubset of the Sorts of b2 holds
b3 is OSGeneratorSet of b2
iff
for b4 being OSSubset of b2
st b4 = OSCl b3
holds GenOSAlg b4 = b2;
:: OSAFREE:attrnot 1 => OSAFREE:attr 1
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be order-sorted monotone MSAlgebra over a1;
let a3 be OSGeneratorSet of a2;
attr a3 is osfree means
for b1 being non-empty order-sorted monotone MSAlgebra over a1
for b2 being ManySortedFunction of a3,the Sorts of b1 holds
ex b3 being ManySortedFunction of the Sorts of a2,the Sorts of b1 st
b3 is_homomorphism a2,b1 & b3 is order-sorted(a1) & b3 || a3 = b2;
end;
:: OSAFREE:dfs 2
definiens
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be order-sorted monotone MSAlgebra over a1;
let a3 be OSGeneratorSet of a2;
To prove
a3 is osfree
it is sufficient to prove
thus for b1 being non-empty order-sorted monotone MSAlgebra over a1
for b2 being ManySortedFunction of a3,the Sorts of b1 holds
ex b3 being ManySortedFunction of the Sorts of a2,the Sorts of b1 st
b3 is_homomorphism a2,b1 & b3 is order-sorted(a1) & b3 || a3 = b2;
:: OSAFREE:def 2
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being order-sorted monotone MSAlgebra over b1
for b3 being OSGeneratorSet of b2 holds
b3 is osfree(b1, b2)
iff
for b4 being non-empty order-sorted monotone MSAlgebra over b1
for b5 being ManySortedFunction of b3,the Sorts of b4 holds
ex b6 being ManySortedFunction of the Sorts of b2,the Sorts of b4 st
b6 is_homomorphism b2,b4 & b6 is order-sorted(b1) & b6 || b3 = b5;
:: OSAFREE:attrnot 2 => OSAFREE:attr 2
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be order-sorted monotone MSAlgebra over a1;
attr a2 is osfree means
ex b1 being OSGeneratorSet of a2 st
b1 is osfree(a1, a2);
end;
:: OSAFREE:dfs 3
definiens
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be order-sorted monotone MSAlgebra over a1;
To prove
a2 is osfree
it is sufficient to prove
thus ex b1 being OSGeneratorSet of a2 st
b1 is osfree(a1, a2);
:: OSAFREE:def 3
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being order-sorted monotone MSAlgebra over b1 holds
b2 is osfree(b1)
iff
ex b3 being OSGeneratorSet of b2 st
b3 is osfree(b1, b2);
:: OSAFREE:funcnot 1 => OSAFREE:func 1
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be ManySortedSet of the carrier of a1;
func OSREL A2 -> Relation of [:the OperSymbols of a1,{the carrier of a1}:] \/ Union coprod a2,([:the OperSymbols of a1,{the carrier of a1}:] \/ Union coprod a2) * means
for b1 being Element of [:the OperSymbols of a1,{the carrier of a1}:] \/ Union coprod a2
for b2 being Element of ([:the OperSymbols of a1,{the carrier of a1}:] \/ Union coprod a2) * holds
[b1,b2] in it
iff
b1 in [:the OperSymbols of a1,{the carrier of a1}:] &
(for b3 being Element of the OperSymbols of a1
st [b3,the carrier of a1] = b1
holds len b2 = len the_arity_of b3 &
(for b4 being set
st b4 in dom b2
holds (b2 . b4 in [:the OperSymbols of a1,{the carrier of a1}:] implies for b5 being Element of the OperSymbols of a1
st [b5,the carrier of a1] = b2 . b4
holds the_result_sort_of b5 <= (the_arity_of b3) /. b4) &
(b2 . b4 in Union coprod a2 implies ex b5 being Element of the carrier of a1 st
b5 <= (the_arity_of b3) /. b4 & b2 . b4 in coprod(b5,a2))));
end;
:: OSAFREE:def 4
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being ManySortedSet of the carrier of b1
for b3 being Relation of [:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2,([:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2) * holds
b3 = OSREL b2
iff
for b4 being Element of [:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2
for b5 being Element of ([:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2) * holds
[b4,b5] in b3
iff
b4 in [:the OperSymbols of b1,{the carrier of b1}:] &
(for b6 being Element of the OperSymbols of b1
st [b6,the carrier of b1] = b4
holds len b5 = len the_arity_of b6 &
(for b7 being set
st b7 in dom b5
holds (b5 . b7 in [:the OperSymbols of b1,{the carrier of b1}:] implies for b8 being Element of the OperSymbols of b1
st [b8,the carrier of b1] = b5 . b7
holds the_result_sort_of b8 <= (the_arity_of b6) /. b7) &
(b5 . b7 in Union coprod b2 implies ex b8 being Element of the carrier of b1 st
b8 <= (the_arity_of b6) /. b7 & b5 . b7 in coprod(b8,b2))));
:: OSAFREE:th 2
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being Element of ([:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2) * holds
[[b3,the carrier of b1],b4] in OSREL b2
iff
len b4 = len the_arity_of b3 &
(for b5 being set
st b5 in dom b4
holds (b4 . b5 in [:the OperSymbols of b1,{the carrier of b1}:] implies for b6 being Element of the OperSymbols of b1
st [b6,the carrier of b1] = b4 . b5
holds the_result_sort_of b6 <= (the_arity_of b3) /. b5) &
(b4 . b5 in Union coprod b2 implies ex b6 being Element of the carrier of b1 st
b6 <= (the_arity_of b3) /. b5 & b4 . b5 in coprod(b6,b2)));
:: OSAFREE:funcnot 2 => OSAFREE:func 2
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be ManySortedSet of the carrier of a1;
func DTConOSA A2 -> DTConstrStr equals
DTConstrStr(#[:the OperSymbols of a1,{the carrier of a1}:] \/ Union coprod a2,OSREL a2#);
end;
:: OSAFREE:def 5
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being ManySortedSet of the carrier of b1 holds
DTConOSA b2 = DTConstrStr(#[:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2,OSREL b2#);
:: OSAFREE:funcreg 1
registration
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be ManySortedSet of the carrier of a1;
cluster DTConOSA a2 -> non empty strict;
end;
:: OSAFREE:th 3
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
NonTerminals DTConOSA b2 = [:the OperSymbols of b1,{the carrier of b1}:] &
Terminals DTConOSA b2 = Union coprod b2;
:: OSAFREE:funcreg 2
registration
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster DTConOSA a2 -> with_terminals with_nonterminals with_useful_nonterminals;
end;
:: OSAFREE:th 4
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being set holds
b3 in Terminals DTConOSA b2
iff
ex b4 being Element of the carrier of b1 st
ex b5 being set st
b5 in b2 . b4 & b3 = [b5,b4];
:: OSAFREE:funcnot 3 => OSAFREE:func 3
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the OperSymbols of a1;
func OSSym(A3,A2) -> Element of the carrier of DTConOSA a2 equals
[a3,the carrier of a1];
end;
:: OSAFREE:def 6
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1 holds
OSSym(b3,b2) = [b3,the carrier of b1];
:: OSAFREE:funcnot 4 => OSAFREE:func 4
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
func ParsedTerms(A2,A3) -> Element of bool TS DTConOSA a2 equals
{b1 where b1 is Element of TS DTConOSA a2: (for b2 being Element of the carrier of a1
for b3 being set
st b2 <= a3 & b3 in a2 . b2
holds b1 <> root-tree [b3,b2] implies ex b2 being Element of the OperSymbols of a1 st
[b2,the carrier of a1] = b1 . {} &
the_result_sort_of b2 <= a3)};
end;
:: OSAFREE:def 7
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1 holds
ParsedTerms(b2,b3) = {b4 where b4 is Element of TS DTConOSA b2: (for b5 being Element of the carrier of b1
for b6 being set
st b5 <= b3 & b6 in b2 . b5
holds b4 <> root-tree [b6,b5] implies ex b5 being Element of the OperSymbols of b1 st
[b5,the carrier of b1] = b4 . {} &
the_result_sort_of b5 <= b3)};
:: OSAFREE:funcreg 3
registration
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
cluster ParsedTerms(a2,a3) -> non empty;
end;
:: OSAFREE:funcnot 5 => OSAFREE:func 5
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func ParsedTerms A2 -> order-sorted ManySortedSet of the carrier of a1 means
for b1 being Element of the carrier of a1 holds
it . b1 = ParsedTerms(a2,b1);
end;
:: OSAFREE:def 8
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being order-sorted ManySortedSet of the carrier of b1 holds
b3 = ParsedTerms b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = ParsedTerms(b2,b4);
:: OSAFREE:funcreg 4
registration
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster ParsedTerms a2 -> non-empty order-sorted;
end;
:: OSAFREE:th 5
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being set
st b4 in ((ParsedTerms b2) # * the Arity of b1) . b3
holds b4 is FinSequence of TS DTConOSA b2;
:: OSAFREE:th 6
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
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 TS DTConOSA b2 holds
b4 in ((ParsedTerms b2) # * the Arity of b1) . b3
iff
dom b4 = dom the_arity_of b3 &
(for b5 being natural set
st b5 in dom b4
holds b4 . b5 in ParsedTerms(b2,(the_arity_of b3) /. b5));
:: OSAFREE:th 7
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
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 TS DTConOSA b2 holds
OSSym(b3,b2) ==> roots b4
iff
b4 in ((ParsedTerms b2) # * the Arity of b1) . b3;
:: OSAFREE:th 8
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
union proj2 ParsedTerms b2 = TS DTConOSA b2;
:: OSAFREE:funcnot 6 => OSAFREE:func 6
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the OperSymbols of a1;
func PTDenOp(A3,A2) -> Function-like quasi_total Relation of ((ParsedTerms a2) # * the Arity of a1) . a3,((ParsedTerms a2) * the ResultSort of a1) . a3 means
for b1 being FinSequence of TS DTConOSA a2
st OSSym(a3,a2) ==> roots b1
holds it . b1 = (OSSym(a3,a2)) -tree b1;
end;
:: OSAFREE:def 9
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being Function-like quasi_total Relation of ((ParsedTerms b2) # * the Arity of b1) . b3,((ParsedTerms b2) * the ResultSort of b1) . b3 holds
b4 = PTDenOp(b3,b2)
iff
for b5 being FinSequence of TS DTConOSA b2
st OSSym(b3,b2) ==> roots b5
holds b4 . b5 = (OSSym(b3,b2)) -tree b5;
:: OSAFREE:funcnot 7 => OSAFREE:func 7
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func PTOper A2 -> ManySortedFunction of (ParsedTerms a2) # * the Arity of a1,(ParsedTerms a2) * the ResultSort of a1 means
for b1 being Element of the OperSymbols of a1 holds
it . b1 = PTDenOp(b1,a2);
end;
:: OSAFREE:def 10
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedFunction of (ParsedTerms b2) # * the Arity of b1,(ParsedTerms b2) * the ResultSort of b1 holds
b3 = PTOper b2
iff
for b4 being Element of the OperSymbols of b1 holds
b3 . b4 = PTDenOp(b4,b2);
:: OSAFREE:funcnot 8 => OSAFREE:func 8
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func ParsedTermsOSA A2 -> order-sorted MSAlgebra over a1 equals
MSAlgebra(#ParsedTerms a2,PTOper a2#);
end;
:: OSAFREE:def 11
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
ParsedTermsOSA b2 = MSAlgebra(#ParsedTerms b2,PTOper b2#);
:: OSAFREE:funcreg 5
registration
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster ParsedTermsOSA a2 -> strict non-empty order-sorted;
end;
:: OSAFREE:funcnot 9 => OSAFREE:func 9
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the OperSymbols of a1;
redefine func OSSym(a3,a2) -> Element of NonTerminals DTConOSA a2;
end;
:: OSAFREE:th 9
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1 holds
(the Sorts of ParsedTermsOSA b2) . b3 = {b4 where b4 is Element of TS DTConOSA b2: (for b5 being Element of the carrier of b1
for b6 being set
st b5 <= b3 & b6 in b2 . b5
holds b4 <> root-tree [b6,b5] implies ex b5 being Element of the OperSymbols of b1 st
[b5,the carrier of b1] = b4 . {} &
the_result_sort_of b5 <= b3)};
:: OSAFREE:th 10
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being Element of the carrier of b1
for b5 being set
st b5 in b2 . b3
holds root-tree [b5,b3] is Element of TS DTConOSA b2 &
(for b6 being set holds
[b6,the carrier of b1] <> (root-tree [b5,b3]) . {}) &
(root-tree [b5,b3] in (the Sorts of ParsedTermsOSA b2) . b4 implies b3 <= b4) &
(b3 <= b4 implies root-tree [b5,b3] in (the Sorts of ParsedTermsOSA b2) . b4);
:: OSAFREE:th 11
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2
for b4 being Element of the OperSymbols of b1
st b3 . {} = [b4,the carrier of b1]
holds (ex b5 being SubtreeSeq of OSSym(b4,b2) st
b3 = (OSSym(b4,b2)) -tree b5 & OSSym(b4,b2) ==> roots b5 & b5 in Args(b4,ParsedTermsOSA b2) & b3 = (Den(b4,ParsedTermsOSA b2)) . b5) &
(for b5 being Element of the carrier of b1
for b6 being set holds
b3 <> root-tree [b6,b5]) &
(for b5 being Element of the carrier of b1 holds
b3 in (the Sorts of ParsedTermsOSA b2) . b5
iff
the_result_sort_of b4 <= b5);
:: OSAFREE:th 12
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of DTConOSA b2
for b4 being FinSequence of TS DTConOSA b2
st b3 ==> roots b4
holds b3 in NonTerminals DTConOSA b2 &
b3 -tree b4 in TS DTConOSA b2 &
(ex b5 being Element of the OperSymbols of b1 st
b3 = [b5,the carrier of b1] &
b4 in Args(b5,ParsedTermsOSA b2) &
b3 -tree b4 = (Den(b5,ParsedTermsOSA b2)) . b4 &
(for b6 being Element of the carrier of b1 holds
b3 -tree b4 in (the Sorts of ParsedTermsOSA b2) . b6
iff
the_result_sort_of b5 <= b6));
:: OSAFREE:th 13
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
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
b4 in Args(b3,ParsedTermsOSA b2)
iff
b4 is FinSequence of TS DTConOSA b2 & OSSym(b3,b2) ==> roots b4;
:: OSAFREE:th 14
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2 holds
ex b4 being Element of the carrier of b1 st
b3 in (the Sorts of ParsedTermsOSA b2) . b4 &
(for b5 being Element of the carrier of b1
st b3 in (the Sorts of ParsedTermsOSA b2) . b5
holds b4 <= b5);
:: OSAFREE:funcnot 10 => OSAFREE:func 10
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of TS DTConOSA a2;
func LeastSort A3 -> Element of the carrier of a1 means
a3 in (the Sorts of ParsedTermsOSA a2) . it &
(for b1 being Element of the carrier of a1
st a3 in (the Sorts of ParsedTermsOSA a2) . b1
holds it <= b1);
end;
:: OSAFREE:def 12
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2
for b4 being Element of the carrier of b1 holds
b4 = LeastSort b3
iff
b3 in (the Sorts of ParsedTermsOSA b2) . b4 &
(for b5 being Element of the carrier of b1
st b3 in (the Sorts of ParsedTermsOSA b2) . b5
holds b4 <= b5);
:: OSAFREE:modenot 2
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
mode Element of a2 is Element of Union the Sorts of a2;
end;
:: OSAFREE:th 15
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being set holds
b3 is Element of Union the Sorts of ParsedTermsOSA b2
iff
b3 is Element of TS DTConOSA b2;
:: OSAFREE:th 16
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1
for b4 being set
st b4 in (the Sorts of ParsedTermsOSA b2) . b3
holds b4 is Element of TS DTConOSA b2;
:: OSAFREE:th 17
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1
for b4 being set
st b4 in b2 . b3
for b5 being Element of TS DTConOSA b2
st b5 = root-tree [b4,b3]
holds LeastSort b5 = b3;
:: OSAFREE:th 18
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the OperSymbols of b1
for b4 being Element of Args(b3,ParsedTermsOSA b2)
for b5 being Element of TS DTConOSA b2
st b5 = (Den(b3,ParsedTermsOSA b2)) . b4
holds LeastSort b5 = the_result_sort_of b3;
:: OSAFREE:funcreg 6
registration
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the OperSymbols of a1;
cluster Args(a3,ParsedTermsOSA a2) -> non empty;
end;
:: OSAFREE:funcnot 11 => OSAFREE:func 11
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be FinSequence of TS DTConOSA a2;
func LeastSorts A3 -> Element of (the carrier of a1) * means
dom it = dom a3 &
(for b1 being natural set
st b1 in dom a3
holds ex b2 being Element of TS DTConOSA a2 st
b2 = a3 . b1 & it . b1 = LeastSort b2);
end;
:: OSAFREE:def 14
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being FinSequence of TS DTConOSA b2
for b4 being Element of (the carrier of b1) * holds
b4 = LeastSorts b3
iff
dom b4 = dom b3 &
(for b5 being natural set
st b5 in dom b3
holds ex b6 being Element of TS DTConOSA b2 st
b6 = b3 . b5 & b4 . b5 = LeastSort b6);
:: OSAFREE:th 19
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
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 TS DTConOSA b2 holds
LeastSorts b4 <= the_arity_of b3
iff
b4 in Args(b3,ParsedTermsOSA b2);
:: OSAFREE:exreg 1
registration
cluster non empty non void reflexive transitive antisymmetric order-sorted discernable monotone regular locally_directed OverloadedRSSign;
end;
:: OSAFREE:funcnot 12 => OSAFREE:func 12
definition
let a1 be non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the OperSymbols of a1;
let a4 be FinSequence of TS DTConOSA a2;
assume OSSym(LBound(a3,LeastSorts a4),a2) ==> roots a4;
func pi(A3,A4) -> Element of TS DTConOSA a2 equals
(OSSym(LBound(a3,LeastSorts a4),a2)) -tree a4;
end;
:: OSAFREE:def 15
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
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 TS DTConOSA b2
st OSSym(LBound(b3,LeastSorts b4),b2) ==> roots b4
holds pi(b3,b4) = (OSSym(LBound(b3,LeastSorts b4),b2)) -tree b4;
:: OSAFREE:funcnot 13 => OSAFREE:func 13
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of DTConOSA a2;
assume ex b1 being Relation-like Function-like FinSequence-like set st
a3 ==> b1;
func @(A2,A3) -> Element of the OperSymbols of a1 means
[it,the carrier of a1] = a3;
end;
:: OSAFREE:def 16
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of DTConOSA b2
st ex b4 being Relation-like Function-like FinSequence-like set st
b3 ==> b4
for b4 being Element of the OperSymbols of b1 holds
b4 = @(b2,b3)
iff
[b4,the carrier of b1] = b3;
:: OSAFREE:funcnot 14 => OSAFREE:func 14
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of DTConOSA a2;
assume a3 in Terminals DTConOSA a2;
func pi A3 -> Element of TS DTConOSA a2 equals
root-tree a3;
end;
:: OSAFREE:def 17
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of DTConOSA b2
st b3 in Terminals DTConOSA b2
holds pi b3 = root-tree b3;
:: OSAFREE:funcnot 15 => OSAFREE:func 15
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func LCongruence A2 -> MSEquivalence-like MSCongruence-like monotone OrderSortedRelation of ParsedTermsOSA a2 means
for b1 being MSEquivalence-like MSCongruence-like monotone OrderSortedRelation of ParsedTermsOSA a2 holds
it c= b1;
end;
:: OSAFREE:def 18
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like MSCongruence-like monotone OrderSortedRelation of ParsedTermsOSA b2 holds
b3 = LCongruence b2
iff
for b4 being MSEquivalence-like MSCongruence-like monotone OrderSortedRelation of ParsedTermsOSA b2 holds
b3 c= b4;
:: OSAFREE:funcnot 16 => OSAFREE:func 16
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func FreeOSA A2 -> strict non-empty order-sorted monotone MSAlgebra over a1 equals
QuotOSAlg(ParsedTermsOSA a2,LCongruence a2);
end;
:: OSAFREE:def 19
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
FreeOSA b2 = QuotOSAlg(ParsedTermsOSA b2,LCongruence b2);
:: OSAFREE:funcnot 17 => OSAFREE:func 17
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of DTConOSA a2;
func @ A3 -> Element of bool [:TS DTConOSA a2,the carrier of a1:] equals
{[root-tree a3,b1] where b1 is Element of the carrier of a1: ex b2 being Element of the carrier of a1 st
ex b3 being set st
b3 in a2 . b2 & a3 = [b3,b2] & b2 <= b1};
end;
:: OSAFREE:def 20
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of DTConOSA b2 holds
@ b3 = {[root-tree b3,b4] where b4 is Element of the carrier of b1: ex b5 being Element of the carrier of b1 st
ex b6 being set st
b6 in b2 . b5 & b3 = [b6,b5] & b5 <= b4};
:: OSAFREE:funcnot 18 => OSAFREE:func 18
definition
let a1 be non empty non void order-sorted discernable OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of DTConOSA a2;
let a4 be FinSequence of bool [:TS DTConOSA a2,the carrier of a1:];
func @(A3,A4) -> Element of bool [:TS DTConOSA a2,the carrier of a1:] equals
{[(Den(b1,ParsedTermsOSA a2)) . b2,b3] where b1 is Element of the OperSymbols of a1, b2 is Element of Args(b1,ParsedTermsOSA a2), b3 is Element of the carrier of a1: (ex b4 being Element of the OperSymbols of a1 st
a3 = [b4,the carrier of a1] & b4 ~= b1 & len the_arity_of b4 = len the_arity_of b1 & the_result_sort_of b4 <= b3 & the_result_sort_of b1 <= b3) &
(ex b4 being Element of (the carrier of a1) * st
dom b4 = dom a4 &
(for b5 being natural set
st b5 in dom a4
holds [b2 . b5,b4 /. b5] in a4 . b5))};
end;
:: OSAFREE:def 21
theorem
for b1 being non empty non void order-sorted discernable OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of DTConOSA b2
for b4 being FinSequence of bool [:TS DTConOSA b2,the carrier of b1:] holds
@(b3,b4) = {[(Den(b5,ParsedTermsOSA b2)) . b6,b7] where b5 is Element of the OperSymbols of b1, b6 is Element of Args(b5,ParsedTermsOSA b2), b7 is Element of the carrier of b1: (ex b8 being Element of the OperSymbols of b1 st
b3 = [b8,the carrier of b1] & b8 ~= b5 & len the_arity_of b8 = len the_arity_of b5 & the_result_sort_of b8 <= b7 & the_result_sort_of b5 <= b7) &
(ex b8 being Element of (the carrier of b1) * st
dom b8 = dom b4 &
(for b9 being natural set
st b9 in dom b4
holds [b6 . b9,b8 /. b9] in b4 . b9))};
:: OSAFREE:funcnot 19 => OSAFREE:func 19
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func PTClasses A2 -> Function-like quasi_total Relation of TS DTConOSA a2,bool [:TS DTConOSA a2,the carrier of a1:] means
(for b1 being Element of the carrier of DTConOSA a2
st b1 in Terminals DTConOSA a2
holds it . root-tree b1 = @ b1) &
(for b1 being Element of the carrier of DTConOSA a2
for b2 being FinSequence of TS DTConOSA a2
st b1 ==> roots b2
holds it . (b1 -tree b2) = @(b1,it * b2));
end;
:: OSAFREE:def 22
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Function-like quasi_total Relation of TS DTConOSA b2,bool [:TS DTConOSA b2,the carrier of b1:] holds
b3 = PTClasses b2
iff
(for b4 being Element of the carrier of DTConOSA b2
st b4 in Terminals DTConOSA b2
holds b3 . root-tree b4 = @ b4) &
(for b4 being Element of the carrier of DTConOSA b2
for b5 being FinSequence of TS DTConOSA b2
st b4 ==> roots b5
holds b3 . (b4 -tree b5) = @(b4,b3 * b5));
:: OSAFREE:th 20
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2 holds
(for b4 being Element of the carrier of b1 holds
b3 in (the Sorts of ParsedTermsOSA b2) . b4
iff
[b3,b4] in (PTClasses b2) . b3) &
(for b4 being Element of the carrier of b1
for b5 being Element of TS DTConOSA b2
st [b5,b4] in (PTClasses b2) . b3
holds [b3,b4] in (PTClasses b2) . b5);
:: OSAFREE:th 21
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2
for b4 being Element of the carrier of b1
st ex b5 being Element of TS DTConOSA b2 st
[b5,b4] in (PTClasses b2) . b3
holds [b3,b4] in (PTClasses b2) . b3;
:: OSAFREE:th 22
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being Element of TS DTConOSA b2
for b5, b6 being Element of the carrier of b1
st b5 <= b6 & b3 in (the Sorts of ParsedTermsOSA b2) . b5 & b4 in (the Sorts of ParsedTermsOSA b2) . b5
holds [b4,b5] in (PTClasses b2) . b3
iff
[b4,b6] in (PTClasses b2) . b3;
:: OSAFREE:th 23
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4, b5 being Element of TS DTConOSA b2
for b6 being Element of the carrier of b1
st [b4,b6] in (PTClasses b2) . b3 & [b5,b6] in (PTClasses b2) . b4
holds [b3,b6] in (PTClasses b2) . b5;
:: OSAFREE:funcnot 20 => OSAFREE:func 20
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func PTCongruence A2 -> MSEquivalence-like OrderSortedRelation of ParsedTermsOSA a2 means
for b1 being set
st b1 in the carrier of a1
holds it . b1 = {[b2,b3] where b2 is Element of TS DTConOSA a2, b3 is Element of TS DTConOSA a2: [b2,b1] in (PTClasses a2) . b3};
end;
:: OSAFREE:def 23
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like OrderSortedRelation of ParsedTermsOSA b2 holds
b3 = PTCongruence b2
iff
for b4 being set
st b4 in the carrier of b1
holds b3 . b4 = {[b5,b6] where b5 is Element of TS DTConOSA b2, b6 is Element of TS DTConOSA b2: [b5,b4] in (PTClasses b2) . b6};
:: OSAFREE:th 24
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4, b5 being set
st [b3,b5] in (PTClasses b2) . b4
holds b3 in TS DTConOSA b2 & b4 in TS DTConOSA b2 & b5 in the carrier of b1;
:: OSAFREE:th 25
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of Components b1
for b4, b5 being set holds
[b4,b5] in CompClass(PTCongruence b2,b3)
iff
ex b6 being Element of the carrier of b1 st
b6 in b3 & [b4,b6] in (PTClasses b2) . b5;
:: OSAFREE:th 26
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
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 (the Sorts of ParsedTermsOSA b2) . b3 holds
OSClass(PTCongruence b2,b4) = proj1 ((PTClasses b2) . b4);
:: OSAFREE:th 27
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedRelation of the Sorts of ParsedTermsOSA b2,the Sorts of ParsedTermsOSA b2 holds
b3 = PTCongruence b2
iff
(for b4, b5 being Element of the carrier of b1
for b6 being set
st b6 in b2 . b4
holds (b4 <= b5 implies [root-tree [b6,b4],root-tree [b6,b4]] in b3 . b5) &
(for b7 being set
st ([root-tree [b6,b4],b7] in b3 . b5 or [b7,root-tree [b6,b4]] in b3 . b5)
holds b4 <= b5 & b7 = root-tree [b6,b4])) &
(for b4, b5 being Element of the OperSymbols of b1
for b6 being Element of Args(b4,ParsedTermsOSA b2)
for b7 being Element of Args(b5,ParsedTermsOSA b2)
for b8 being Element of the carrier of b1 holds
[(Den(b4,ParsedTermsOSA b2)) . b6,(Den(b5,ParsedTermsOSA b2)) . b7] in b3 . b8
iff
b4 ~= b5 &
len the_arity_of b4 = len the_arity_of b5 &
the_result_sort_of b4 <= b8 &
the_result_sort_of b5 <= b8 &
(ex b9 being Element of (the carrier of b1) * st
dom b9 = dom b6 &
(for b10 being natural set
st b10 in dom b9
holds [b6 . b10,b7 . b10] in b3 . (b9 /. b10))));
:: OSAFREE:th 28
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
PTCongruence b2 is monotone(b1, ParsedTermsOSA b2);
:: OSAFREE:funcreg 7
registration
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster PTCongruence a2 -> MSEquivalence-like monotone;
end;
:: OSAFREE:funcnot 21 => OSAFREE:func 21
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
func PTVars(A3,A2) -> Element of bool ((the Sorts of ParsedTermsOSA a2) . a3) means
for b1 being set holds
b1 in it
iff
ex b2 being set st
b2 in a2 . a3 & b1 = root-tree [b2,a3];
end;
:: OSAFREE:def 24
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
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 bool ((the Sorts of ParsedTermsOSA b2) . b3) holds
b4 = PTVars(b3,b2)
iff
for b5 being set holds
b5 in b4
iff
ex b6 being set st
b6 in b2 . b3 & b5 = root-tree [b6,b3];
:: OSAFREE:funcreg 8
registration
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
cluster PTVars(a3,a2) -> non empty;
end;
:: OSAFREE:th 29
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1 holds
PTVars(b3,b2) = {root-tree b4 where b4 is Element of the carrier of DTConOSA b2: b4 in Terminals DTConOSA b2 & b4 `2 = b3};
:: OSAFREE:funcnot 22 => OSAFREE:func 22
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func PTVars A2 -> ManySortedSubset of the Sorts of ParsedTermsOSA a2 means
for b1 being Element of the carrier of a1 holds
it . b1 = PTVars(b1,a2);
end;
:: OSAFREE:def 25
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedSubset of the Sorts of ParsedTermsOSA b2 holds
b3 = PTVars b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = PTVars(b4,b2);
:: OSAFREE:th 30
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
PTVars b2 is non-empty;
:: OSAFREE:funcnot 23 => OSAFREE:func 23
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
func OSFreeGen(A3,A2) -> Element of bool ((the Sorts of FreeOSA a2) . a3) means
for b1 being set holds
b1 in it
iff
ex b2 being set st
b2 in a2 . a3 &
b1 = ((OSNat_Hom(ParsedTermsOSA a2,LCongruence a2)) . a3) . root-tree [b2,a3];
end;
:: OSAFREE:def 26
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
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 bool ((the Sorts of FreeOSA b2) . b3) holds
b4 = OSFreeGen(b3,b2)
iff
for b5 being set holds
b5 in b4
iff
ex b6 being set st
b6 in b2 . b3 &
b5 = ((OSNat_Hom(ParsedTermsOSA b2,LCongruence b2)) . b3) . root-tree [b6,b3];
:: OSAFREE:funcreg 9
registration
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
cluster OSFreeGen(a3,a2) -> non empty;
end;
:: OSAFREE:th 31
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1 holds
OSFreeGen(b3,b2) = {((OSNat_Hom(ParsedTermsOSA b2,LCongruence b2)) . b3) . root-tree b4 where b4 is Element of the carrier of DTConOSA b2: b4 in Terminals DTConOSA b2 & b4 `2 = b3};
:: OSAFREE:funcnot 24 => OSAFREE:func 24
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func OSFreeGen A2 -> OSGeneratorSet of FreeOSA a2 means
for b1 being Element of the carrier of a1 holds
it . b1 = OSFreeGen(b1,a2);
end;
:: OSAFREE:def 27
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being OSGeneratorSet of FreeOSA b2 holds
b3 = OSFreeGen b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = OSFreeGen(b4,b2);
:: OSAFREE:th 32
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
OSFreeGen b2 is non-empty;
:: OSAFREE:funcreg 10
registration
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster OSFreeGen a2 -> non-empty;
end;
:: OSAFREE:funcnot 25 => OSAFREE:func 25
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be MSEquivalence-like MSCongruence-like OrderSortedRelation of ParsedTermsOSA a2;
let a4 be Element of TS DTConOSA a2;
func OSClass(A3,A4) -> Element of OSClass(a3,LeastSort a4) means
for b1 being Element of the carrier of a1
for b2 being Element of (the Sorts of ParsedTermsOSA a2) . b1
st a4 = b2
holds it = OSClass(a3,b2);
end;
:: OSAFREE:def 28
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like MSCongruence-like OrderSortedRelation of ParsedTermsOSA b2
for b4 being Element of TS DTConOSA b2
for b5 being Element of OSClass(b3,LeastSort b4) holds
b5 = OSClass(b3,b4)
iff
for b6 being Element of the carrier of b1
for b7 being Element of (the Sorts of ParsedTermsOSA b2) . b6
st b4 = b7
holds b5 = OSClass(b3,b7);
:: OSAFREE:th 33
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like MSCongruence-like OrderSortedRelation of ParsedTermsOSA b2
for b4 being Element of TS DTConOSA b2 holds
b4 in OSClass(b3,b4);
:: OSAFREE:th 34
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
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 TS DTConOSA b2
for b5, b6 being set
st b5 in b2 . b3 & b4 = root-tree [b5,b3]
holds b6 in OSClass(PTCongruence b2,b4)
iff
b6 = b4;
:: OSAFREE:th 35
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like MSCongruence-like OrderSortedRelation of ParsedTermsOSA b2
for b4, b5 being Element of TS DTConOSA b2 holds
b5 in OSClass(b3,b4)
iff
OSClass(b3,b4) = OSClass(b3,b5);
:: OSAFREE:th 36
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being MSEquivalence-like MSCongruence-like OrderSortedRelation of ParsedTermsOSA b2
for b5 being Element of TS DTConOSA b2
st b3 c= b4
holds OSClass(b3,b5) c= OSClass(b4,b5);
:: OSAFREE:th 37
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
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 TS DTConOSA b2
for b5, b6 being set
st b5 in b2 . b3 & b4 = root-tree [b5,b3]
holds b6 in OSClass(LCongruence b2,b4)
iff
b6 = b4;
:: OSAFREE:funcnot 26 => OSAFREE:func 26
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2, a3 be non-empty ManySortedSet of the carrier of a1;
let a4 be ManySortedFunction of PTVars a2,a3;
let a5 be Element of the carrier of DTConOSA a2;
assume a5 in Terminals DTConOSA a2;
func pi(A4,A3,A5) -> Element of Union a3 means
for b1 being Relation-like Function-like set
st b1 = a4 . (a5 `2)
holds it = b1 . root-tree a5;
end;
:: OSAFREE:def 29
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2, b3 being non-empty ManySortedSet of the carrier of b1
for b4 being ManySortedFunction of PTVars b2,b3
for b5 being Element of the carrier of DTConOSA b2
st b5 in Terminals DTConOSA b2
for b6 being Element of Union b3 holds
b6 = pi(b4,b3,b5)
iff
for b7 being Relation-like Function-like set
st b7 = b4 . (b5 `2)
holds b6 = b7 . root-tree b5;
:: OSAFREE:th 38
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty order-sorted monotone MSAlgebra over b1
for b4 being ManySortedFunction of PTVars b2,the Sorts of b3 holds
ex b5 being ManySortedFunction of the Sorts of ParsedTermsOSA b2,the Sorts of b3 st
b5 is_homomorphism ParsedTermsOSA b2,b3 & b5 is order-sorted(b1) & b5 || PTVars b2 = b4;
:: OSAFREE:funcnot 27 => OSAFREE:func 27
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of the carrier of a1;
func NHReverse(A3,A2) -> Function-like quasi_total Relation of OSFreeGen(a3,a2),PTVars(a3,a2) means
for b1 being Element of the carrier of DTConOSA a2
st ((OSNat_Hom(ParsedTermsOSA a2,LCongruence a2)) . a3) . root-tree b1 in OSFreeGen(a3,a2)
holds it . (((OSNat_Hom(ParsedTermsOSA a2,LCongruence a2)) . a3) . root-tree b1) = root-tree b1;
end;
:: OSAFREE:def 30
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1
for b4 being Function-like quasi_total Relation of OSFreeGen(b3,b2),PTVars(b3,b2) holds
b4 = NHReverse(b3,b2)
iff
for b5 being Element of the carrier of DTConOSA b2
st ((OSNat_Hom(ParsedTermsOSA b2,LCongruence b2)) . b3) . root-tree b5 in OSFreeGen(b3,b2)
holds b4 . (((OSNat_Hom(ParsedTermsOSA b2,LCongruence b2)) . b3) . root-tree b5) = root-tree b5;
:: OSAFREE:funcnot 28 => OSAFREE:func 28
definition
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func NHReverse A2 -> ManySortedFunction of OSFreeGen a2,PTVars a2 means
for b1 being Element of the carrier of a1 holds
it . b1 = NHReverse(b1,a2);
end;
:: OSAFREE:def 31
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedFunction of OSFreeGen b2,PTVars b2 holds
b3 = NHReverse b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = NHReverse(b4,b2);
:: OSAFREE:th 39
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
OSFreeGen b2 is osfree(b1, FreeOSA b2);
:: OSAFREE:th 40
theorem
for b1 being non empty non void order-sorted discernable locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
FreeOSA b2 is osfree(b1);
:: OSAFREE:exreg 2
registration
let a1 be non empty non void order-sorted discernable locally_directed OverloadedRSSign;
cluster strict non-empty order-sorted monotone osfree MSAlgebra over a1;
end;
:: OSAFREE:funcnot 29 => OSAFREE:func 29
definition
let a1 be non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func PTMin A2 -> Function-like quasi_total Relation of TS DTConOSA a2,TS DTConOSA a2 means
(for b1 being Element of the carrier of DTConOSA a2
st b1 in Terminals DTConOSA a2
holds it . root-tree b1 = pi b1) &
(for b1 being Element of the carrier of DTConOSA a2
for b2 being FinSequence of TS DTConOSA a2
st b1 ==> roots b2
holds it . (b1 -tree b2) = pi(@(a2,b1),it * b2));
end;
:: OSAFREE:def 32
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Function-like quasi_total Relation of TS DTConOSA b2,TS DTConOSA b2 holds
b3 = PTMin b2
iff
(for b4 being Element of the carrier of DTConOSA b2
st b4 in Terminals DTConOSA b2
holds b3 . root-tree b4 = pi b4) &
(for b4 being Element of the carrier of DTConOSA b2
for b5 being FinSequence of TS DTConOSA b2
st b4 ==> roots b5
holds b3 . (b4 -tree b5) = pi(@(b2,b4),b3 * b5));
:: OSAFREE:th 41
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2 holds
(PTMin b2) . b3 in OSClass(PTCongruence b2,b3) &
LeastSort ((PTMin b2) . b3) <= LeastSort b3 &
(for b4 being Element of the carrier of b1
for b5 being set
st b5 in b2 . b4 & b3 = root-tree [b5,b4]
holds (PTMin b2) . b3 = b3) &
(for b4 being Element of the OperSymbols of b1
for b5 being FinSequence of TS DTConOSA b2
st OSSym(b4,b2) ==> roots b5 & b3 = (OSSym(b4,b2)) -tree b5
holds LeastSorts ((PTMin b2) * b5) <= the_arity_of b4 &
OSSym(b4,b2) ==> roots ((PTMin b2) * b5) &
OSSym(LBound(b4,LeastSorts ((PTMin b2) * b5)),b2) ==> roots ((PTMin b2) * b5) &
(PTMin b2) . b3 = (OSSym(LBound(b4,LeastSorts ((PTMin b2) * b5)),b2)) -tree ((PTMin b2) * b5));
:: OSAFREE:th 42
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being Element of TS DTConOSA b2
st b4 in OSClass(PTCongruence b2,b3)
holds (PTMin b2) . b4 = (PTMin b2) . b3;
:: OSAFREE:th 43
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being Element of TS DTConOSA b2 holds
b4 in OSClass(PTCongruence b2,b3)
iff
(PTMin b2) . b4 = (PTMin b2) . b3;
:: OSAFREE:th 44
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2 holds
(PTMin b2) . ((PTMin b2) . b3) = (PTMin b2) . b3;
:: OSAFREE:th 45
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like monotone OrderSortedRelation of ParsedTermsOSA b2
for b4 being Element of TS DTConOSA b2 holds
[b4,(PTMin b2) . b4] in b3 . LeastSort b4;
:: OSAFREE:th 46
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being MSEquivalence-like monotone OrderSortedRelation of ParsedTermsOSA b2 holds
PTCongruence b2 c= b3;
:: OSAFREE:th 47
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
LCongruence b2 = PTCongruence b2;
:: OSAFREE:modenot 3 => OSAFREE:mode 2
definition
let a1 be non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
mode MinTerm of A1,A2 -> Element of TS DTConOSA a2 means
(PTMin a2) . it = it;
end;
:: OSAFREE:dfs 32
definiens
let a1 be non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
let a3 be Element of TS DTConOSA a2;
To prove
a3 is MinTerm of a1,a2
it is sufficient to prove
thus (PTMin a2) . a3 = a3;
:: OSAFREE:def 33
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of TS DTConOSA b2 holds
b3 is MinTerm of b1,b2
iff
(PTMin b2) . b3 = b3;
:: OSAFREE:funcnot 30 => OSAFREE:func 30
definition
let a1 be non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func MinTerms A2 -> Element of bool TS DTConOSA a2 equals
proj2 PTMin a2;
end;
:: OSAFREE:def 34
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
MinTerms b2 = proj2 PTMin b2;
:: OSAFREE:th 48
theorem
for b1 being non empty non void order-sorted discernable monotone regular locally_directed OverloadedRSSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being set holds
b3 is MinTerm of b1,b2
iff
b3 in MinTerms b2;