- word_Ax
-
|- !f. ?!fn. !l. fn (WORD l) = f l
- 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
- PWORDLEN
-
|- !n w. PWORDLEN n w = WORDLEN w = n
- PWORDLEN0
-
|- !w. PWORDLEN 0 w ==> (w = WORD [])
- PWORDLEN1
-
|- !x. PWORDLEN 1 (WORD [x])
- WSEG0
-
|- !k w. WSEG 0 k w = WORD []
- WSEG_PWORDLEN
-
|- !n. !w ::(PWORDLEN n). !m k. m + k <= n ==> PWORDLEN m (WSEG m k w)
- 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 wm2 ::(PWORDLEN m).
!wn1 wn2 ::(PWORDLEN n).
(WCAT (wm1,wn1) = WCAT (wm2,wn2)) = (wm1 = wm2) /\ (wn1 = wn2)
- WSPLIT_PWORDLEN
-
|- !n.
!w ::(PWORDLEN n).
!m.
m <= n ==>
PWORDLEN (n - m) (FST (WSPLIT m w)) /\ PWORDLEN m (SND (WSPLIT m w))
- WCAT_PWORDLEN
-
|- !n1.
!w1 ::(PWORDLEN n1).
!n2. !w2 ::(PWORDLEN n2). PWORDLEN (n1 + n2) (WCAT (w1,w2))
- WORDLEN_SUC_WCAT
-
|- !n w.
PWORDLEN (SUC n) w ==>
(?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
- WORD_CONS_WCAT
-
|- !x l. WORD (CONS 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 w2 ::(PWORDLEN n).
(!k. k < n ==> (BIT k w1 = BIT k w2)) ==> (w1 = w2)