is mentioned by
Thm* (x swap adjacent[P(f(x),f(y))] y) Thm* Thm* (map(f;x) swap adjacent[P(x,y)] map(f;y)) | [swap_adjacent_map] |
Thm* (L1 swap adjacent[P(x,y)] L2) Thm* Thm* (filter(f;L1) swap adjacent[P(x,y)] filter(f;L2)) Thm* filter(f;L1) = filter(f;L2) | [filter_swap_adjacent] |
Thm* P(a,b) ((X @ [a; b] @ Y) swap adjacent[P(x,y)] (X @ [b; a] @ Y)) | [swap_adjacent_instance] |
Thm* (Sym x,y:A. P(x,y)) (Sym L1,L2:A List. L1 swap adjacent[P(x,y)] L2) | [symmetric_swap_adjacent] |
Thm* (x,y:T. Dec(P(x,y))) Thm* Thm* (x,y:T. P(x,y) P(y,x)) Thm* Thm* (L':T List. Thm* ((L (swap adjacent[P(x,y)]^*) L') & (i:(||L'||-1). P(L'[i],L'[(i+1)]))) | [partial_sort] |
Thm* (x,y:T. P(x,y) P(y,x)) Thm* 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* count(x < y in swap(L;n;n+1) | P(x,y)) Thm* = Thm* count(x < y in L | P(x,y))+if P(L[n],L[(n+1)]) -1 else 0 fi+if P(L[(n+1)] Thm* count(x < y in L | P(x,y))+if P(L[n],L[(n+1)]) -1 else 0 fi+if P,L[n]) Thm* count(x < y in L | P(x,y))+if P(L[n],L[(n+1)]) -1 else 0 fi+if 1 Thm* count(x < y in L | P(x,y))+if P(L[n],L[(n+1)]) -1 else 0 fi+else 0 fi | [count_pairs_swap] |
Thm* Bij(n; n; p) Thm* Thm* Bij(m; m; q) Thm* Thm* sum(f(p(x),q(y)) | x < n; y < m) = sum(f(x,y) | x < n; y < m) | [permute_double_sum] |
Thm* Bij(n; n; p) sum(f(p(x)) | x < n) = sum(f(x) | x < n) | [permute_sum] |
[permute_by_flips] | |
[flip_adjacent] | |
Thm* compose_flips(L1) o compose_flips(L2) = compose_flips(L1 @ L2) | [compose_flips_append] |
[compose_flips_wf] | |
Thm* y = z x = y (x, y) = compose_list([(x, z); (y, z); (x, z)]) | [flip_lemma] |
Thm* compose_list(L1) o compose_list(L2) = compose_list(L1 @ L2) | [compose_append] |
[decidable__rel_star] | |
[rel_star_finite] | |
Thm* (x R^k y) Thm* Thm* (L:T List. Thm* (||L|| = k+1 & L[0] = x & last(L) = y & (i:k. L[i] R L[(i+1)])) | [rel_exp_list] |
[compose_bij] | |
Thm* (L:T List, i:(||L||-1). Thm* (P(L,i) P(swap(L;i;i+1),i) & m(swap(L;i;i+1))<m(L)) Thm* 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] |
[iseg_map] | |
[count_pairs_wf] | |
Thm* Trans(T List)(_1 guarded_permutation(T;P) _2) | [guarded_permutation_transitivity] |
[map_swap] | |
Thm* a before b swap(L;i;i+1) a before b L a = L[(i+1)] & b = L[i] | [l_before_swap] |
Thm* i+1<||L|| Thm* Thm* (X,Y:A List. Thm* (L = (X @ [L[i]; L[(i+1)]] @ Y) Thm* (& swap(L;i;i+1) = (X @ [L[(i+1)]; L[i]] @ Y)) | [swap_adjacent_decomp] |
Thm* swap([x / L];i;j) = [x / swap(L;i-1;j-1)] | [swap_cons] |
Thm* L2 = swap(L1;i;j) Thm* Thm* L2[i] = L1[j] & L2[j] = L1[i] & ||L2|| = ||L1|| & L1 = swap(L2;i;j) Thm* & (x:||L2||. x = i x = j L2[x] = L1[x]) | [swapped_select] |
[swap_swap] | |
[swap_length] | |
[swap_select] | |
[permute_list_length] | |
[permute_list_select] | |
Thm* (x:||L||. Dec(P(x))) Thm* Thm* (i:||L||. P(i)) (i:||L||. P(i) & (j:||L||. i<j P(j))) | [last_with_property] |
Thm* (x:||L||. Dec(P(x))) Thm* Thm* (L1,L2:T List, f1:(||L1||||L||), f2:(||L2||||L||). Thm* (interleaving_occurence(T;L1;L2;L;f1;f2) Thm* (& (i:||L1||. P(f1(i))) & (i:||L2||. P(f2(i))) Thm* (& (i:||L||. Thm* (& ((P(i) (j:||L1||. f1(j) = i)) Thm* (& (& (P(i) (j:||L2||. f2(j) = i)))) | [interleaving_split] |
[interleaving_sublist] | |
[nil_interleaving2] | |
[nil_interleaving] | |
[disjoint_sublists_sublist] | |
Thm* increasing(f;n) Thm* Thm* (L1:T List. ||L1|| = n & sublist_occurence(T;L1;L;f)) | [range_sublist] |
Thm* (x mapfilter(f;P;L)) (y:T. (y L) & P(y) & x = f(y)) | [member_map_filter] |
Thm* mapfilter(f;P;L) T' List | [mapfilter_wf] |
[decidable__l_exists] | |
[l_exists_cons] | |
[l_exists_nil] | |
[decidable__l_all] | |
[no_repeats_filter] | |
Thm* x before y filter(P;l) P(x) & P(y) & x before y l | [l_before_filter] |
[sublist_filter] | |
[l_all_reduce] | |
[l_all_nil] | |
[l_all_map] | |
[list_set_type] | |
[filter_is_nil] | |
[filter_trivial2] | |
[filter_trivial] | |
[l_all_cons] | |
Def == ||L|| = ||L1||+||L2|| Def == & increasing(f1;||L1||) & (j:||L1||. L1[j] = L[(f1(j))] T) Def == & increasing(f2;||L2||) & (j:||L2||. L2[j] = L[(f2(j))] T) Def == & (j1:||L1||, j2:||L2||. f1(j1) = f2(j2) ) | [interleaving_occurence] |
Def == f1:(||L1||||L||), f2:(||L2||||L||). Def == increasing(f1;||L1||) & (j:||L1||. L1[j] = L[(f1(j))] T) Def == & increasing(f2;||L2||) & (j:||L2||. L2[j] = L[(f2(j))] T) Def == & (j1:||L1||, j2:||L2||. f1(j1) = f2(j2)) | [disjoint_sublists] |
Def == increasing(f;||L1||) & (j:||L1||. L1[j] = L2[(f(j))] T) | [sublist_occurence] |
[l_all] | |
[l_disjoint] |
In prior sections: core well fnd int 1 bool 1 int 2 union rel 1 num thy 1 fun 1 list 1 sqequal 1 mb basic mb nat mb list 1
Try larger context:
MarkB generic
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html