Origin Sections AutomataTheory Doc

list_3_autom

Nuprl Section: list_3_autom

Selected Objects
COMlist_3_historyMem_f was copied from list_2. Whole_segment and Append_segment were taken from list_2 and reproved without groups_1 library.
COMlist_3_authorAlexey Nogin
THMzero_nilL:T*. ||L||0 L = nil
THMhd_tlL:T*. 0 < ||L|| L = hd(L).tl(L)
defmem_f(rec) mem_f(T;a;bs) == Case of bs; nil False ; b.bs' b = a T mem_f(T;a;bs')
THMlist_in_mem_f_listas:T*. as {x:T| mem_f(T;x;as) }*
THMmem_f_decs:S, l:S*. Fin(S) Dec(mem_f(S;s;l))
THMhd_memL:T*. ||L||1 mem_f(T;hd(L);L)
THMselect_memL:T*, i:||L||. mem_f(T;L[i];L)
THMmem_appendL1,L2:T*, t:T. mem_f(T;t;L1 @ L2) mem_f(T;t;L1) mem_f(T;t;L2)
THMmem_selectL:T*, t:T. mem_f(T;t;L) (i:||L||. L[i] = t)
THMshorten_listL,La:T*. Fin(T) (La':T*. (t:T. mem_f(T;t;La) mem_f(T;t;L) mem_f(T;t;La')) & (t:T. mem_f(T;t;La') mem_f(T;t;La)) & (||La'||1 mem_f(T;hd(La');L)))
defadd_action(rec) (+f)(l) == Case of l; nil nil ; h.l' [h; f(h)/ (+f)(l')]
THMadd_action_meml:St*, f:(StSt), s:St. mem_f(St;s;(+f)(l)) mem_f(St;s;l) (s':St. mem_f(St;s';l) & f(s') = s)
deflremove(rec) l \ a == Case of l; nil nil ; h.l' if eq(a,h) l' \ a else h.(l' \ a) fi
THMlremove_meml:St*, s:St, eq:(StSt), sx:St. mem_f(St;sx;l \ s) if eq(s,sx) False else mem_f(St;sx;l) fi
deflshort(rec) LShort(l) == Case of l; nil nil ; h.l' h.(LShort(l') \ h)
THMlshort_meml:St*, eq:(StSt). (x,y:St. eq(x,y) x = y) (s:St. mem_f(St;s;l) mem_f(St;s;LShort(l)))
THMfirstn_lem0as:T*. firstn(||as||;as) = as
THMfirstn_lem1x:, as:T*. x < ||as|| firstn(x+1;as) = (firstn(x;as) @ [as[x]])
THMnth_tl_lem0y:, as:T*. tl(nth_tl(y;as)) = nth_tl(y+1;as)
THMnth_tl_lem1x,y:, as:T*. nth_tl(x;nth_tl(y;as)) = nth_tl(x+y;as)
THMappend_segmentas:T*, i:{0...||as||}, j:{i...||as||}, k:{j...||as||}. ((as[i..j]) @ (as[j..k])) = (as[i..k])
THMwhole_segmentas:T*. (as[0..||as||]) = as