eeval
Fun
n
e
ns
vs
p
eeval[False][Let]
Fun
n
e
ns
vs
p
lookbody
n
p
eeval
Eq
f
s
ns
vs
p
eeval[True][Ite]
eqExp
eeval
f
ns
vs
p
eeval
s
ns
vs
p
Eq
f
s
ns
vs
p
eeval
Error
e11
e12
ns
vs
p
eeval[False][Ite]
False
Error
e11
e12
ns
vs
p
eeval
F
ns
vs
p
F
eeval
T
ns
vs
p
T
eeval
ITE
i
t
e
ns
vs
p
eeval[Ite]
checkConstrExp
eeval
i
ns
vs
p
T
ITE
i
t
e
ns
vs
p
eeval
Bsf
op
t1
t2
ns
vs
p
eeval[Let]
Bsf
op
t1
t2
ns
vs
p
eeval
t1
ns
vs
p
eeval
Var
int
ns
vs
p
lookvar
int
ns
vs
run
Cons
Fun
f0
e
xs
input
run[Let][Let]
Cons
Fun
f0
e
xs
input
f0
lookbody
f0
Cons
Fun
f0
e
xs
eqExp
Error
e11
e12
Error
e21
e22
and
eqExp
e11
e21
eqExp
e12
e22
eqExp
Error
e11
e12
F
False
eqExp
Error
e11
e12
T
False
eqExp
Error
e11
e12
Fun
fn2
fe2
False
eqExp
Error
e11
e12
Eq
eq21
eq22
False
eqExp
Error
e11
e12
ITE
i2
t2
e2
False
eqExp
Error
e11
e12
Bsf
op2
b21
b22
False
eqExp
Error
e11
e12
Var
v2
False
eqExp
F
Error
e21
e22
False
eqExp
F
F
True
eqExp
F
T
False
eqExp
F
Fun
fn2
fe2
False
eqExp
F
Eq
eq21
eq22
False
eqExp
F
ITE
i2
t2
e2
False
eqExp
F
Bsf
op2
b21
b22
False
eqExp
F
Var
v2
False
eqExp
T
Error
e21
e22
False
eqExp
T
F
False
eqExp
T
T
True
eqExp
T
Fun
fn2
fe2
False
eqExp
T
Eq
eq21
eq22
False
eqExp
T
ITE
i2
t2
e2
False
eqExp
T
Bsf
op2
b21
b22
False
eqExp
T
Var
v2
False
eqExp
Fun
fn1
fe1
Error
e21
e22
False
eqExp
Fun
fn1
fe1
F
False
eqExp
Fun
fn1
fe1
T
False
eqExp
Fun
fn1
fe1
Fun
fn2
fe2
and
!EQ
fn1
fn2
eqExp
fe1
fe2
eqExp
Fun
fn1
fe1
Eq
eq21
eq22
False
eqExp
Fun
fn1
fe1
ITE
i2
t2
e2
False
eqExp
Fun
fn1
fe1
Bsf
op2
b21
b22
False
eqExp
Fun
fn1
fe1
Var
v2
False
eqExp
Eq
eq11
eq12
Error
e21
e22
False
eqExp
Eq
eq11
eq12
F
False
eqExp
Eq
eq11
eq12
T
False
eqExp
Eq
eq11
eq12
Fun
fn2
fe2
False
eqExp
Eq
eq11
eq12
Eq
eq21
eq22
and
eqExp
eq11
eq21
eqExp
eq12
eq22
eqExp
Eq
eq11
eq12
ITE
i2
t2
e2
False
eqExp
Eq
eq11
eq12
Bsf
op2
b21
b22
False
eqExp
Eq
eq11
eq12
Var
v2
False
eqExp
ITE
i1
t1
e1
Error
e21
e22
False
eqExp
ITE
i1
t1
e1
F
False
eqExp
ITE
i1
t1
e1
T
False
eqExp
ITE
i1
t1
e1
Fun
fn2
fe2
False
eqExp
ITE
i1
t1
e1
Eq
eq21
eq22
False
eqExp
ITE
i1
t1
e1
ITE
i2
t2
e2
and
eqExp
i1
i2
and
eqExp
t1
t2
eqExp
e1
e2
eqExp
ITE
i1
t1
e1
Bsf
op2
b21
b22
False
eqExp
ITE
i1
t1
e1
Var
v2
False
eqExp
Bsf
op1
b11
b12
Error
e21
e22
False
eqExp
Bsf
op1
b11
b12
F
False
eqExp
Bsf
op1
b11
b12
T
False
eqExp
Bsf
op1
b11
b12
Fun
fn2
fe2
False
eqExp
Bsf
op1
b11
b12
Eq
eq21
eq22
False
eqExp
Bsf
op1
b11
b12
ITE
i2
t2
e2
False
eqExp
Bsf
o1
b11
b12
Bsf
o2
b21
b22
and
True
and
eqExp
b11
b21
eqExp
b12
b22
eqExp
Bsf
op1
b11
b12
Var
v2
False
eqExp
Var
v1
Error
e21
e22
False
eqExp
Var
v1
F
False
eqExp
Var
v1
T
False
eqExp
Var
v1
Fun
fn2
fe2
False
eqExp
Var
v1
Eq
eq21
eq22
False
eqExp
Var
v1
ITE
i2
t2
e2
False
eqExp
Var
v1
Bsf
op2
b21
b22
False
eqExp
Var
v1
Var
v2
!EQ
v1
v2
checkConstrExp
Error
e11
e12
Error
e21
e22
True
checkConstrExp
Error
e11
e12
F
False
checkConstrExp
Error
e11
e12
T
False
checkConstrExp
Error
e11
e12
Fun
fn2
fe2
False
checkConstrExp
Error
e11
e12
Eq
eq21
eq22
False
checkConstrExp
Error
e11
e12
ITE
i2
t2
e2
False
checkConstrExp
Error
e11
e12
Bsf
op2
b21
b22
False
checkConstrExp
Error
e11
e12
Var
v2
False
checkConstrExp
F
Error
e21
e22
False
checkConstrExp
F
F
True
checkConstrExp
F
T
False
checkConstrExp
F
Fun
fn2
fe2
False
checkConstrExp
F
Eq
eq21
eq22
False
checkConstrExp
F
ITE
i2
t2
e2
False
checkConstrExp
F
Bsf
op2
b21
b22
False
checkConstrExp
F
Var
v2
False
checkConstrExp
T
Error
e21
e22
False
checkConstrExp
T
F
False
checkConstrExp
T
T
True
checkConstrExp
T
Fun
fn2
fe2
False
checkConstrExp
T
Eq
eq21
eq22
False
checkConstrExp
T
ITE
i2
t2
e2
False
checkConstrExp
T
Bsf
op2
b21
b22
False
checkConstrExp
T
Var
v2
False
checkConstrExp
Fun
fn1
fe1
Error
e21
e22
False
checkConstrExp
Fun
fn1
fe1
F
False
checkConstrExp
Fun
fn1
fe1
T
False
checkConstrExp
Fun
fn1
fe1
Fun
fn2
fe2
True
checkConstrExp
Fun
fn1
fe1
Eq
eq21
eq22
False
checkConstrExp
Fun
fn1
fe1
ITE
i2
t2
e2
False
checkConstrExp
Fun
fn1
fe1
Bsf
op2
b21
b22
False
checkConstrExp
Fun
fn1
fe1
Var
v2
False
checkConstrExp
Eq
eq11
eq12
Error
e21
e22
False
checkConstrExp
Eq
eq11
eq12
F
False
checkConstrExp
Eq
eq11
eq12
T
False
checkConstrExp
Eq
eq11
eq12
Fun
fn2
fe2
False
checkConstrExp
Eq
eq11
eq12
Eq
eq21
eq22
True
checkConstrExp
Eq
eq11
eq12
ITE
i2
t2
e2
False
checkConstrExp
Eq
eq11
eq12
Bsf
op2
b21
b22
False
checkConstrExp
Eq
eq11
eq12
Var
v2
False
checkConstrExp
ITE
i1
t1
e1
Error
e21
e22
False
checkConstrExp
ITE
i1
t1
e1
F
False
checkConstrExp
ITE
i1
t1
e1
T
False
checkConstrExp
ITE
i1
t1
e1
Fun
fn2
fe2
False
checkConstrExp
ITE
i1
t1
e1
Eq
eq21
eq22
False
checkConstrExp
ITE
i1
t1
e1
ITE
i2
t2
e2
True
checkConstrExp
ITE
i1
t1
e1
Bsf
op2
b21
b22
False
checkConstrExp
ITE
i1
t1
e1
Var
v2
False
checkConstrExp
Bsf
op1
b11
b12
Error
e21
e22
False
checkConstrExp
Bsf
op1
b11
b12
F
False
checkConstrExp
Bsf
op1
b11
b12
T
False
checkConstrExp
Bsf
op1
b11
b12
Fun
fn2
fe2
False
checkConstrExp
Bsf
op1
b11
b12
Eq
eq21
eq22
False
checkConstrExp
Bsf
op1
b11
b12
ITE
i2
t2
e2
False
checkConstrExp
Bsf
op1
b11
b12
Bsf
op2
b21
b22
True
checkConstrExp
Bsf
op1
b11
b12
Var
v2
False
checkConstrExp
Var
v1
Error
e21
e22
False
checkConstrExp
Var
v1
F
False
checkConstrExp
Var
v1
T
False
checkConstrExp
Var
v1
Fun
fn2
fe2
False
checkConstrExp
Var
v1
Eq
eq21
eq22
False
checkConstrExp
Var
v1
ITE
i2
t2
e2
False
checkConstrExp
Var
v1
Bsf
op2
b21
b22
False
checkConstrExp
Var
v1
Var
v2
True
lookname
f
Cons
Fun
n
e
xs
lookname[Ite]
!EQ
f
n
f
Cons
Fun
n
e
xs
lookbody
f
Cons
Fun
n
e
xs
lookbody[Ite]
!EQ
f
n
f
Cons
Fun
n
e
xs
getVar
Var
int
int
getIfTrue
ITE
i
t
e
t
getIfGuard
ITE
i
t
e
i
getIfFalse
ITE
i
t
e
e
getFuncName
Fun
n
e
n
getFuncExp
Fun
n
e
e
getEqSecond
Eq
f
s
s
getEqFirst
Eq
f
s
f
getConst
Cst
int
int
getBsfSecondTerm
Bsf
op
t1
t2
t2
getBsfOp
Bsf
op
t1
t2
op
getBsfFirstTerm
Bsf
op
t1
t2
t1
apply
op
v1
v2
apply[Ite]
eqExp
v1
v2
op
v1
v2
lookvar
x'
Cons
x
xs
vs
lookvar[Ite]
!EQ
x'
x
x'
Cons
x
xs
vs
eqOps
o1
o2
True
!EQ
S
x
S
y
!EQ
x
y
!EQ
0
S
y
False
!EQ
S
x
0
False
!EQ
0
0
True
and
False
False
False
and
True
False
False
and
False
True
False
and
True
True
True
eeval[False][Ite]
True
Eq
f
s
ns
vs
p
eeval[True][Ite]
eqExp
eeval
f
ns
vs
p
eeval
s
ns
vs
p
Eq
f
s
ns
vs
p
lookvar[Ite]
False
x'
Cons
x''
xs'
Cons
x
xs
lookvar
x'
xs'
xs
lookname[Ite]
True
f
Cons
Fun
n
e
xs
n
lookbody[Ite]
True
f
Cons
Fun
n
e
xs
e
eeval[False][Ite]
False
Fun
n
e
ns
vs
p
eeval[False][Let]
Fun
n
e
ns
vs
p
lookbody
n
p
eeval[Ite]
False
ITE
i
t
e
ns
vs
p
eeval
e
ns
vs
p
eeval[Ite]
True
ITE
i
t
e
ns
vs
p
eeval
t
ns
vs
p
eeval[False][Let]
Fun
n
e
ns
vs
p
ef
eeval[False][Let][Let]
Fun
n
e
ns
vs
p
ef
lookname
n
p
eeval[False][Let][Let]
Fun
n
e
ns
vs
p
ef
nf
eeval[Let][Let][Let]
Fun
n
e
ns
vs
p
ef
nf
eeval
e
ns
vs
p
eeval[Let]
Bsf
op
t1
t2
ns
vs
p
v1
eeval[Let][Let]
Bsf
op
t1
t2
ns
vs
p
v1
eeval
t2
ns
vs
p
eeval[Let][Let]
Bsf
op
t1
t2
ns
vs
p
v1
v2
apply
op
v1
v2
lookvar[Ite]
True
x'
ns
Cons
x
xs
x
lookname[Ite]
False
f
Cons
x
xs
lookname
f
xs
lookbody[Ite]
False
f
Cons
x
xs
lookbody
f
xs
eeval[True][Ite]
False
e
ns
vs
p
F
eeval[True][Ite]
True
e
ns
vs
p
T
apply[Ite]
False
op
v1
v2
F
apply[Ite]
True
op
v1
v2
T
run[Let][Let]
p
input
f0
ef
run[Let]
p
input
f0
ef
lookname
f0
p
run[Let]
p
input
f0
ef
nf
eeval
ef
Cons
nf
Nil
Cons
input
Nil
p
eeval[Let][Let][Let]
e
ns
vs
p
ef
nf
v
eeval
ef
Cons
nf
Nil
Cons
v
Nil
p
getFuncName
1
True
0
Fun
2
Var
1
lookvar
3
lookbody[Ite]
3
eeval[Let]
5
lookvar[Ite]
4
lookname
2
!EQ
2
getConst
1
apply[Ite]
4
Eq
2
eqExp
2
Bsf
3
False
0
apply
3
getVar
1
getBsfSecondTerm
1
getEqFirst
1
S
1
0
0
getBsfOp
1
lookname[Ite]
3
getIfGuard
1
eeval[Let][Let]
6
run
2
getIfFalse
1
lookbody
2
eeval[False][Let]
5
ITE
3
eeval[Ite]
5
run[Let]
5
getFuncExp
1
Error
2
Cons
2
eeval[True][Ite]
5
Cst
1
eeval[False][Ite]
5
Nil
0
eeval
4
eeval[False][Let][Let]
6
checkConstrExp
2
and
2
getIfTrue
1
getEqSecond
1
eeval[Let][Let][Let]
7
getBsfFirstTerm
1
T
0
run[Let][Let]
4
F
0
eqOps
2
INNERMOST
Frederiksen_Glenstrup/int.trs