- IS_list_REP
-
|- !r. IS_list_REP r = (?f n. r = ((\m. (m < n) => (f m) | (@x. T)),n))
- list_TY_DEF
-
|- ?rep. TYPE_DEFINITION IS_list_REP rep
- list_ISO_DEF
-
|- (!a. ABS_list (REP_list a) = a) /\
(!r. IS_list_REP r = REP_list (ABS_list r) = r)
- NIL_DEF
-
|- [] = ABS_list ((\n. @e. T),0)
- CONS_DEF
-
|- !h t.
CONS h t =
ABS_list
((\m. (m = 0) => h | (FST (REP_list t) (PRE m))),
SUC (SND (REP_list t)))
- NULL_DEF
-
|- (NULL [] = T) /\ (!t h. NULL (CONS h t) = F)
- HD
-
|- !t h. HD (CONS h t) = h
- TL
-
|- !t h. TL (CONS h t) = t
- SUM
-
|- (SUM [] = 0) /\ (!h t. SUM (CONS h t) = h + SUM t)
- APPEND
-
|- (!l. APPEND [] l = l) /\
(!l1 l2 h. APPEND (CONS h l1) l2 = CONS h (APPEND l1 l2))
- FLAT
-
|- (FLAT [] = []) /\ (!h t. FLAT (CONS h t) = APPEND h (FLAT t))
- LENGTH
-
|- (LENGTH [] = 0) /\ (!h t. LENGTH (CONS h t) = SUC (LENGTH t))
- MAP
-
|- (!f. MAP f [] = []) /\ (!f h t. MAP f (CONS h t) = CONS (f h) (MAP f t))
- MAP2
-
|- (!f. MAP2 f [] [] = []) /\
(!f h1 t1 h2 t2.
MAP2 f (CONS h1 t1) (CONS h2 t2) = CONS (f h1 h2) (MAP2 f t1 t2))
- 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 (CONS h t) = P h /\ EVERY P t)
- list_Axiom
-
|- !x f. ?!fn1. (fn1 [] = x) /\ (!h t. fn1 (CONS h t) = f (fn1 t) h t)
- NULL
-
|- NULL [] /\ (!h t. ~(NULL (CONS h t)))
- list_INDUCT
-
|- !P. P [] /\ (!t. P t ==> (!h. P (CONS h t))) ==> (!l. P l)
- list_CASES
-
|- !l. (l = []) \/ (?t h. l = CONS h t)
- CONS_11
-
|- !h t h' t'. (CONS h t = CONS h' t') = (h = h') /\ (t = t')
- NOT_NIL_CONS
-
|- !t h. ~([] = CONS h t)
- NOT_CONS_NIL
-
|- !t h. ~(CONS h t = [])
- LIST_NOT_EQ
-
|- !l1 l2. ~(l1 = l2) ==> (!h1 h2. ~(CONS h1 l1 = CONS h2 l2))
- NOT_EQ_LIST
-
|- !h1 h2. ~(h1 = h2) ==> (!l1 l2. ~(CONS h1 l1 = CONS h2 l2))
- EQ_LIST
-
|- !h1 h2. (h1 = h2) ==> (!l1 l2. (l1 = l2) ==> (CONS h1 l1 = CONS h2 l2))
- CONS
-
|- !l. ~(NULL l) ==> (CONS (HD l) (TL l) = l)
- APPEND_ASSOC
-
|- !l1 l2 l3. APPEND l1 (APPEND l2 l3) = APPEND (APPEND l1 l2) l3
- LENGTH_APPEND
-
|- !l1 l2. LENGTH (APPEND l1 l2) = LENGTH l1 + LENGTH l2
- MAP_APPEND
-
|- !f l1 l2. MAP f (APPEND l1 l2) = APPEND (MAP f l1) (MAP f l2)
- LENGTH_MAP
-
|- !l f. LENGTH (MAP f l) = LENGTH l
- EVERY_EL
-
|- !l P. EVERY P l = (!n. n < LENGTH l ==> P (EL n l))
- EVERY_CONJ
-
|- !l. EVERY (\x. P x /\ Q x) l = EVERY P l /\ EVERY Q l
- LENGTH_NIL
-
|- !l. (LENGTH l = 0) = l = []
- LENGTH_CONS
-
|- !l n. (LENGTH l = SUC n) = (?h l'. (LENGTH l' = n) /\ (l = CONS h l'))
- LENGTH_EQ_CONS
-
|- !P n.
(!l. (LENGTH l = SUC n) ==> P l) =
(!l. (LENGTH l = n) ==> (\l. !x. P (CONS x l)) l)
- LENGTH_EQ_NIL
-
|- !P. (!l. (LENGTH l = 0) ==> P l) = P []