| append | : | [a × a] ⟶ a |
| concat | : | [a] ⟶ a |
| cons | : | [a × a] ⟶ a |
| flatten | : | a → a |
| map | : | [a → a × a] ⟶ a |
| nil | : | a |
| node | : | [a × a] ⟶ a |
| F | : | a → a |
| Z | : | a → a |
| U | : | a |
| V | : | a |
| W | : | a |
| P | : | a |
| X1 | : | a |
| Y1 | : | a |
| U1 | : | a |
| V1 | : | a |
| W1 | : | a |
| P1 | : | a |
| map(F, nil) | ⇒ | nil |
| map(Z, cons(U, V)) | ⇒ | cons(Z · U, map(Z, V)) |
| flatten · node(W, P) | ⇒ | cons(W, concat(map(flatten, P))) |
| concat(nil) | ⇒ | nil |
| concat(cons(X1, Y1)) | ⇒ | append(X1, concat(Y1)) |
| append(nil, U1) | ⇒ | U1 |
| append(cons(V1, W1), P1) | ⇒ | cons(V1, append(W1, P1)) |