Thm* L:T List, P:(T![](FONT/dash.png) T![](FONT/dash.png) ![](FONT/then_med.png) ).
Thm* ( x,y:T. P(x,y) ![](FONT/eq.png) P(y,x))
Thm* ![](FONT/eq.png)
Thm* ( L':T List.
Thm* ((L guarded_permutation(T; L,i. P(L[i],L[(i+1)])) L')
Thm* (& ( i: (||L'||-1). P(L'[i],L'[(i+1)]))) | [partial_sort_exists_2] |
Thm* P:(L:(T List)![](FONT/dash.png) ![](FONT/then_med.png) (||L||-1)![](FONT/dash.png) ![](FONT/then_med.png) ), m:((T List)![](FONT/dash.png) ![](FONT/then_med.png) ).
Thm* ( L:T List, i: (||L||-1).
Thm* (P(L,i) ![](FONT/eq.png) P(swap(L;i;i+1),i) & m(swap(L;i;i+1))<m(L))
Thm* ![](FONT/eq.png)
Thm* ( L:T List.
Thm* ( L':T List.
Thm* ((L guarded_permutation(T; L,i. P(L,i)) L') & ( i: (||L'||-1). P(L',i))) | [partial_sort_exists] |
Thm* P:(T![](FONT/dash.png) ![](FONT/then_med.png) ), T':Type, f:({x:T| P(x) }![](FONT/dash.png) T'), L:T List, x:T'.
Thm* (x mapfilter(f;P;L)) ![](FONT/if_big.png) ( y:T. (y L) & P(y) & x = f(y)) | [member_map_filter] |
Thm* T:Type, P:(T![](FONT/dash.png) ![](FONT/then_med.png) ), T':Type, f:({x:T| P(x) }![](FONT/dash.png) T'), L:T List.
Thm* mapfilter(f;P;L) T' List | [mapfilter_wf] |
Thm* l:T List, P:(T![](FONT/dash.png) ![](FONT/then_med.png) ), x,y:T.
Thm* x before y filter(P;l) ![](FONT/if_big.png) P(x) & P(y) & x before y l | [l_before_filter] |
Thm* L1,L2:T List, P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). L2 filter(P;L1) ![](FONT/if_big.png) L2 L1 & ( x L2.P(x)) | [sublist_filter] |
Thm* L:T List, P:(T![](FONT/dash.png) ![](FONT/then_med.png) ). ( x L.P(x)) ![](FONT/if_big.png) reduce( x,y. P(x)![](FONT/and.png) y;true ;L) | [l_all_reduce] |
Thm* P:(T![](FONT/dash.png) ![](FONT/then_med.png) ), L:T List. ( x L. P(x)) ![](FONT/eq.png) (filter(P;L) ~ nil) | [filter_is_nil] |
Thm* P:(T![](FONT/dash.png) ![](FONT/then_med.png) ), L:T List. ( x L.P(x)) ![](FONT/eq.png) filter(P;L) = L | [filter_trivial2] |
Thm* P:(T![](FONT/dash.png) ![](FONT/then_med.png) ), L:T List. ( x L.P(x)) ![](FONT/eq.png) (filter(P;L) ~ L) | [filter_trivial] |