begin
theorem Th1:
theorem Th2:
theorem
:: deftheorem Def1 defines Flatten MSAFREE1:def 1 :
for I being non empty set
for X being disjoint_valued ManySortedSet of I
for D being V2() ManySortedSet of I
for F being ManySortedFunction of X,D
for b5 being Function of (Union X),(Union D) holds
( b5 = Flatten F iff for i being Element of I
for x being set st x in X . i holds
b5 . x = (F . i) . x );
theorem Th4:
:: deftheorem Def2 defines disjoint_valued MSAFREE1:def 2 :
for S being non empty ManySortedSign
for A being MSAlgebra of S holds
( A is disjoint_valued iff the Sorts of A is disjoint_valued );
:: deftheorem Def3 defines SingleAlg MSAFREE1:def 3 :
for S being non empty ManySortedSign
for b2 being strict MSAlgebra of S holds
( b2 = SingleAlg S iff for i being set st i in the carrier of S holds
the Sorts of b2 . i = {i} );
Lm1:
for S being non empty ManySortedSign holds
( SingleAlg S is non-empty & SingleAlg S is disjoint_valued )
theorem Th5:
scheme
FreeSortUniq{
F1()
-> non
empty non
void ManySortedSign ,
F2()
-> V2()
ManySortedSet of the
carrier of
F1(),
F3()
-> V2()
ManySortedSet of the
carrier of
F1(),
F4(
set )
-> Element of
Union F3(),
F5(
set ,
set ,
set )
-> Element of
Union F3(),
F6()
-> ManySortedFunction of
FreeSort F2(),
F3(),
F7()
-> ManySortedFunction of
FreeSort F2(),
F3() } :
provided
A1:
for
o being
OperSymbol of
F1()
for
ts being
Element of
Args (
o,
(FreeMSA F2()))
for
x being
FinSequence of
Union F3() st
x = (Flatten F6()) * ts holds
(F6() . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = F5(
o,
ts,
x)
and A2:
for
s being
SortSymbol of
F1()
for
y being
set st
y in FreeGen (
s,
F2()) holds
(F6() . s) . y = F4(
y)
and A3:
for
o being
OperSymbol of
F1()
for
ts being
Element of
Args (
o,
(FreeMSA F2()))
for
x being
FinSequence of
Union F3() st
x = (Flatten F7()) * ts holds
(F7() . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = F5(
o,
ts,
x)
and A4:
for
s being
SortSymbol of
F1()
for
y being
set st
y in FreeGen (
s,
F2()) holds
(F7() . s) . y = F4(
y)
scheme
ExtFreeGen{
F1()
-> non
empty non
void ManySortedSign ,
F2()
-> V2()
ManySortedSet of the
carrier of
F1(),
F3()
-> non-empty MSAlgebra of
F1(),
P1[
set ,
set ,
set ],
F4()
-> ManySortedFunction of
(FreeMSA F2()),
F3(),
F5()
-> ManySortedFunction of
(FreeMSA F2()),
F3() } :
provided
A1:
F4()
is_homomorphism FreeMSA F2(),
F3()
and A2:
for
s being
SortSymbol of
F1()
for
x,
y being
set st
y in FreeGen (
s,
F2()) holds
(
(F4() . s) . y = x iff
P1[
s,
x,
y] )
and A3:
F5()
is_homomorphism FreeMSA F2(),
F3()
and A4:
for
s being
SortSymbol of
F1()
for
x,
y being
set st
y in FreeGen (
s,
F2()) holds
(
(F5() . s) . y = x iff
P1[
s,
x,
y] )