Article MSAFREE, MML version 4.99.1005
:: MSAFREE:th 1
theorem
for b1 being set
for b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2 *
for b4 being ManySortedSet of b2
for b5 being Element of b2 *
for b6 being set
st b6 in b1 & b5 = b3 . b6
holds (b4 # * b3) . b6 = product (b5 * b4);
:: MSAFREE:funcnot 1 => MSAFREE:func 1
definition
let a1 be set;
let a2, a3 be ManySortedSet of a1;
let a4 be ManySortedSubset of a2;
let a5 be ManySortedFunction of a2,a3;
func A5 || A4 -> ManySortedFunction of a4,a3 means
for b1 being set
st b1 in a1
for b2 being Function-like quasi_total Relation of a2 . b1,a3 . b1
st b2 = a5 . b1
holds it . b1 = b2 | (a4 . b1);
end;
:: MSAFREE:def 1
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1
for b4 being ManySortedSubset of b2
for b5 being ManySortedFunction of b2,b3
for b6 being ManySortedFunction of b4,b3 holds
b6 = b5 || b4
iff
for b7 being set
st b7 in b1
for b8 being Function-like quasi_total Relation of b2 . b7,b3 . b7
st b8 = b5 . b7
holds b6 . b7 = b8 | (b4 . b7);
:: MSAFREE:funcnot 2 => MSAFREE:func 2
definition
let a1 be set;
let a2 be ManySortedSet of a1;
let a3 be set;
assume a3 in a1;
func coprod(A3,A2) -> set means
for b1 being set holds
b1 in it
iff
ex b2 being set st
b2 in a2 . a3 & b1 = [b2,a3];
end;
:: MSAFREE:def 2
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being set
st b3 in b1
for b4 being set holds
b4 = coprod(b3,b2)
iff
for b5 being set holds
b5 in b4
iff
ex b6 being set st
b6 in b2 . b3 & b5 = [b6,b3];
:: MSAFREE:funcnot 3 => CARD_3:func 2
notation
let a1 be set;
let a2 be ManySortedSet of a1;
synonym coprod a2 for disjoin a1;
end;
:: MSAFREE:funcnot 4 => MSAFREE:func 3
definition
let a1 be set;
let a2 be ManySortedSet of a1;
redefine func coprod A2 -> ManySortedSet of a1 means
for b1 being set
st b1 in a1
holds it . b1 = coprod(b1,a2);
end;
:: MSAFREE:def 3
theorem
for b1 being set
for b2, b3 being ManySortedSet of b1 holds
b3 = coprod b2
iff
for b4 being set
st b4 in b1
holds b3 . b4 = coprod(b4,b2);
:: MSAFREE:funcreg 1
registration
let a1 be non empty set;
let a2 be non-empty ManySortedSet of a1;
cluster disjoin a2 -> Relation-like non-empty Function-like;
end;
:: MSAFREE:funcreg 2
registration
let a1 be non empty set;
let a2 be non-empty ManySortedSet of a1;
cluster Union a2 -> non empty;
end;
:: MSAFREE:th 2
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being set
st b3 in b1
holds b2 . b3 <> {}
iff
(coprod b2) . b3 <> {};
:: MSAFREE:modenot 1 => MSAFREE:mode 1
definition
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
mode GeneratorSet of A2 -> ManySortedSubset of the Sorts of a2 means
the Sorts of GenMSAlg it = the Sorts of a2;
end;
:: MSAFREE:dfs 4
definiens
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be ManySortedSubset of the Sorts of a2;
To prove
a3 is GeneratorSet of a2
it is sufficient to prove
thus the Sorts of GenMSAlg a3 = the Sorts of a2;
:: MSAFREE:def 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being ManySortedSubset of the Sorts of b2 holds
b3 is GeneratorSet of b2
iff
the Sorts of GenMSAlg b3 = the Sorts of b2;
:: MSAFREE:th 3
theorem
for b1 being non empty non void ManySortedSign
for b2 being strict non-empty MSAlgebra over b1
for b3 being ManySortedSubset of the Sorts of b2 holds
b3 is GeneratorSet of b2
iff
GenMSAlg b3 = b2;
:: MSAFREE:attrnot 1 => MSAFREE:attr 1
definition
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be GeneratorSet of a2;
attr a3 is free means
for b1 being non-empty 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 || a3 = b2;
end;
:: MSAFREE:dfs 5
definiens
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
let a3 be GeneratorSet of a2;
To prove
a3 is free
it is sufficient to prove
thus for b1 being non-empty 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 || a3 = b2;
:: MSAFREE:def 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being GeneratorSet of b2 holds
b3 is free(b1, b2)
iff
for b4 being non-empty 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 || b3 = b5;
:: MSAFREE:attrnot 2 => MSAFREE:attr 2
definition
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
attr a2 is free means
ex b1 being GeneratorSet of a2 st
b1 is free(a1, a2);
end;
:: MSAFREE:dfs 6
definiens
let a1 be non empty non void ManySortedSign;
let a2 be MSAlgebra over a1;
To prove
a2 is free
it is sufficient to prove
thus ex b1 being GeneratorSet of a2 st
b1 is free(a1, a2);
:: MSAFREE:def 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1 holds
b2 is free(b1)
iff
ex b3 being GeneratorSet of b2 st
b3 is free(b1, b2);
:: MSAFREE:th 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being ManySortedSet of the carrier of b1 holds
Union coprod b2 misses [:the OperSymbols of b1,{the carrier of b1}:];
:: MSAFREE:funcreg 3
registration
let a1 be non void ManySortedSign;
cluster the OperSymbols of a1 -> non empty;
end;
:: MSAFREE:funcnot 5 => MSAFREE:func 4
definition
let a1 be non empty non void ManySortedSign;
let a2 be ManySortedSet of the carrier of a1;
func REL 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 b2 . b4 in coprod((the_arity_of b3) . b4,a2))));
end;
:: MSAFREE:def 9
theorem
for b1 being non empty non void ManySortedSign
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 = REL 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 b5 . b7 in coprod((the_arity_of b6) . b7,b2))));
:: MSAFREE:th 5
theorem
for b1 being non empty non void ManySortedSign
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 REL 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 b4 . b5 in coprod((the_arity_of b3) . b5,b2)));
:: MSAFREE:funcnot 6 => MSAFREE:func 5
definition
let a1 be non empty non void ManySortedSign;
let a2 be ManySortedSet of the carrier of a1;
func DTConMSA A2 -> DTConstrStr equals
DTConstrStr(#[:the OperSymbols of a1,{the carrier of a1}:] \/ Union coprod a2,REL a2#);
end;
:: MSAFREE:def 10
theorem
for b1 being non empty non void ManySortedSign
for b2 being ManySortedSet of the carrier of b1 holds
DTConMSA b2 = DTConstrStr(#[:the OperSymbols of b1,{the carrier of b1}:] \/ Union coprod b2,REL b2#);
:: MSAFREE:funcreg 4
registration
let a1 be non empty non void ManySortedSign;
let a2 be ManySortedSet of the carrier of a1;
cluster DTConMSA a2 -> non empty strict;
end;
:: MSAFREE:th 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being ManySortedSet of the carrier of b1 holds
NonTerminals DTConMSA b2 c= [:the OperSymbols of b1,{the carrier of b1}:] &
Union coprod b2 c= Terminals DTConMSA b2 &
(b2 is non-empty implies NonTerminals DTConMSA b2 = [:the OperSymbols of b1,{the carrier of b1}:] &
Terminals DTConMSA b2 = Union coprod b2);
:: MSAFREE:funcreg 5
registration
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster DTConMSA a2 -> with_terminals with_nonterminals with_useful_nonterminals;
end;
:: MSAFREE:th 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being ManySortedSet of the carrier of b1
for b3 being set holds
(b3 in Terminals DTConMSA b2 & b2 is non-empty implies ex b4 being Element of the carrier of b1 st
ex b5 being set st
b5 in b2 . b4 & b3 = [b5,b4]) &
(for b4 being Element of the carrier of b1
for b5 being set
st b5 in b2 . b4
holds [b5,b4] in Terminals DTConMSA b2);
:: MSAFREE:funcnot 7 => MSAFREE: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 the OperSymbols of a1;
func Sym(A3,A2) -> Element of the carrier of DTConMSA a2 equals
[a3,the carrier of a1];
end;
:: MSAFREE:def 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 the OperSymbols of b1 holds
Sym(b3,b2) = [b3,the carrier of b1];
:: MSAFREE:funcnot 8 => MSAFREE: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 the carrier of a1;
func FreeSort(A2,A3) -> Element of bool TS DTConMSA a2 equals
{b1 where b1 is Element of TS DTConMSA a2: (for b2 being set
st b2 in a2 . a3
holds b1 <> root-tree [b2,a3] implies ex b2 being Element of the OperSymbols of a1 st
[b2,the carrier of a1] = b1 . {} &
the_result_sort_of b2 = a3)};
end;
:: MSAFREE:def 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) = {b4 where b4 is Element of TS DTConMSA b2: (for b5 being set
st b5 in b2 . b3
holds b4 <> root-tree [b5,b3] implies ex b5 being Element of the OperSymbols of b1 st
[b5,the carrier of b1] = b4 . {} &
the_result_sort_of b5 = b3)};
:: MSAFREE:funcreg 6
registration
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 carrier of a1;
cluster FreeSort(a2,a3) -> non empty;
end;
:: MSAFREE:funcnot 9 => MSAFREE:func 8
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func FreeSort A2 -> ManySortedSet of the carrier of a1 means
for b1 being Element of the carrier of a1 holds
it . b1 = FreeSort(a2,b1);
end;
:: MSAFREE:def 13
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedSet of the carrier of b1 holds
b3 = FreeSort b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = FreeSort(b2,b4);
:: MSAFREE:funcreg 7
registration
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster FreeSort a2 -> non-empty;
end;
:: MSAFREE: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 Element of the OperSymbols of b1
for b4 being set
st b4 in ((FreeSort b2) # * the Arity of b1) . b3
holds b4 is FinSequence of TS DTConMSA b2;
:: MSAFREE: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 Element of the OperSymbols of b1
for b4 being FinSequence of TS DTConMSA b2 holds
b4 in ((FreeSort 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 FreeSort(b2,(the_arity_of b3) /. b5));
:: MSAFREE: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 the OperSymbols of b1
for b4 being FinSequence of TS DTConMSA b2 holds
Sym(b3,b2) ==> roots b4
iff
b4 in ((FreeSort b2) # * the Arity of b1) . b3;
:: MSAFREE:th 12
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
union proj2 FreeSort b2 = TS DTConMSA b2;
:: MSAFREE:th 13
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being Element of the carrier of b1
st b3 <> b4
holds (FreeSort b2) . b3 misses (FreeSort b2) . b4;
:: MSAFREE:funcnot 10 => MSAFREE:func 9
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;
func DenOp(A3,A2) -> Function-like quasi_total Relation of ((FreeSort a2) # * the Arity of a1) . a3,((FreeSort a2) * the ResultSort of a1) . a3 means
for b1 being FinSequence of TS DTConMSA a2
st Sym(a3,a2) ==> roots b1
holds it . b1 = (Sym(a3,a2)) -tree b1;
end;
:: MSAFREE:def 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 the OperSymbols of b1
for b4 being Function-like quasi_total Relation of ((FreeSort b2) # * the Arity of b1) . b3,((FreeSort b2) * the ResultSort of b1) . b3 holds
b4 = DenOp(b3,b2)
iff
for b5 being FinSequence of TS DTConMSA b2
st Sym(b3,b2) ==> roots b5
holds b4 . b5 = (Sym(b3,b2)) -tree b5;
:: MSAFREE:funcnot 11 => MSAFREE:func 10
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func FreeOper A2 -> ManySortedFunction of (FreeSort a2) # * the Arity of a1,(FreeSort a2) * the ResultSort of a1 means
for b1 being Element of the OperSymbols of a1 holds
it . b1 = DenOp(b1,a2);
end;
:: MSAFREE:def 15
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedFunction of (FreeSort b2) # * the Arity of b1,(FreeSort b2) * the ResultSort of b1 holds
b3 = FreeOper b2
iff
for b4 being Element of the OperSymbols of b1 holds
b3 . b4 = DenOp(b4,b2);
:: MSAFREE:funcnot 12 => MSAFREE:func 11
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func FreeMSA A2 -> MSAlgebra over a1 equals
MSAlgebra(#FreeSort a2,FreeOper a2#);
end;
:: MSAFREE:def 16
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
FreeMSA b2 = MSAlgebra(#FreeSort b2,FreeOper b2#);
:: MSAFREE:funcreg 8
registration
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
cluster FreeMSA a2 -> strict non-empty;
end;
:: MSAFREE:funcnot 13 => MSAFREE:func 12
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 carrier of a1;
func FreeGen(A3,A2) -> Element of bool ((FreeSort 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;
:: MSAFREE:def 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 the carrier of b1
for b4 being Element of bool ((FreeSort b2) . b3) holds
b4 = FreeGen(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];
:: MSAFREE:funcreg 9
registration
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 carrier of a1;
cluster FreeGen(a3,a2) -> non empty;
end;
:: MSAFREE: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 the carrier of b1 holds
FreeGen(b3,b2) = {root-tree b4 where b4 is Element of the carrier of DTConMSA b2: b4 in Terminals DTConMSA b2 & b4 `2 = b3};
:: MSAFREE:funcnot 14 => MSAFREE:func 13
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func FreeGen A2 -> GeneratorSet of FreeMSA a2 means
for b1 being Element of the carrier of a1 holds
it . b1 = FreeGen(b1,a2);
end;
:: MSAFREE:def 18
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being GeneratorSet of FreeMSA b2 holds
b3 = FreeGen b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = FreeGen(b4,b2);
:: MSAFREE:th 15
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
FreeGen b2 is non-empty;
:: MSAFREE:th 16
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
union proj2 FreeGen b2 = {root-tree b3 where b3 is Element of the carrier of DTConMSA b2: b3 in Terminals DTConMSA b2};
:: MSAFREE:funcnot 15 => MSAFREE:func 14
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 carrier of a1;
func Reverse(A3,A2) -> Function-like quasi_total Relation of FreeGen(a3,a2),a2 . a3 means
for b1 being Element of the carrier of DTConMSA a2
st root-tree b1 in FreeGen(a3,a2)
holds it . root-tree b1 = b1 `1;
end;
:: MSAFREE:def 19
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 Function-like quasi_total Relation of FreeGen(b3,b2),b2 . b3 holds
b4 = Reverse(b3,b2)
iff
for b5 being Element of the carrier of DTConMSA b2
st root-tree b5 in FreeGen(b3,b2)
holds b4 . root-tree b5 = b5 `1;
:: MSAFREE:funcnot 16 => MSAFREE:func 15
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty ManySortedSet of the carrier of a1;
func Reverse A2 -> ManySortedFunction of FreeGen a2,a2 means
for b1 being Element of the carrier of a1 holds
it . b1 = Reverse(b1,a2);
end;
:: MSAFREE:def 20
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being ManySortedFunction of FreeGen b2,b2 holds
b3 = Reverse b2
iff
for b4 being Element of the carrier of b1 holds
b3 . b4 = Reverse(b4,b2);
:: MSAFREE:funcnot 17 => MSAFREE:func 16
definition
let a1 be non empty non void ManySortedSign;
let a2, a3 be non-empty ManySortedSet of the carrier of a1;
let a4 be ManySortedFunction of FreeGen a2,a3;
let a5 be Element of the carrier of DTConMSA a2;
assume a5 in Terminals DTConMSA 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;
:: MSAFREE:def 21
theorem
for b1 being non empty non void ManySortedSign
for b2, b3 being non-empty ManySortedSet of the carrier of b1
for b4 being ManySortedFunction of FreeGen b2,b3
for b5 being Element of the carrier of DTConMSA b2
st b5 in Terminals DTConMSA 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;
:: MSAFREE:funcnot 18 => MSAFREE:func 17
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 carrier of DTConMSA 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;
:: MSAFREE:def 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 carrier of DTConMSA 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;
:: MSAFREE:funcnot 19 => MSAFREE:func 18
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be Element of the OperSymbols of a1;
let a4 be Relation-like Function-like FinSequence-like set;
assume a4 in Args(a3,a2);
func pi(A3,A2,A4) -> Element of Union the Sorts of a2 equals
(Den(a3,a2)) . a4;
end;
:: MSAFREE:def 23
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of the OperSymbols of b1
for b4 being Relation-like Function-like FinSequence-like set
st b4 in Args(b3,b2)
holds pi(b3,b2,b4) = (Den(b3,b2)) . b4;
:: MSAFREE:th 17
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
FreeGen b2 is free(b1, FreeMSA b2);
:: MSAFREE:th 18
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1 holds
FreeMSA b2 is free(b1);
:: MSAFREE:exreg 1
registration
let a1 be non empty non void ManySortedSign;
cluster strict non-empty free MSAlgebra over a1;
end;
:: MSAFREE:exreg 2
registration
let a1 be non empty non void ManySortedSign;
let a2 be free MSAlgebra over a1;
cluster Relation-like Function-like free GeneratorSet of a2;
end;
:: MSAFREE:th 19
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
ex b3 being strict non-empty free MSAlgebra over b1 st
ex b4 being ManySortedFunction of the Sorts of b3,the Sorts of b2 st
b4 is_epimorphism b3,b2;
:: MSAFREE:th 20
theorem
for b1 being non empty non void ManySortedSign
for b2 being strict non-empty MSAlgebra over b1 holds
ex b3 being strict non-empty free MSAlgebra over b1 st
ex b4 being ManySortedFunction of the Sorts of b3,the Sorts of b2 st
b4 is_epimorphism b3,b2 & Image b4 = b2;