1 |
1. T : Type
2. T List
3. T List
P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). nil nil ![](FONT/if_big.png) nil nil & ( x nil.P(x))
![](FONT/BLANK.png) | 1 step |
2 |
1. T : Type
2. T List
3. T List
4. u : T
5. v : T List
6. P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). v filter(P;nil) ![](FONT/if_big.png) v nil & ( x v.P(x))
P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). [u / v] nil ![](FONT/if_big.png) [u / v] nil & ( x [u / v].P(x))
![](FONT/BLANK.png) | 1 step |
3 |
1. T : Type
2. T List
3. u : T
4. v : T List
5. L2:T List, P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). L2 filter(P;v) ![](FONT/if_big.png) L2 v & ( x L2.P(x))
6. T List
P:(T![](FONT/dash.png) ![](FONT/then_med.png) ).
nil if P(u) [u / filter(P;v)] else filter(P;v) fi
![](FONT/if_big.png)
nil [u / v] & ( x nil.P(x))
![](FONT/BLANK.png) | 1 step |
4 |
1. T : Type
2. T List
3. u : T
4. v : T List
5. L2:T List, P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). L2 filter(P;v) ![](FONT/if_big.png) L2 v & ( x L2.P(x))
6. T List
7. u1 : T
8. v1 : T List
9. P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). v1 filter(P;[u / v]) ![](FONT/if_big.png) v1 [u / v] & ( x v1.P(x))
P:(T![](FONT/dash.png) ![](FONT/then_med.png) ).
[u1 / v1] if P(u) [u / filter(P;v)] else filter(P;v) fi
![](FONT/if_big.png)
[u1 / v1] [u / v] & ( x [u1 / v1].P(x))
![](FONT/BLANK.png) | 20 steps |