Alphabet

app:[list × list] ⟶ list
cons:[nat × list] ⟶ list
foldl:[list → nat → list × list × list] ⟶ list
iconsc:list → nat → list
nil:list
reverse:[list] ⟶ list
reverse1:[list] ⟶ list
xap:[list → nat → list × list] ⟶ nat → list
yap:[nat → list × nat] ⟶ list

Variables

X:list
Y:nat
U:list
V:list
I:list → nat → list
P:list
F1:list → nat → list
Y1:list
U1:nat
V1:list
W1:list
P1:nat
X2:list
Y2:list
G2:list → nat → list
V2:list
I2:nat → list
P2:nat

Rules

app(nil, X)X
app(cons(Y, U), V)cons(Y, app(U, V))
foldl%X:list.λ%Y:nat.yap(xap(I, %X), %Y), P, nil)P
foldl%Z:list.λ%U:nat.yap(xap(F1, %Z), %U), Y1, cons(U1, V1))foldl%V:list.λ%W:nat.yap(xap(F1, %V), %W), yap(xap(F1, Y1), U1), V1)
iconsc · W1 · P1cons(P1, W1)
reverse(X2)foldl%F:list.λ%G:nat.yap(xap(iconsc, %F), %G), nil, X2)
reverse1(Y2)foldl%I:list.λ%H:nat.app(cons(%H, nil), %I), nil, Y2)
xap(G2, V2)G2 · V2
yap(I2, P2)I2 · P2