- APPEND
-
|- (!l. APPEND [] l = l) /\ !l1 l2 h. APPEND (h::l1) l2 = h::APPEND l1 l2
- CONS_def
-
|- CONS = ii_internallist1
- EL
-
|- (!l. EL 0 l = HD l) /\ !l n. EL (SUC n) l = EL n (TL l)
- EVERY_DEF
-
|- (!P. EVERY P [] = T) /\ !P h t. EVERY P (h::t) = P h /\ EVERY P t
- EXISTS_DEF
-
|- (!P. EXISTS P [] = F) /\ !P h t. EXISTS P (h::t) = P h \/ EXISTS P t
- FILTER
-
|- (!P. FILTER P [] = []) /\
!P h t. FILTER P (h::t) = (if P h then h::FILTER P t else FILTER P t)
- FLAT
-
|- (FLAT [] = []) /\ !h t. FLAT (h::t) = APPEND h (FLAT t)
- FOLDL
-
|- (!f e. FOLDL f e [] = e) /\ !f e x l. FOLDL f e (x::l) = FOLDL f (f e x) l
- FOLDR
-
|- (!f e. FOLDR f e [] = e) /\ !f e x l. FOLDR f e (x::l) = f x (FOLDR f e l)
- HD
-
|- !h t. HD (h::t) = h
- ii_internallist0_def
-
|- ii_internallist0 = ii_internal_mk_list (CONSTR 0 (@v. T) (\n. BOTTOM))
- ii_internallist1_def
-
|- ii_internallist1 =
(\a0 a1.
ii_internal_mk_list
((\a0 a1. CONSTR (SUC 0) a0 (FCONS a1 (\n. BOTTOM))) a0
(ii_internal_dest_list a1)))
- LENGTH
-
|- (LENGTH [] = 0) /\ !h t. LENGTH (h::t) = SUC (LENGTH t)
- list_case_def
-
|- (!v f. list_case v f [] = v) /\
!v f a0 a1. list_case v f (a0::a1) = f a0 a1
- list_repfns
-
|- (!a. ii_internal_mk_list (ii_internal_dest_list a) = a) /\
!r.
(\a0'.
!'list'.
(!a0'.
(a0' = CONSTR 0 (@v. T) (\n. BOTTOM)) \/
(?a0 a1.
(a0' =
(\a0 a1. CONSTR (SUC 0) a0 (FCONS a1 (\n. BOTTOM))) a0 a1) /\
'list' a1) ==>
'list' a0') ==>
'list' a0') r =
(ii_internal_dest_list (ii_internal_mk_list r) = r)
- list_size_def
-
|- (!f. list_size f [] = 0) /\
!f a0 a1. list_size f (a0::a1) = 1 + (f a0 + list_size f a1)
- list_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(\a0'.
!'list'.
(!a0'.
(a0' = CONSTR 0 (@v. T) (\n. BOTTOM)) \/
(?a0 a1.
(a0' =
(\a0 a1. CONSTR (SUC 0) a0 (FCONS a1 (\n. BOTTOM))) a0
a1) /\ 'list' a1) ==>
'list' a0') ==>
'list' a0') rep
- MAP
-
|- (!f. MAP f [] = []) /\ !f h t. MAP f (h::t) = f h::MAP f t
- MAP2
-
|- (!f. MAP2 f [] [] = []) /\
!f h1 t1 h2 t2. MAP2 f (h1::t1) (h2::t2) = f h1 h2::MAP2 f t1 t2
- MEM
-
|- (!x. MEM x [] = F) /\ !x h t. MEM x (h::t) = (x = h) \/ MEM x t
- NIL
-
|- [] = ii_internallist0
- NULL_DEF
-
|- (NULL [] = T) /\ !h t. NULL (h::t) = F
- SUM
-
|- (SUM [] = 0) /\ !h t. SUM (h::t) = h + SUM t
- TL
-
|- !h t. TL (h::t) = t
- UNZIP
-
|- (UNZIP [] = ([],[])) /\
!x l. UNZIP (x::l) = (FST x::FST (UNZIP l),SND x::SND (UNZIP l))
- ZIP
-
|- (ZIP ([],[]) = []) /\
!x1 l1 x2 l2. ZIP (x1::l1,x2::l2) = (x1,x2)::ZIP (l1,l2)
- APPEND_11
-
|- (!l1 l2 l3. (APPEND l1 l2 = APPEND l1 l3) = (l2 = l3)) /\
!l1 l2 l3. (APPEND l2 l1 = APPEND l3 l1) = (l2 = l3)
- APPEND_ASSOC
-
|- !l1 l2 l3. APPEND l1 (APPEND l2 l3) = APPEND (APPEND l1 l2) l3
- APPEND_eq_NIL
-
|- (!l1 l2. ([] = APPEND l1 l2) = (l1 = []) /\ (l2 = [])) /\
!l1 l2. (APPEND l1 l2 = []) = (l1 = []) /\ (l2 = [])
- APPEND_NIL
-
|- !l. APPEND l [] = l
- CONS
-
|- !l. ~NULL l ==> (HD l::TL l = l)
- CONS_11
-
|- !a0 a1 a0' a1'. (a0::a1 = a0'::a1') = (a0 = a0') /\ (a1 = a1')
- CONS_ACYCLIC
-
|- !l x. ~(l = x::l) /\ ~(x::l = l)
- EL_compute
-
|- !n. EL n l = (if n = 0 then HD l else EL (PRE n) (TL l))
- EL_ZIP
-
|- !l1 l2 n.
(LENGTH l1 = LENGTH l2) /\ n < LENGTH l1 ==>
(EL n (ZIP (l1,l2)) = (EL n l1,EL n l2))
- EQ_LIST
-
|- !h1 h2. (h1 = h2) ==> !l1 l2. (l1 = l2) ==> (h1::l1 = h2::l2)
- EVERY_APPEND
-
|- !P l1 l2. EVERY P (APPEND l1 l2) = EVERY P l1 /\ EVERY P l2
- EVERY_CONG
-
|- !l1 l2 P P'.
(l1 = l2) /\ (!x. MEM x l2 ==> (P x = P' x)) ==>
(EVERY P l1 = EVERY P' l2)
- EVERY_CONJ
-
|- !l. EVERY (\x. P x /\ Q x) l = EVERY P l /\ EVERY Q l
- EVERY_EL
-
|- !l P. EVERY P l = !n. n < LENGTH l ==> P (EL n l)
- EVERY_MEM
-
|- !P l. EVERY P l = !e. MEM e l ==> P e
- EVERY_MONOTONIC
-
|- !P Q. (!x. P x ==> Q x) ==> !l. EVERY P l ==> EVERY Q l
- EXISTS_APPEND
-
|- !P l1 l2. EXISTS P (APPEND l1 l2) = EXISTS P l1 \/ EXISTS P l2
- EXISTS_CONG
-
|- !l1 l2 P P'.
(l1 = l2) /\ (!x. MEM x l2 ==> (P x = P' x)) ==>
(EXISTS P l1 = EXISTS P' l2)
- EXISTS_MEM
-
|- !P l. EXISTS P l = ?e. MEM e l /\ P e
- FOLDL_CONG
-
|- !l l' b b' f f'.
(l = l') /\ (b = b') /\ (!x a. MEM x l' ==> (f a x = f' a x)) ==>
(FOLDL f b l = FOLDL f' b' l')
- FOLDR_CONG
-
|- !l l' b b' f f'.
(l = l') /\ (b = b') /\ (!x a. MEM x l' ==> (f x a = f' x a)) ==>
(FOLDR f b l = FOLDR f' b' l')
- LENGTH_APPEND
-
|- !l1 l2. LENGTH (APPEND l1 l2) = LENGTH l1 + LENGTH l2
- LENGTH_CONS
-
|- !l n. (LENGTH l = SUC n) = ?h l'. (LENGTH l' = n) /\ (l = h::l')
- LENGTH_EQ_CONS
-
|- !P n.
(!l. (LENGTH l = SUC n) ==> P l) =
!l. (LENGTH l = n) ==> (\l. !x. P (x::l)) l
- LENGTH_EQ_NIL
-
|- !P. (!l. (LENGTH l = 0) ==> P l) = P []
- LENGTH_MAP
-
|- !l f. LENGTH (MAP f l) = LENGTH l
- LENGTH_NIL
-
|- !l. (LENGTH l = 0) = (l = [])
- LENGTH_UNZIP
-
|- !pl.
(LENGTH (FST (UNZIP pl)) = LENGTH pl) /\
(LENGTH (SND (UNZIP pl)) = LENGTH pl)
- LENGTH_ZIP
-
|- !l1 l2.
(LENGTH l1 = LENGTH l2) ==>
(LENGTH (ZIP (l1,l2)) = LENGTH l1) /\ (LENGTH (ZIP (l1,l2)) = LENGTH l2)
- list_11
-
|- !a0 a1 a0' a1'. (a0::a1 = a0'::a1') = (a0 = a0') /\ (a1 = a1')
- list_Axiom
-
|- !f0 f1. ?fn. (fn [] = f0) /\ !a0 a1. fn (a0::a1) = f1 a0 a1 (fn a1)
- list_Axiom_old
-
|- !x f. ?!fn1. (fn1 [] = x) /\ !h t. fn1 (h::t) = f (fn1 t) h t
- list_case_compute
-
|- !l. list_case b f l = (if NULL l then b else f (HD l) (TL l))
- list_case_cong
-
|- !f' f v' v M' M.
(M = M') /\ ((M' = []) ==> (v = v')) /\
(!a0 a1. (M' = a0::a1) ==> (f a0 a1 = f' a0 a1)) ==>
(list_case v f M = list_case v' f' M')
- list_CASES
-
|- !l. (l = []) \/ ?t h. l = h::t
- list_distinct
-
|- !a1 a0. ~([] = a0::a1)
- list_INDUCT
-
|- !P. P [] /\ (!t. P t ==> !h. P (h::t)) ==> !l. P l
- list_induction
-
|- !P. P [] /\ (!t. P t ==> !h. P (h::t)) ==> !l. P l
- list_nchotomy
-
|- !l. (l = []) \/ ?t h. l = h::t
- LIST_NOT_EQ
-
|- !l1 l2. ~(l1 = l2) ==> !h1 h2. ~(h1::l1 = h2::l2)
- list_size_cong
-
|- !M N f f'.
(M = N) /\ (!x. MEM x N ==> (f x = f' x)) ==>
(list_size f M = list_size f' N)
- MAP2_ZIP
-
|- !l1 l2.
(LENGTH l1 = LENGTH l2) ==>
!f. MAP2 f l1 l2 = MAP (UNCURRY f) (ZIP (l1,l2))
- MAP_APPEND
-
|- !f l1 l2. MAP f (APPEND l1 l2) = APPEND (MAP f l1) (MAP f l2)
- MAP_CONG
-
|- !l1 l2 f f'.
(l1 = l2) /\ (!x. MEM x l2 ==> (f x = f' x)) ==> (MAP f l1 = MAP f' l2)
- MAP_EQ_NIL
-
|- !l f. ((MAP f l = []) = (l = [])) /\ (([] = MAP f l) = (l = []))
- MEM_EL
-
|- !l x. MEM x l = ?n. n < LENGTH l /\ (x = EL n l)
- MEM_MAP
-
|- !l f x. MEM x (MAP f l) = ?y. (x = f y) /\ MEM y l
- MEM_ZIP
-
|- !l1 l2 p.
(LENGTH l1 = LENGTH l2) ==>
(MEM p (ZIP (l1,l2)) = ?n. n < LENGTH l1 /\ (p = (EL n l1,EL n l2)))
- NOT_CONS_NIL
-
|- !a1 a0. ~(a0::a1 = [])
- NOT_EQ_LIST
-
|- !h1 h2. ~(h1 = h2) ==> !l1 l2. ~(h1::l1 = h2::l2)
- NOT_EVERY
-
|- !P l. ~EVERY P l = EXISTS ($~ o P) l
- NOT_EXISTS
-
|- !P l. ~EXISTS P l = EVERY ($~ o P) l
- NOT_NIL_CONS
-
|- !a1 a0. ~([] = a0::a1)
- NULL
-
|- NULL [] /\ !h t. ~NULL (h::t)
- UNZIP_ZIP
-
|- !l1 l2. (LENGTH l1 = LENGTH l2) ==> (UNZIP (ZIP (l1,l2)) = (l1,l2))
- WF_LIST_PRED
-
|- WF (\L1 L2. ?h. L2 = h::L1)
- ZIP_MAP
-
|- !l1 l2 f1 f2.
(LENGTH l1 = LENGTH l2) ==>
(ZIP (MAP f1 l1,l2) = MAP (\p. (f1 (FST p),SND p)) (ZIP (l1,l2))) /\
(ZIP (l1,MAP f2 l2) = MAP (\p. (FST p,f2 (SND p))) (ZIP (l1,l2)))
- ZIP_UNZIP
-
|- !l. ZIP (UNZIP l) = l