subst
x
a
App
e1
e2
mkapp
subst
x
a
e1
subst
x
a
e2
subst
x
a
Lam
var
exp
subst[True][Ite]
eqTerm
x
V
var
x
a
Lam
var
exp
red
App
e1
e2
red[Let]
App
e1
e2
red
e1
red
Lam
int
term
Lam
int
term
subst
x
a
V
int
subst[Ite]
eqTerm
x
V
int
x
a
V
int
red
V
int
V
int
eqTerm
App
t11
t12
App
t21
t22
and
eqTerm
t11
t21
eqTerm
t12
t22
eqTerm
App
t11
t12
Lam
i2
l2
False
eqTerm
App
t11
t12
V
v2
False
eqTerm
Lam
i1
l1
App
t21
t22
False
eqTerm
Lam
i1
l1
Lam
i2
l2
and
!EQ
i1
i2
eqTerm
l1
l2
eqTerm
Lam
i1
l1
V
v2
False
eqTerm
V
v1
App
t21
t22
False
eqTerm
V
v1
Lam
i2
l2
False
eqTerm
V
v1
V
v2
!EQ
v1
v2
mklam
V
name
e
Lam
name
e
lamvar
Lam
var
exp
V
var
lambody
Lam
var
exp
exp
isvar
App
t1
t2
False
isvar
Lam
int
term
False
isvar
V
int
True
islam
App
t1
t2
False
islam
Lam
int
term
True
islam
V
int
False
appe2
App
e1
e2
e2
appe1
App
e1
e2
e1
mkapp
e1
e2
App
e1
e2
lambdaint
e
red
e
and
False
False
False
and
True
False
False
and
False
True
False
and
True
True
True
!EQ
S
x
S
y
!EQ
x
y
!EQ
0
S
y
False
!EQ
S
x
0
False
!EQ
0
0
True
red[Let][Let]
e
Lam
var
exp
a
red
subst
V
var
a
exp
subst[True][Ite]
False
x
a
Lam
var
exp
mklam
V
var
subst
x
a
exp
red[Let][Let]
e
App
t1
t2
e2
App
App
t1
t2
e2
red[Let][Let]
e
V
int
e2
App
V
int
e2
red[Let]
App
e1
e2
f
red[Let][Let]
App
e1
e2
f
red
e2
subst[True][Ite]
True
x
a
e
e
subst[Ite]
False
x
a
e
e
subst[Ite]
True
x
a
e
a
App
2
True
0
red[Let]
2
red[Let][Let]
3
lambody
1
isvar
1
!EQ
2
subst[Ite]
4
lambdaint
1
eqTerm
2
subst[True][Ite]
4
red
1
mklam
2
False
0
mkapp
2
V
1
subst
3
and
2
appe2
1
lamvar
1
appe1
1
Lam
2
S
1
0
0
islam
1
INNERMOST
Frederiksen_Glenstrup/lambdaint_typed.tml.trs