cons | : | [b × c] ⟶ c |
false | : | a |
filter | : | [b → a × c] ⟶ c |
filtersub | : | [a × b → a × c] ⟶ c |
nil | : | c |
true | : | a |
F | : | b → a |
Z | : | b → a |
U | : | b |
V | : | c |
I | : | b → a |
P | : | b |
X1 | : | c |
Z1 | : | b → a |
U1 | : | b |
V1 | : | c |
filter(F, nil) | ⇒ | nil |
filter(Z, cons(U, V)) | ⇒ | filtersub(Z · U, Z, cons(U, V)) |
filtersub(true, I, cons(P, X1)) | ⇒ | cons(P, filter(I, X1)) |
filtersub(false, Z1, cons(U1, V1)) | ⇒ | filter(Z1, V1) |