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))