| app | : | [list × list] ⟶ list |
| cons | : | [nat × list] ⟶ list |
| hshuffle | : | [nat → nat × list] ⟶ list |
| nil | : | list |
| reverse | : | [list] ⟶ list |
| X | : | list |
| Y | : | nat |
| U | : | list |
| V | : | list |
| W | : | nat |
| P | : | list |
| F1 | : | nat → nat |
| Z1 | : | nat → nat |
| U1 | : | nat |
| V1 | : | list |
| app(nil, X) | ⇒ | X |
| app(cons(Y, U), V) | ⇒ | cons(Y, app(U, V)) |
| reverse(nil) | ⇒ | nil |
| reverse(cons(W, P)) | ⇒ | app(reverse(P), cons(W, nil)) |
| hshuffle(F1, nil) | ⇒ | nil |
| hshuffle(Z1, cons(U1, V1)) | ⇒ | cons(Z1 · U1, hshuffle(Z1, reverse(V1))) |