Alphabet

cons:[a × b] ⟶ b
foldr:[a → b → b × b × b] ⟶ b
nil:b
xap:[a → b → b × a] ⟶ b → b
yap:[b → b × b] ⟶ b

Variables

F:a → b → b
Y:b
G:a → b → b
V:b
W:a
P:b
F1:a → b → b
Y1:a
G1:b → b
V1:b

Rules

foldr%X:a.λ%Y:b.yap(xap(F, %X), %Y), Y, nil)Y
foldr%Z:a.λ%U:b.yap(xap(G, %Z), %U), V, cons(W, P))yap(xap(G, W), foldr%V:a.λ%W:b.yap(xap(G, %V), %W), V, P))
xap(F1, Y1)F1 · Y1
yap(G1, V1)G1 · V1