deffunc H1( Symbol of F1(), FinSequence, FinSequence of F2()) -> Element of F2() = F4($1,($2 . 1),($2 . 2),($3 . 1),($3 . 2));
consider f being Function of (TS F1()),F2() such that
A1:
for t being Symbol of F1() st t in Terminals F1() holds
f . (root-tree t) = F3(t)
and
A2:
for nt being Symbol of F1()
for ts being FinSequence of TS F1() st nt ==> roots ts holds
f . (nt -tree ts) = H1(nt, roots ts,f * ts)
from DTCONSTR:sch 8();
take
f
; ( ( for t being Terminal of F1() holds f . (root-tree t) = F3(t) ) & ( for nt being NonTerminal of F1()
for tl, tr being Element of TS F1()
for rtl, rtr being Symbol of F1() st rtl = root-label tl & rtr = root-label tr & nt ==> <*rtl,rtr*> holds
for xl, xr being Element of F2() st xl = f . tl & xr = f . tr holds
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr) ) )
thus
for t being Terminal of F1() holds f . (root-tree t) = F3(t)
by A1; for nt being NonTerminal of F1()
for tl, tr being Element of TS F1()
for rtl, rtr being Symbol of F1() st rtl = root-label tl & rtr = root-label tr & nt ==> <*rtl,rtr*> holds
for xl, xr being Element of F2() st xl = f . tl & xr = f . tr holds
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr)
let nt be NonTerminal of F1(); for tl, tr being Element of TS F1()
for rtl, rtr being Symbol of F1() st rtl = root-label tl & rtr = root-label tr & nt ==> <*rtl,rtr*> holds
for xl, xr being Element of F2() st xl = f . tl & xr = f . tr holds
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr)
let tl, tr be Element of TS F1(); for rtl, rtr being Symbol of F1() st rtl = root-label tl & rtr = root-label tr & nt ==> <*rtl,rtr*> holds
for xl, xr being Element of F2() st xl = f . tl & xr = f . tr holds
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr)
let rtl, rtr be Symbol of F1(); ( rtl = root-label tl & rtr = root-label tr & nt ==> <*rtl,rtr*> implies for xl, xr being Element of F2() st xl = f . tl & xr = f . tr holds
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr) )
assume that
A3:
rtl = root-label tl
and
A4:
rtr = root-label tr
and
A5:
nt ==> <*rtl,rtr*>
; for xl, xr being Element of F2() st xl = f . tl & xr = f . tr holds
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr)
reconsider rts = <*rtl,rtr*> as FinSequence ;
reconsider ts = <*tl,tr*> as FinSequence of TS F1() ;
let xl, xr be Element of F2(); ( xl = f . tl & xr = f . tr implies f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr) )
A7:
dom ts = {1,2}
by FINSEQ_1:2, FINSEQ_1:89;
reconsider x = <*xl,xr*> as FinSequence of F2() ;
A8:
dom x = {1,2}
by FINSEQ_1:2, FINSEQ_1:89;
A10:
dom f = TS F1()
by FUNCT_2:def 1;
assume A15:
( xl = f . tl & xr = f . tr )
; f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr)
then A16:
x = f * ts
by A11, FUNCT_1:10;
dom rts = {1,2}
by FINSEQ_1:2, FINSEQ_1:89;
then
rts = roots ts
by A7, A19, TREES_3:def 18;
then A21:
f . (nt -tree ts) = F4(nt,(rts . 1),(rts . 2),(x . 1),(x . 2))
by A2, A5, A16;
thus
f . (nt -tree (tl,tr)) = F4(nt,rtl,rtr,xl,xr)
by A21, TREES_4:def 6; verum