scheme
BinDTConstrIndDef{
F1()
-> non
empty with_terminals with_nonterminals with_useful_nonterminals binary DTConstrStr ,
F2()
-> non
empty set ,
F3(
set )
-> Element of
F2(),
F4(
set ,
set ,
set ,
set ,
set )
-> Element of
F2() } :
ex
f being
Function of
(TS F1()),
F2() st
( ( 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) ) )
scheme
BinDTConstrUniqDef{
F1()
-> non
empty with_terminals with_nonterminals with_useful_nonterminals binary DTConstrStr ,
F2()
-> non
empty set ,
F3()
-> Function of
(TS F1()),
F2(),
F4()
-> Function of
(TS F1()),
F2(),
F5(
set )
-> Element of
F2(),
F6(
set ,
set ,
set ,
set ,
set )
-> Element of
F2() } :
provided
A1:
( ( for
t being
Terminal of
F1() holds
F3()
. (root-tree t) = F5(
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 = F3()
. tl &
xr = F3()
. tr holds
F3()
. (nt -tree (tl,tr)) = F6(
nt,
rtl,
rtr,
xl,
xr) ) )
and A2:
( ( for
t being
Terminal of
F1() holds
F4()
. (root-tree t) = F5(
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 = F4()
. tl &
xr = F4()
. tr holds
F4()
. (nt -tree (tl,tr)) = F6(
nt,
rtl,
rtr,
xl,
xr) ) )
scheme
BinDTCDefLambda{
F1()
-> non
empty with_terminals with_nonterminals with_useful_nonterminals binary DTConstrStr ,
F2()
-> non
empty set ,
F3()
-> non
empty set ,
F4(
set ,
set )
-> Element of
F3(),
F5(
set ,
set ,
set ,
set )
-> Element of
F3() } :
ex
f being
Function of
(TS F1()),
(Funcs (F2(),F3())) st
( ( for
t being
Terminal of
F1() ex
g being
Function of
F2(),
F3() st
(
g = f . (root-tree t) & ( for
a being
Element of
F2() holds
g . a = F4(
t,
a) ) ) ) & ( for
nt being
NonTerminal of
F1()
for
t1,
t2 being
Element of
TS F1()
for
rtl,
rtr being
Symbol of
F1() st
rtl = root-label t1 &
rtr = root-label t2 &
nt ==> <*rtl,rtr*> holds
ex
g,
f1,
f2 being
Function of
F2(),
F3() st
(
g = f . (nt -tree (t1,t2)) &
f1 = f . t1 &
f2 = f . t2 & ( for
a being
Element of
F2() holds
g . a = F5(
nt,
f1,
f2,
a) ) ) ) )
scheme
BinDTCDefLambdaUniq{
F1()
-> non
empty with_terminals with_nonterminals with_useful_nonterminals binary DTConstrStr ,
F2()
-> non
empty set ,
F3()
-> non
empty set ,
F4()
-> Function of
(TS F1()),
(Funcs (F2(),F3())),
F5()
-> Function of
(TS F1()),
(Funcs (F2(),F3())),
F6(
set ,
set )
-> Element of
F3(),
F7(
set ,
set ,
set ,
set )
-> Element of
F3() } :
provided
A1:
( ( for
t being
Terminal of
F1() ex
g being
Function of
F2(),
F3() st
(
g = F4()
. (root-tree t) & ( for
a being
Element of
F2() holds
g . a = F6(
t,
a) ) ) ) & ( for
nt being
NonTerminal of
F1()
for
t1,
t2 being
Element of
TS F1()
for
rtl,
rtr being
Symbol of
F1() st
rtl = root-label t1 &
rtr = root-label t2 &
nt ==> <*rtl,rtr*> holds
ex
g,
f1,
f2 being
Function of
F2(),
F3() st
(
g = F4()
. (nt -tree (t1,t2)) &
f1 = F4()
. t1 &
f2 = F4()
. t2 & ( for
a being
Element of
F2() holds
g . a = F7(
nt,
f1,
f2,
a) ) ) ) )
and A2:
( ( for
t being
Terminal of
F1() ex
g being
Function of
F2(),
F3() st
(
g = F5()
. (root-tree t) & ( for
a being
Element of
F2() holds
g . a = F6(
t,
a) ) ) ) & ( for
nt being
NonTerminal of
F1()
for
t1,
t2 being
Element of
TS F1()
for
rtl,
rtr being
Symbol of
F1() st
rtl = root-label t1 &
rtr = root-label t2 &
nt ==> <*rtl,rtr*> holds
ex
g,
f1,
f2 being
Function of
F2(),
F3() st
(
g = F5()
. (nt -tree (t1,t2)) &
f1 = F5()
. t1 &
f2 = F5()
. t2 & ( for
a being
Element of
F2() holds
g . a = F7(
nt,
f1,
f2,
a) ) ) ) )