- word_11
-
|- !a a'. (WORD a = WORD a') = (a = a')
- word_case_cong
-
|- !M M' f.
(M = M') /\ (!a. (M' = WORD a) ==> (f a = f' a)) ==>
(case f M = case f' M')
- word_nchotomy
-
|- !w. ?l. w = WORD l
- word_Axiom
-
|- !f. ?fn. !a. fn (WORD a) = f a
- word_induction
-
|- !P. (!l. P (WORD l)) ==> !w. P w
- word_Ax
-
|- !f. ?fn. !a. fn (WORD a) = f a
- WORD_11
-
|- !l l'. (WORD l = WORD l') = (l = l')
- word_induct
-
|- !P. (!l. P (WORD l)) ==> !w. P w
- word_cases
-
|- !w. ?l. w = WORD l
- IN_PWORDLEN
-
|- !n l. WORD l IN PWORDLEN n = (LENGTH l = n)
- PWORDLEN
-
|- !n w. w IN PWORDLEN n = (WORDLEN w = n)
- PWORDLEN0
-
|- !w. w IN PWORDLEN 0 ==> (w = WORD [])
- PWORDLEN1
-
|- !x. WORD [x] IN PWORDLEN 1
- WSEG0
-
|- !k w. WSEG 0 k w = WORD []
- WSEG_PWORDLEN
-
|- !n (w::PWORDLEN n) m k. m + k <= n ==> WSEG m k w IN PWORDLEN m
- WSEG_WORDLEN
-
|- !n (w::PWORDLEN n) m k. m + k <= n ==> (WORDLEN (WSEG m k w) = m)
- WSEG_WORD_LENGTH
-
|- !n (w::PWORDLEN n). WSEG n 0 w = w
- BIT0
-
|- !b. BIT 0 (WORD [b]) = b
- WSEG_BIT
-
|- !n (w::PWORDLEN n) k. k < n ==> (WSEG 1 k w = WORD [BIT k w])
- BIT_WSEG
-
|- !n (w::PWORDLEN n) m k j.
m + k <= n ==> j < m ==> (BIT j (WSEG m k w) = BIT (j + k) w)
- MSB
-
|- !n (w::PWORDLEN n). 0 < n ==> (MSB w = BIT (PRE n) w)
- LSB
-
|- !n (w::PWORDLEN n). 0 < n ==> (LSB w = BIT 0 w)
- WORD_PARTITION
-
|- (!n (w::PWORDLEN n) m. m <= n ==> (WCAT (WSPLIT m w) = w)) /\
!n m (w1::PWORDLEN n) (w2::PWORDLEN m). WSPLIT m (WCAT (w1,w2)) = (w1,w2)
- WCAT_ASSOC
-
|- !w1 w2 w3. WCAT (w1,WCAT (w2,w3)) = WCAT (WCAT (w1,w2),w3)
- WCAT0
-
|- !w. (WCAT (WORD [],w) = w) /\ (WCAT (w,WORD []) = w)
- WCAT_11
-
|- !m n (wm1::PWORDLEN m) (wm2::PWORDLEN m) (wn1::PWORDLEN n)
(wn2::PWORDLEN n).
(WCAT (wm1,wn1) = WCAT (wm2,wn2)) = (wm1 = wm2) /\ (wn1 = wn2)
- WSPLIT_PWORDLEN
-
|- !n (w::PWORDLEN n) m.
m <= n ==>
FST (WSPLIT m w) IN PWORDLEN (n - m) /\ SND (WSPLIT m w) IN PWORDLEN m
- WCAT_PWORDLEN
-
|- !n1 (w1::PWORDLEN n1) n2 (w2::PWORDLEN n2).
WCAT (w1,w2) IN PWORDLEN (n1 + n2)
- WORDLEN_SUC_WCAT
-
|- !n w.
w IN PWORDLEN (SUC n) ==>
?(b::PWORDLEN 1) (w'::PWORDLEN n). w = WCAT (b,w')
- WSEG_WSEG
-
|- !n (w::PWORDLEN n) m1 k1 m2 k2.
m1 + k1 <= n /\ m2 + k2 <= m1 ==>
(WSEG m2 k2 (WSEG m1 k1 w) = WSEG m2 (k1 + k2) w)
- WSPLIT_WSEG
-
|- !n (w::PWORDLEN n) k.
k <= n ==> (WSPLIT k w = (WSEG (n - k) k w,WSEG k 0 w))
- WSPLIT_WSEG1
-
|- !n (w::PWORDLEN n) k. k <= n ==> (FST (WSPLIT k w) = WSEG (n - k) k w)
- WSPLIT_WSEG2
-
|- !n (w::PWORDLEN n) k. k <= n ==> (SND (WSPLIT k w) = WSEG k 0 w)
- WCAT_WSEG_WSEG
-
|- !n (w::PWORDLEN n) m1 m2 k.
m1 + (m2 + k) <= n ==>
(WCAT (WSEG m2 (m1 + k) w,WSEG m1 k w) = WSEG (m1 + m2) k w)
- WORD_SPLIT
-
|- !n1 n2 (w::PWORDLEN (n1 + n2)). w = WCAT (WSEG n1 n2 w,WSEG n2 0 w)
- WORDLEN_SUC_WCAT_WSEG_WSEG
-
|- !w::PWORDLEN (SUC n). w = WCAT (WSEG 1 n w,WSEG n 0 w)
- WORDLEN_SUC_WCAT_WSEG_WSEG_RIGHT
-
|- !w::PWORDLEN (SUC n). w = WCAT (WSEG n 1 w,WSEG 1 0 w)
- WORDLEN_SUC_WCAT_BIT_WSEG
-
|- !n (w::PWORDLEN (SUC n)). w = WCAT (WORD [BIT n w],WSEG n 0 w)
- WORDLEN_SUC_WCAT_BIT_WSEG_RIGHT
-
|- !n (w::PWORDLEN (SUC n)). w = WCAT (WSEG n 1 w,WORD [BIT 0 w])
- WSEG_WCAT1
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2). WSEG n1 n2 (WCAT (w1,w2)) = w1
- WSEG_WCAT2
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2). WSEG n2 0 (WCAT (w1,w2)) = w2
- WSEG_SUC
-
|- !n (w::PWORDLEN n) k m1.
k + SUC m1 < n ==>
(WSEG (SUC m1) k w = WCAT (WSEG 1 (k + m1) w,WSEG m1 k w))
- WORD_CONS_WCAT
-
|- !x l. WORD (x::l) = WCAT (WORD [x],WORD l)
- WORD_SNOC_WCAT
-
|- !l x. WORD (SNOC x l) = WCAT (WORD l,WORD [x])
- BIT_WCAT_FST
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2) k.
n2 <= k /\ k < n1 + n2 ==> (BIT k (WCAT (w1,w2)) = BIT (k - n2) w1)
- BIT_WCAT_SND
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2) k.
k < n2 ==> (BIT k (WCAT (w1,w2)) = BIT k w2)
- BIT_WCAT1
-
|- !n (w::PWORDLEN n) b. BIT n (WCAT (WORD [b],w)) = b
- WSEG_WCAT_WSEG1
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2) m k.
m <= n1 /\ n2 <= k ==> (WSEG m k (WCAT (w1,w2)) = WSEG m (k - n2) w1)
- WSEG_WCAT_WSEG2
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2) m k.
m + k <= n2 ==> (WSEG m k (WCAT (w1,w2)) = WSEG m k w2)
- WSEG_WCAT_WSEG
-
|- !n1 n2 (w1::PWORDLEN n1) (w2::PWORDLEN n2) m k.
m + k <= n1 + n2 /\ k < n2 /\ n2 <= m + k ==>
(WSEG m k (WCAT (w1,w2)) =
WCAT (WSEG (m + k - n2) 0 w1,WSEG (n2 - k) k w2))
- BIT_EQ_IMP_WORD_EQ
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n).
(!k. k < n ==> (BIT k w1 = BIT k w2)) ==> (w1 = w2)