Article MSAFREE2, MML version 4.99.1005
:: MSAFREE2:modenot 1
definition
let a1 be ManySortedSign;
mode Vertex of a1 is Element of the carrier of a1;
end;
:: MSAFREE2:funcnot 1 => MSAFREE2:func 1
definition
let a1 be non empty ManySortedSign;
func SortsWithConstants A1 -> Element of bool the carrier of a1 equals
{b1 where b1 is Element of the carrier of a1: b1 is with_const_op(a1)}
if a1 is not void
otherwise {};
end;
:: MSAFREE2:def 1
theorem
for b1 being non empty ManySortedSign holds
(b1 is void or SortsWithConstants b1 = {b2 where b2 is Element of the carrier of b1: b2 is with_const_op(b1)}) &
(b1 is void implies SortsWithConstants b1 = {});
:: MSAFREE2:funcnot 2 => MSAFREE2:func 2
definition
let a1 be non empty ManySortedSign;
func InputVertices A1 -> Element of bool the carrier of a1 equals
(the carrier of a1) \ rng the ResultSort of a1;
end;
:: MSAFREE2:def 2
theorem
for b1 being non empty ManySortedSign holds
InputVertices b1 = (the carrier of b1) \ rng the ResultSort of b1;
:: MSAFREE2:funcnot 3 => MSAFREE2:func 3
definition
let a1 be non empty ManySortedSign;
func InnerVertices A1 -> Element of bool the carrier of a1 equals
rng the ResultSort of a1;
end;
:: MSAFREE2:def 3
theorem
for b1 being non empty ManySortedSign holds
InnerVertices b1 = rng the ResultSort of b1;
:: MSAFREE2:th 1
theorem
for b1 being non empty void ManySortedSign holds
InputVertices b1 = the carrier of b1;
:: MSAFREE2:th 2
theorem
for b1 being non empty non void ManySortedSign
for b2 being Element of the carrier of b1
st b2 in InputVertices b1
for b3 being Element of the OperSymbols of b1 holds
the_result_sort_of b3 <> b2;
:: MSAFREE2:th 5
theorem
for b1 being non empty ManySortedSign holds
SortsWithConstants b1 c= InnerVertices b1;
:: MSAFREE2:th 6
theorem
for b1 being non empty ManySortedSign holds
InputVertices b1 misses SortsWithConstants b1;
:: MSAFREE2:attrnot 1 => MSAFREE2:attr 1
definition
let a1 be non empty ManySortedSign;
attr a1 is with_input_V means
InputVertices a1 <> {};
end;
:: MSAFREE2:dfs 4
definiens
let a1 be non empty ManySortedSign;
To prove
a1 is with_input_V
it is sufficient to prove
thus InputVertices a1 <> {};
:: MSAFREE2:def 4
theorem
for b1 being non empty ManySortedSign holds
b1 is with_input_V
iff
InputVertices b1 <> {};
:: MSAFREE2:exreg 1
registration
cluster non empty non void with_input_V ManySortedSign;
end;
:: MSAFREE2:funcreg 1
registration
let a1 be non empty with_input_V ManySortedSign;
cluster InputVertices a1 -> non empty;
end;
:: MSAFREE2:funcnot 4 => MSAFREE2:func 4
definition
let a1 be non empty non void ManySortedSign;
redefine func InnerVertices a1 -> non empty Element of bool the carrier of a1;
end;
:: MSAFREE2:modenot 2 => MSAFREE2:mode 1
definition
let a1 be non empty ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
mode InputValues of A2 -> ManySortedSet of InputVertices a1 means
for b1 being Element of the carrier of a1
st b1 in InputVertices a1
holds it . b1 in (the Sorts of a2) . b1;
end;
:: MSAFREE2:dfs 5
definiens
let a1 be non empty ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
let a3 be ManySortedSet of InputVertices a1;
To prove
a3 is InputValues of a2
it is sufficient to prove
thus for b1 being Element of the carrier of a1
st b1 in InputVertices a1
holds a3 . b1 in (the Sorts of a2) . b1;
:: MSAFREE2:def 5
theorem
for b1 being non empty ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being ManySortedSet of InputVertices b1 holds
b3 is InputValues of b2
iff
for b4 being Element of the carrier of b1
st b4 in InputVertices b1
holds b3 . b4 in (the Sorts of b2) . b4;
:: MSAFREE2:attrnot 2 => MSAFREE2:attr 2
definition
let a1 be non empty ManySortedSign;
attr a1 is Circuit-like means
for b1 being non empty non void ManySortedSign
st b1 = a1
for b2, b3 being Element of the OperSymbols of b1
st the_result_sort_of b2 = the_result_sort_of b3
holds b2 = b3;
end;
:: MSAFREE2:dfs 6
definiens
let a1 be non empty ManySortedSign;
To prove
a1 is Circuit-like
it is sufficient to prove
thus for b1 being non empty non void ManySortedSign
st b1 = a1
for b2, b3 being Element of the OperSymbols of b1
st the_result_sort_of b2 = the_result_sort_of b3
holds b2 = b3;
:: MSAFREE2:def 6
theorem
for b1 being non empty ManySortedSign holds
b1 is Circuit-like
iff
for b2 being non empty non void ManySortedSign
st b2 = b1
for b3, b4 being Element of the OperSymbols of b2
st the_result_sort_of b3 = the_result_sort_of b4
holds b3 = b4;
:: MSAFREE2:condreg 1
registration
cluster non empty void -> Circuit-like (ManySortedSign);
end;
:: MSAFREE2:exreg 2
registration
cluster non empty strict non void Circuit-like ManySortedSign;
end;
:: MSAFREE2:funcnot 5 => MSAFREE2:func 5
definition
let a1 be non empty non void Circuit-like ManySortedSign;
let a2 be Element of the carrier of a1;
assume a2 in InnerVertices a1;
func action_at A2 -> Element of the OperSymbols of a1 means
the_result_sort_of it = a2;
end;
:: MSAFREE2:def 7
theorem
for b1 being non empty non void Circuit-like ManySortedSign
for b2 being Element of the carrier of b1
st b2 in InnerVertices b1
for b3 being Element of the OperSymbols of b1 holds
b3 = action_at b2
iff
the_result_sort_of b3 = b2;
:: MSAFREE2:th 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over 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 &
(for b5 being natural set
st b5 in dom b4
holds b4 . b5 in (the Sorts of b2) . ((the_arity_of b3) /. b5))
holds b4 in Args(b3,b2);
:: MSAFREE2:funcnot 6 => MSAFREE2:func 6
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
func FreeEnv A2 -> strict non-empty free MSAlgebra over a1 equals
FreeMSA the Sorts of a2;
end;
:: MSAFREE2:def 8
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
FreeEnv b2 = FreeMSA the Sorts of b2;
:: MSAFREE2:funcnot 7 => MSAFREE2:func 7
definition
let a1 be non empty non void ManySortedSign;
let a2 be non-empty MSAlgebra over a1;
func Eval A2 -> ManySortedFunction of the Sorts of FreeEnv a2,the Sorts of a2 means
it is_homomorphism FreeEnv a2,a2 &
(for b1 being Element of the carrier of a1
for b2, b3 being set
st b3 in FreeSort(the Sorts of a2,b1) & b3 = root-tree [b2,b1] & b2 in (the Sorts of a2) . b1
holds (it . b1) . b3 = b2);
end;
:: MSAFREE2:def 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being ManySortedFunction of the Sorts of FreeEnv b2,the Sorts of b2 holds
b3 = Eval b2
iff
b3 is_homomorphism FreeEnv b2,b2 &
(for b4 being Element of the carrier of b1
for b5, b6 being set
st b6 in FreeSort(the Sorts of b2,b4) & b6 = root-tree [b5,b4] & b5 in (the Sorts of b2) . b4
holds (b3 . b4) . b6 = b5);
:: MSAFREE2:th 9
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
the Sorts of b2 is GeneratorSet of b2;
:: MSAFREE2:attrnot 3 => MSAFREE2:attr 3
definition
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
attr a2 is finitely-generated means
for b1 being non empty non void ManySortedSign
st b1 = a1
for b2 being MSAlgebra over b1
st b2 = a2
holds ex b3 being GeneratorSet of b2 st
b3 is finite-yielding
if a1 is not void
otherwise the Sorts of a2 is finite-yielding;
end;
:: MSAFREE2:dfs 10
definiens
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
To prove
a2 is finitely-generated
it is sufficient to prove
per cases;
case a1 is not void;
thus for b1 being non empty non void ManySortedSign
st b1 = a1
for b2 being MSAlgebra over b1
st b2 = a2
holds ex b3 being GeneratorSet of b2 st
b3 is finite-yielding;
end;
case a1 is void;
thus the Sorts of a2 is finite-yielding;
end;
:: MSAFREE2:def 10
theorem
for b1 being non empty ManySortedSign
for b2 being MSAlgebra over b1 holds
(b1 is void or (b2 is finitely-generated(b1)
iff
for b3 being non empty non void ManySortedSign
st b3 = b1
for b4 being MSAlgebra over b3
st b4 = b2
holds ex b5 being GeneratorSet of b4 st
b5 is finite-yielding)) &
(b1 is void implies (b2 is finitely-generated(b1)
iff
the Sorts of b2 is finite-yielding));
:: MSAFREE2:attrnot 4 => MSAFREE2:attr 4
definition
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
attr a2 is locally-finite means
the Sorts of a2 is finite-yielding;
end;
:: MSAFREE2:dfs 11
definiens
let a1 be non empty ManySortedSign;
let a2 be MSAlgebra over a1;
To prove
a2 is locally-finite
it is sufficient to prove
thus the Sorts of a2 is finite-yielding;
:: MSAFREE2:def 11
theorem
for b1 being non empty ManySortedSign
for b2 being MSAlgebra over b1 holds
b2 is locally-finite(b1)
iff
the Sorts of b2 is finite-yielding;
:: MSAFREE2:condreg 2
registration
let a1 be non empty ManySortedSign;
cluster non-empty locally-finite -> finitely-generated (MSAlgebra over a1);
end;
:: MSAFREE2:funcnot 8 => MSAFREE2:func 8
definition
let a1 be non empty ManySortedSign;
func Trivial_Algebra A1 -> strict MSAlgebra over a1 means
the Sorts of it = (the carrier of a1) --> {{}};
end;
:: MSAFREE2:def 12
theorem
for b1 being non empty ManySortedSign
for b2 being strict MSAlgebra over b1 holds
b2 = Trivial_Algebra b1
iff
the Sorts of b2 = (the carrier of b1) --> {{}};
:: MSAFREE2:exreg 3
registration
let a1 be non empty ManySortedSign;
cluster strict non-empty locally-finite MSAlgebra over a1;
end;
:: MSAFREE2:attrnot 5 => MSAFREE2:attr 5
definition
let a1 be non empty ManySortedSign;
attr a1 is monotonic means
for b1 being non-empty finitely-generated MSAlgebra over a1 holds
b1 is locally-finite(a1);
end;
:: MSAFREE2:dfs 13
definiens
let a1 be non empty ManySortedSign;
To prove
a1 is monotonic
it is sufficient to prove
thus for b1 being non-empty finitely-generated MSAlgebra over a1 holds
b1 is locally-finite(a1);
:: MSAFREE2:def 13
theorem
for b1 being non empty ManySortedSign holds
b1 is monotonic
iff
for b2 being non-empty finitely-generated MSAlgebra over b1 holds
b2 is locally-finite(b1);
:: MSAFREE2:exreg 4
registration
cluster non empty finite non void Circuit-like monotonic ManySortedSign;
end;
:: MSAFREE2: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 carrier of b1
for b4 being Element of (the Sorts of FreeMSA b2) . b3 holds
b4 is Relation-like Function-like finite DecoratedTree-like set;
:: MSAFREE2:th 11
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty finite-yielding ManySortedSet of the carrier of b1 holds
FreeMSA b2 is finitely-generated(b1);
:: MSAFREE2:th 12
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of the carrier of b1
for b4 being Element of (the Sorts of FreeEnv b2) . b3
st b3 in InputVertices b1
holds ex b5 being Element of (the Sorts of b2) . b3 st
b4 = root-tree [b5,b3];
:: MSAFREE2:th 13
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 DTree-yielding set
st [b3,the carrier of b1] -tree b4 in (the Sorts of FreeMSA b2) . the_result_sort_of b3
holds len b4 = len the_arity_of b3;
:: MSAFREE2: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 OperSymbols of b1
for b4 being Relation-like Function-like FinSequence-like DTree-yielding set
st [b3,the carrier of b1] -tree b4 in (the Sorts of FreeMSA b2) . the_result_sort_of b3
for b5 being natural set
st b5 in dom the_arity_of b3
holds b4 . b5 in (the Sorts of FreeMSA b2) . ((the_arity_of b3) . b5);
:: MSAFREE2:condreg 3
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 -> Relation-like Function-like non empty finite (Element of (the Sorts of FreeMSA a2) . a3);
end;
:: MSAFREE2:exreg 5
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 Relation-like Function-like non empty finite Element of (the Sorts of FreeMSA a2) . a3;
end;
:: MSAFREE2:condreg 4
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 Relation-like Function-like -> DecoratedTree-like (Element of (the Sorts of FreeMSA a2) . a3);
end;
:: MSAFREE2:exreg 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 Relation-like Function-like non empty finite DecoratedTree-like Element of (the Sorts of FreeMSA a2) . a3;
end;
:: MSAFREE2: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 Element of the carrier of b1
for b4 being Element of the OperSymbols of b1
for b5 being Element of (the Sorts of FreeMSA b2) . b3
st b3 in InnerVertices b1 &
b5 . {} = [b4,the carrier of b1]
holds ex b6 being Relation-like Function-like FinSequence-like DTree-yielding set st
len b6 = len the_arity_of b4 &
(for b7 being natural set
st b7 in dom b6
holds b6 . b7 in (the Sorts of FreeMSA b2) . ((the_arity_of b4) . b7));
:: MSAFREE2:funcnot 9 => MSAFREE2: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 carrier of a1;
let a4 be Element of (the Sorts of FreeMSA a2) . a3;
func depth A4 -> natural set means
ex b1 being Relation-like Function-like finite DecoratedTree-like set st
ex b2 being non empty finite Tree-like set st
b1 = a4 & b2 = proj1 b1 & it = height b2;
end;
:: MSAFREE2: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 carrier of b1
for b4 being Element of (the Sorts of FreeMSA b2) . b3
for b5 being natural set holds
b5 = depth b4
iff
ex b6 being Relation-like Function-like finite DecoratedTree-like set st
ex b7 being non empty finite Tree-like set st
b6 = b4 & b7 = proj1 b6 & b5 = height b7;