let S be non empty non void ManySortedSign ; for X being non-empty ManySortedSet of S
for A2 being b1,S -terms all_vars_including inheriting_operations MSAlgebra over S holds FreeGen X is GeneratorSet of A2
let X be non-empty ManySortedSet of S; for A2 being X,S -terms all_vars_including inheriting_operations MSAlgebra over S holds FreeGen X is GeneratorSet of A2
let A2 be X,S -terms all_vars_including inheriting_operations MSAlgebra over S; FreeGen X is GeneratorSet of A2
set A = A2;
reconsider G = FreeGen X as ManySortedSubset of the Sorts of A2 by Def7;
defpred S1[ set ] means for s being SortSymbol of S st $1 in the Sorts of A2 . s holds
$1 in the Sorts of (GenMSAlg G) . s;
A1:
FreeMSA X = Free (S,X)
by MSAFREE3:31;
A2:
for s being SortSymbol of S
for v being Element of X . s holds S1[ root-tree [v,s]]
proof
let s be
SortSymbol of
S;
for v being Element of X . s holds S1[ root-tree [v,s]]let v be
Element of
X . s;
S1[ root-tree [v,s]]
reconsider t =
root-tree [v,s] as
Term of
S,
X by MSATERM:4;
let r be
SortSymbol of
S;
( root-tree [v,s] in the Sorts of A2 . r implies root-tree [v,s] in the Sorts of (GenMSAlg G) . r )
assume A3:
root-tree [v,s] in the
Sorts of
A2 . r
;
root-tree [v,s] in the Sorts of (GenMSAlg G) . r
the
Sorts of
A2 is
ManySortedSubset of the
Sorts of
(Free (S,X))
by Def6;
then
the
Sorts of
A2 . r c= the
Sorts of
(Free (S,X)) . r
by PBOOLE:def 2, PBOOLE:def 18;
then
t in the
Sorts of
(Free (S,X)) . r
by A3;
then
t in FreeSort (
X,
r)
by A1, MSAFREE:def 11;
then r =
the_sort_of t
by MSATERM:def 5
.=
s
by MSATERM:14
;
then
root-tree [v,s] in FreeGen (
r,
X)
by MSAFREE:def 15;
then A4:
root-tree [v,s] in (FreeGen X) . r
by MSAFREE:def 16;
FreeGen X is
ManySortedSubset of the
Sorts of
(GenMSAlg G)
by MSUALG_2:def 17;
then
(FreeGen X) . r c= the
Sorts of
(GenMSAlg G) . r
by PBOOLE:def 2, PBOOLE:def 18;
hence
root-tree [v,s] in the
Sorts of
(GenMSAlg G) . r
by A4;
verum
end;
A5:
for o being OperSymbol of S
for p being ArgumentSeq of Sym (o,X) st ( for t being Term of S,X st t in rng p holds
S1[t] ) holds
S1[[o, the carrier of S] -tree p]
proof
let o be
OperSymbol of
S;
for p being ArgumentSeq of Sym (o,X) st ( for t being Term of S,X st t in rng p holds
S1[t] ) holds
S1[[o, the carrier of S] -tree p]let p be
ArgumentSeq of
Sym (
o,
X);
( ( for t being Term of S,X st t in rng p holds
S1[t] ) implies S1[[o, the carrier of S] -tree p] )
assume A6:
for
t being
Term of
S,
X st
t in rng p holds
S1[
t]
;
S1[[o, the carrier of S] -tree p]
let r be
SortSymbol of
S;
( [o, the carrier of S] -tree p in the Sorts of A2 . r implies [o, the carrier of S] -tree p in the Sorts of (GenMSAlg G) . r )
assume
[o, the carrier of S] -tree p in the
Sorts of
A2 . r
;
[o, the carrier of S] -tree p in the Sorts of (GenMSAlg G) . r
then reconsider t1 =
[o, the carrier of S] -tree p as
Element of the
Sorts of
A2 . r ;
p is
SubtreeSeq of
Sym (
o,
X)
by MSATERM:def 2;
then
(
Sym (
o,
X)
==> roots p &
p is
FinSequence of
TS (DTConMSA X) )
by DTCONSTR:def 6;
then A7:
t1 = (DenOp (o,X)) . p
by MSAFREE:def 12;
p is
Element of
Args (
o,
(FreeMSA X))
by INSTALG1:1;
then
p in Args (
o,
(FreeMSA X))
;
then A8:
p in Args (
o,
(Free (S,X)))
by MSAFREE3:31;
then
(
(Den (o,(Free (S,X)))) . p in ( the Sorts of (Free (S,X)) * the ResultSort of S) . o &
dom the
ResultSort of
S = the
carrier' of
S )
by FUNCT_2:5, FUNCT_2:def 1;
then A9:
(Den (o,(Free (S,X)))) . p in the
Sorts of
(Free (S,X)) . (the_result_sort_of o)
by FUNCT_1:13;
(Den (o,(Free (S,X)))) . p = t1
by A1, A7, MSAFREE:def 13;
then
(Den (o,(Free (S,X)))) . p in the
Sorts of
A2 . (the_result_sort_of o)
by A9, Th43;
then A10:
(
p in Args (
o,
A2) &
(Den (o,A2)) . p = (Den (o,(Free (S,X)))) . p )
by A8, Def8;
A11:
dom the
Arity of
S = the
carrier' of
S
by FUNCT_2:def 1;
A12:
Args (
o,
(GenMSAlg G)) =
H1( the
Sorts of
(GenMSAlg G) # ,
the_arity_of o)
by A11, FUNCT_1:13
.=
product ( the Sorts of (GenMSAlg G) * (the_arity_of o))
by FINSEQ_2:def 5
;
A13:
Args (
o,
A2) =
H1( the
Sorts of
A2 # ,
the_arity_of o)
by A11, FUNCT_1:13
.=
product ( the Sorts of A2 * (the_arity_of o))
by FINSEQ_2:def 5
;
A14:
dom ( the Sorts of (GenMSAlg G) * (the_arity_of o)) = dom (the_arity_of o)
by PARTFUN1:def 2;
A15:
dom ( the Sorts of A2 * (the_arity_of o)) = dom (the_arity_of o)
by PARTFUN1:def 2;
then A16:
dom p = dom (the_arity_of o)
by A10, A13, CARD_3:9;
now for x being object st x in dom (the_arity_of o) holds
p . x in ( the Sorts of (GenMSAlg G) * (the_arity_of o)) . xlet x be
object ;
( x in dom (the_arity_of o) implies p . x in ( the Sorts of (GenMSAlg G) * (the_arity_of o)) . x )assume A17:
x in dom (the_arity_of o)
;
p . x in ( the Sorts of (GenMSAlg G) * (the_arity_of o)) . xthen A18:
(
p . x in rng p &
p . x in ( the Sorts of A2 * (the_arity_of o)) . x )
by A16, FUNCT_1:def 3, CARD_3:9, A10, A15, A13;
(
(the_arity_of o) . x in rng (the_arity_of o) &
rng (the_arity_of o) c= the
carrier of
S )
by A17, FUNCT_1:def 3;
then reconsider s =
(the_arity_of o) . x as
SortSymbol of
S ;
reconsider px =
p . x as
Element of the
Sorts of
A2 . s by A18, A17, FUNCT_1:13;
px is
Term of
S,
X
by Th42;
then
px in the
Sorts of
(GenMSAlg G) . s
by A18, A6;
hence
p . x in ( the Sorts of (GenMSAlg G) * (the_arity_of o)) . x
by A17, FUNCT_1:13;
verum end;
then reconsider q =
p as
Element of
Args (
o,
(GenMSAlg G))
by A12, A16, A14, CARD_3:9;
reconsider B = the
Sorts of
(GenMSAlg G) as
ManySortedSubset of the
Sorts of
A2 by MSUALG_2:def 9;
A19:
(
B is
opers_closed & the
Charact of
(GenMSAlg G) = Opers (
A2,
B) )
by MSUALG_2:def 9;
A20:
B is_closed_on o
by MSUALG_2:def 6, MSUALG_2:def 9;
Den (
o,
(GenMSAlg G)) =
o /. B
by A19, MSUALG_2:def 8
.=
(Den (o,A2)) | (((B #) * the Arity of S) . o)
by A20, MSUALG_2:def 7
;
then A21:
(Den (o,(GenMSAlg G))) . p = (Den (o,A2)) . q
by FUNCT_1:49;
A22:
(Den (o,(GenMSAlg G))) . q = [o, the carrier of S] -tree p
by A1, A21, A7, A10, MSAFREE:def 13;
then A23:
[o, the carrier of S] -tree p in Result (
o,
(GenMSAlg G))
by FUNCT_2:5;
dom the
ResultSort of
S = the
carrier' of
S
by FUNCT_2:def 1;
then A24:
(
Result (
o,
(GenMSAlg G))
= the
Sorts of
(GenMSAlg G) . (the_result_sort_of o) &
Result (
o,
A2)
= the
Sorts of
A2 . (the_result_sort_of o) )
by FUNCT_1:13;
(
t1 in Result (
o,
A2) &
t1 in the
Sorts of
A2 . r )
by A10, A21, A22, FUNCT_2:5;
hence
[o, the carrier of S] -tree p in the
Sorts of
(GenMSAlg G) . r
by A23, A24, PROB_2:def 2, XBOOLE_0:3;
verum
end;
A25:
for t being Term of S,X holds S1[t]
from MSATERM:sch 1(A2, A5);
G is GeneratorSet of A2
hence
FreeGen X is GeneratorSet of A2
; verum