Alphabet

cons:[a × c] ⟶ c
false:b
filter:[a → b × c] ⟶ c
if:[b × c × c] ⟶ c
nil:c
true:b

Variables

X:c
Y:c
U:c
V:c
I:a → b
J:a → b
X1:a
Y1:c

Rules

if(true, X, Y)X
if(false, U, V)V
filter(I, nil)nil
filter(J, cons(X1, Y1))if(J · X1, cons(X1, filter(J, Y1)), filter(J, Y1))