Origin Definitions Sections MarkB generic Doc
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html
mb_list_1
Nuprl Section: mb_list_1 - Filter, initial-segment, list-member, interleaving, etc. Lemmas related to map, append, cons, select.

Selected Objects
THMappend_firstn_lastn L:T List, n:{0...||L||}. (firstn(n;L) @ nth_tl(n;L)) = L
THMappend_split2 L:T List, P:(||L||Prop).
(x:||L||. Dec(P(x)))

(i,j:||L||. P(i i<j  P(j))

(L_1,L_2:T List. L = (L_1 @ L_2) & (i:||L||. P(i ||L_1||i))
THMnon_nil_length L:T List. L = nil  0<||L||
THMlength_zero l:T List. ||l|| = 0    l = nil
THMlist_decomp L:T List. 0<||L||  (L ~ [hd(L) / tl(L)])
THMnth_tl_decomp m:L:T List. m<||L||  (nth_tl(m;L) ~ [L[m] / nth_tl(1+m;L)])
THMmap_append_sq f,as':Top, A:Type, as:A List. map(f;as @ as') ~ (map(f;as) @ map(f;as'))
THMlist_extensionality a,b:T List. ||a|| = ||b||    (i:i<||a||  a[i] = b[i])  a = b
THMmap_equal a:T List, f,g:(TT').
(i:i<||a||  f(a[i]) = g(a[i]))  map(f;a) = map(g;a)
THMlist_decomp_reverse L:T List. 0<||L||  (x:TL':T List. L = (L' @ [x]))
THMlist_append_singleton_ind Q:((T List)Prop). 
Q(nil)  (ys:T List, x:TQ(ys Q(ys @ [x]))  (zs:T List. Q(zs))
THMcons_one_one a,a':Tb,b':T List. [a / b] = [a' / b' a = a' & b = b'
THMmap_length_nat f:(AB), as:A List. ||map(f;as)|| = ||as||  
THMlist_2_decomp z:T List. ||z|| = 2    z = [z[0]; z[1]]
THMappend_is_nil l1,l2:T List. (l1 @ l2) = nil  l1 = nil & l2 = nil
THMappend_nil_sq l:T List. (l @ nil) ~ l
defmklist mklist(n;f) == primrec(n;nil;i,ll @ [(f(i))])
THMmklist_length n:f:(nT). ||mklist(n;f)|| = n  
THMmklist_select n:f:(nT), i:n. mklist(n;f)[i] = f(i)
defl_member (x  l) == i:i<||l|| & x = l[i T
THMmember_exists L:T List. L = nil  (x:T. (x  L))
THMmap_equal2 a:T List, f,g:(TT'). (x:T. (x  a f(x) = g(x))  map(f;a) = map(g;a)
THMtrivial_map a:T List, f:(TT). (x:T. (x  a f(x) = x map(f;a) = a
THMmember_tl as:T List, x:T. 0<||as||  (x  tl(as))  (x  as)
THMnil_member x:T. (x  nil)  False
THMnull_member L:T List, x:T. null(L (x  L)
THMmember_null L:T List, x:T. (x  L null(L)
THMcons_member l:T List, a,x:T. (x  [a / l])  x = a  (x  l)
THMl_member_decidable x:Tl:T List. (y:T. Dec(x = y))  Dec((x  l))
THMmember_append x:Tl1,l2:T List. (x  l1 @ l2 (x  l1 (x  l2)
THMselect_member L:T List, i:||L||. (L[i L)
THMmember_singleton a,x:T. (x  [a])  x = a
THMmember_map a:T List, x:T'f:(TT'). (x  map(f;a))  (y:T. (y  a) & x = f(y))
deflast last(L) == L[(||L||-1)]
THMlast_cons L:T List, x:Tnull(L last([x / L]) = last(L)
defsublist L1  L2
== f:(||L1||||L2||). 
== increasing(f;||L1||) & (j:||L1||. L1[j] = L2[(f(j))]  T)
THMsublist_transitivity L1,L2,L3:T List. L1  L2  L2  L3  L1  L3
THMlength_sublist L1,L2:T List. L1  L2  ||L1||||L2||
THMcons_sublist_nil x:TL:T List. [x / L nil  False
THMproper_sublist_length L1,L2:T List. L1  L2  ||L1|| = ||L2||    L1 = L2
THMsublist_antisymmetry L1,L2:T List. L1  L2  L2  L1  L1 = L2
THMnil_sublist L:T List. nil  L  True
THMcons_sublist_cons x1,x2:TL1,L2:T List.
[x1 / L1 [x2 / L2 x1 = x2 & L1  L2  [x1 / L1 L2
THMsublist_weakening L1,L2:T List. L1 = L2  L1  L2
THMsublist_nil L:T List. L  nil  L = nil
THMsublist_tl L1,L2:T List. null(L2 L1  tl(L2 L1  L2
THMsublist_pair L:T List, i,j:||L||. i<j  [L[i]; L[j]]  L
THMmember_iff_sublist x:TL:T List. (x  L [x L
defl_before x before y  l == [xy l
THMl_tricotomy x,y:TL:T List. (x  L (y  L x = y  x before y  L  y before x  L
THMl_before_member L:T List, a,b:Ta before b  L  (b  L)
THMnil_before x,y:Tx before y  nil  False
THMl_before_member2 L:T List, a,b:Ta before b  L  (a  L)
THMcons_before l:T List, a,x,y:Tx before y  [a / l x = a & (y  l x before y  l
deflistp A List == {l:(A List)| (0<||l||) }
THMlistp_properties l:A List. ||l||1
deffilter filter(P;l) == reduce(a,v. if P(a) [a / v] else v fi;nil;l)
THMmember_filter P:(T), L:T List, x:T. (x  filter(P;L))  (x  L) & P(x)
THMfilter_functionality L:A List, f1,f2:(A). f1 = f2  (filter(f1;L) ~ filter(f2;L))
THMfilter_append P:(T), l1,l2:T List. filter(P;l1 @ l2) ~ (filter(P;l1) @ filter(P;l2))
THMfilter_filter P1,P2:(T), L:T List. filter(P1;filter(P2;L)) ~ filter(t.(P1(t))(P2(t));L)
THMfilter_type P:(T), l:T List. filter(P;l {x:TP(x) } List
THMfilter_map f:(T1T2), Q:(T2), L:T1 List. filter(Q;map(f;L)) = map(f;filter(Q o f;L))
defiseg l1  l2 == l:T List. l2 = (l1 @ l)
THMcons_iseg a,b:Tl1,l2:T List. [a / l1 [b / l2 a = b & l1  l2
THMiseg_transitivity l1,l2,l3:T List. l1  l2  l2  l3  l1  l3
THMiseg_append l1,l2,l3:T List. l1  l2  l1  l2 @ l3
THMfirstn_is_iseg L1,L2:T List. L1  L2  (n:(||L2||+1). L1 = firstn(n;L2))
THMiseg_transitivity2 l1,l2,l3:T List. l2  l3  l1  l2  l1  l3
THMiseg_weakening l:T List. l  l
THMnil_iseg l:T List. nil  l
THMiseg_select l1,l2:T List. l1  l2  ||l1||||l2|| & (i:i<||l1||  l1[i] = l2[i])
THMiseg_member l1,l2:T List, x:Tl1  l2  (x  l1 (x  l2)
THMiseg_nil L:T List. L  nil  null(L)
THMfilter_iseg P:(T), L2,L1:T List. L1  L2  filter(P;L1 filter(P;L2)
THMiseg_length l1,l2:T List. l1  l2  ||l1||||l2||
THMiseg_is_sublist L_1,L_2:T List. L_1  L_2  L_1  L_2
deflist_accum list_accum(x,a.f(x;a);y;l)
== Case of l; nil  y ; b.l'  list_accum(x,a.f(x;a);f(y;b);l')
(recursive)
defzip zip(as;bs)
== Case of as
== Canil  nil
== Caa.as'  Case of bs; nil  nil ; b.bs'  [<a,b> / zip(as';bs')]
(recursive)
THMzip_length as:T1 List, bs:T2 List. ||zip(as;bs)||||as|| & ||zip(as;bs)||||bs||
THMselect_zip as:T1 List, bs:T2 List, i:i<||zip(as;bs)||  zip(as;bs)[i] = <as[i],bs[i]>
THMlength_zip as:T1 List, bs:T2 List. ||as|| = ||bs||    ||zip(as;bs)|| = ||as||  
defunzip unzip(as) == <map(p.1of(p);as),map(p.2of(p);as)>
THMunzip_zip as:T1 List, bs:T2 List. ||as|| = ||bs||    unzip(zip(as;bs)) = <as,bs>
THMzip_unzip as:(T1T2) List. zip(1of(unzip(as));2of(unzip(as))) = as
deffind (first x  as s.t. P(x) else d) == Case of filter(x.P(x);as); nil  d ; a.b  a
THMfind_property P:(T), as:T List, d:T.
((first a  as s.t. P(a) else d as (first a  as s.t. P(a) else d) = d
defno_repeats no_repeats(T;l) == i,j:i<||l||  j<||l||  i = j  l[i] = l[j T
THMno_repeats_iff l:T List. no_repeats(T;l (x,y:Tx before y  l  x = y)
THMno_repeats_cons l:T List, x:T. no_repeats(T;[x / l])  no_repeats(T;l) & (x  l)
THMappend_overlapping_sublists L1,L2,L:T List, x:T.
no_repeats(T;L L1 @ [x L  [x / L2 L  L1 @ [x / L2 L
THMl_before_transitivity l:T List, x,y,z:T.
no_repeats(T;l x before y  l  y before z  l  x before z  l
THMno_repeats_nil no_repeats(T;nil)
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html

Origin Definitions Sections MarkB generic Doc