| 0 | : | a |
| cons | : | [a × c] ⟶ c |
| false | : | b |
| filter | : | [a → b] ⟶ c → c |
| filtersub | : | [b × a → b × c] ⟶ c |
| neq | : | [a] ⟶ a → b |
| nil | : | c |
| nonzero | : | c → c |
| s | : | [a] ⟶ a |
| true | : | b |
| X | : | a |
| Y | : | a |
| U | : | a |
| V | : | a |
| I | : | a → b |
| J | : | a → b |
| X1 | : | a |
| Y1 | : | c |
| G1 | : | a → b |
| V1 | : | a |
| W1 | : | c |
| J1 | : | a → b |
| X2 | : | a |
| Y2 | : | c |
| neq(0) · 0 | ⇒ | false |
| neq(0) · s(X) | ⇒ | true |
| neq(s(Y)) · 0 | ⇒ | true |
| neq(s(U)) · s(V) | ⇒ | neq(U) · V |
| filter(I) · nil | ⇒ | nil |
| filter(J) · cons(X1, Y1) | ⇒ | filtersub(J · X1, J, cons(X1, Y1)) |
| filtersub(true, G1, cons(V1, W1)) | ⇒ | cons(V1, filter(G1) · W1) |
| filtersub(false, J1, cons(X2, Y2)) | ⇒ | filter(J1) · Y2 |
| nonzero | ⇒ | filter(neq(0)) |