Alphabet

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

Variables

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

Rules

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