- ADD_BNVAL_LEFT
-
|- !n (w1::PWORDLEN (SUC n)) (w2::PWORDLEN (SUC n)).
BNVAL w1 + BNVAL w2 =
(BV (BIT n w1) + BV (BIT n w2)) * 2 ** n +
(BNVAL (WSEG n 0 w1) + BNVAL (WSEG n 0 w2))
- ADD_BNVAL_RIGHT
-
|- !n (w1::PWORDLEN (SUC n)) (w2::PWORDLEN (SUC n)).
BNVAL w1 + BNVAL w2 =
(BNVAL (WSEG n 1 w1) + BNVAL (WSEG n 1 w2)) * 2 +
(BV (BIT 0 w1) + BV (BIT 0 w2))
- ADD_BNVAL_SPLIT
-
|- !n1 n2 (w1::PWORDLEN (n1 + n2)) (w2::PWORDLEN (n1 + n2)).
BNVAL w1 + BNVAL w2 =
(BNVAL (WSEG n1 n2 w1) + BNVAL (WSEG n1 n2 w2)) * 2 ** n2 +
(BNVAL (WSEG n2 0 w1) + BNVAL (WSEG n2 0 w2))
- BIT_NBWORD0
-
|- !k n. k < n ==> (BIT k (NBWORD n 0) = F)
- BNVAL0
-
|- BNVAL (WORD []) = 0
- BNVAL_11
-
|- !w1 w2. (WORDLEN w1 = WORDLEN w2) ==> (BNVAL w1 = BNVAL w2) ==> (w1 = w2)
- BNVAL_MAX
-
|- !n (w::PWORDLEN n). BNVAL w < 2 ** n
- BNVAL_NBWORD
-
|- !n m. m < 2 ** n ==> (BNVAL (NBWORD n m) = m)
- BNVAL_NVAL
-
|- !w. BNVAL w = NVAL BV 2 w
- BNVAL_ONTO
-
|- !w. ?n. BNVAL w = n
- BNVAL_WCAT
-
|- !n m (w1::PWORDLEN n) (w2::PWORDLEN m).
BNVAL (WCAT (w1,w2)) = BNVAL w1 * 2 ** m + BNVAL w2
- BNVAL_WCAT1
-
|- !n (w::PWORDLEN n) x. BNVAL (WCAT (w,WORD [x])) = BNVAL w * 2 + BV x
- BNVAL_WCAT2
-
|- !n (w::PWORDLEN n) x. BNVAL (WCAT (WORD [x],w)) = BV x * 2 ** n + BNVAL w
- BV_LESS_2
-
|- !x. BV x < 2
- BV_VB
-
|- !x. x < 2 ==> (BV (VB x) = x)
- DOUBL_EQ_SHL
-
|- !n.
0 < n ==>
!(w::PWORDLEN n) b. NBWORD n (BNVAL w + BNVAL w + BV b) = SND (SHL F w b)
- EQ_NBWORD0_SPLIT
-
|- !n (w::PWORDLEN n) m.
m <= n ==>
((w = NBWORD n 0) =
(WSEG (n - m) m w = NBWORD (n - m) 0) /\ (WSEG m 0 w = NBWORD m 0))
- MSB_NBWORD
-
|- !n m. BIT n (NBWORD (SUC n) m) = VB ((m DIV 2 ** n) MOD 2)
- NBWORD0
-
|- !m. NBWORD 0 m = WORD []
- NBWORD_BNVAL
-
|- !n (w::PWORDLEN n). NBWORD n (BNVAL w) = w
- NBWORD_MOD
-
|- !n m. NBWORD n (m MOD 2 ** n) = NBWORD n m
- NBWORD_SPLIT
-
|- !n1 n2 m. NBWORD (n1 + n2) m = WCAT (NBWORD n1 (m DIV 2 ** n2),NBWORD n2 m)
- NBWORD_SUC
-
|- !n m. NBWORD (SUC n) m = WCAT (NBWORD n (m DIV 2),WORD [VB (m MOD 2)])
- NBWORD_SUC_FST
-
|- !n m. NBWORD (SUC n) m = WCAT (WORD [VB ((m DIV 2 ** n) MOD 2)],NBWORD n m)
- NBWORD_SUC_WSEG
-
|- !n (w::PWORDLEN (SUC n)). NBWORD n (BNVAL w) = WSEG n 0 w
- PWORDLEN_NBWORD
-
|- !n m. PWORDLEN n (NBWORD n m)
- VB_BV
-
|- !x. VB (BV x) = x
- WCAT_NBWORD_0
-
|- !n1 n2. WCAT (NBWORD n1 0,NBWORD n2 0) = NBWORD (n1 + n2) 0
- WORDLEN_NBWORD
-
|- !n m. WORDLEN (NBWORD n m) = n
- WSEG_NBWORD
-
|- !m k n. m + k <= n ==> !l. WSEG m k (NBWORD n l) = NBWORD m (l DIV 2 ** k)
- WSEG_NBWORD_SUC
-
|- !n m. WSEG n 0 (NBWORD (SUC n) m) = NBWORD n m
- WSPLIT_NBWORD_0
-
|- !n m. m <= n ==> (WSPLIT m (NBWORD n 0) = (NBWORD (n - m) 0,NBWORD m 0))
- ZERO_WORD_VAL
-
|- !n (w::PWORDLEN n). (w = NBWORD n 0) = (BNVAL w = 0)