- ACARRY_EQ_ICARRY
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) cin k.
k <= n ==> (ACARRY k w1 w2 cin = ICARRY k w1 w2 cin)
- BNVAL_LESS_EQ
-
|- !n (w::PWORDLEN n). BNVAL w <= 2 ** n - 1
- ADD_BNVAL_LESS_EQ1
-
|- !n cin (w1::PWORDLEN n) (w2::PWORDLEN n).
(BNVAL w1 + (BNVAL w2 + BV cin)) DIV 2 ** n <= SUC 0
- ADD_BV_BNVAL_DIV_LESS_EQ1
-
|- !n x1 x2 cin (w1::PWORDLEN n) (w2::PWORDLEN n).
(BV x1 + BV x2 + (BNVAL w1 + (BNVAL w2 + BV cin)) DIV 2 ** n) DIV 2 <= 1
- ADD_BV_BNVAL_LESS_EQ
-
|- !n x1 x2 cin (w1::PWORDLEN n) (w2::PWORDLEN n).
BV x1 + BV x2 + (BNVAL w1 + (BNVAL w2 + BV cin)) <= SUC (2 ** SUC n)
- ADD_BV_BNVAL_LESS_EQ1
-
|- !n x1 x2 cin (w1::PWORDLEN n) (w2::PWORDLEN n).
(BV x1 + BV x2 + (BNVAL w1 + (BNVAL w2 + BV cin))) DIV 2 ** SUC n <= 1
- ACARRY_EQ_ADD_DIV
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) k.
k < n ==>
(BV (ACARRY k w1 w2 cin) =
(BNVAL (WSEG k 0 w1) + BNVAL (WSEG k 0 w2) + BV cin) DIV 2 ** k)
- ADD_WORD_SPLIT
-
|- !n1 n2 (w1::PWORDLEN (n1 + n2)) (w2::PWORDLEN (n1 + n2)) cin.
NBWORD (n1 + n2) (BNVAL w1 + BNVAL w2 + BV cin) =
WCAT
(NBWORD n1
(BNVAL (WSEG n1 n2 w1) + BNVAL (WSEG n1 n2 w2) +
BV (ACARRY n2 w1 w2 cin)),
NBWORD n2 (BNVAL (WSEG n2 0 w1) + BNVAL (WSEG n2 0 w2) + BV cin))
- WSEG_NBWORD_ADD
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) m k cin.
m + k <= n ==>
(WSEG m k (NBWORD n (BNVAL w1 + BNVAL w2 + BV cin)) =
NBWORD m
(BNVAL (WSEG m k w1) + BNVAL (WSEG m k w2) + BV (ACARRY k w1 w2 cin)))
- ADD_NBWORD_EQ0_SPLIT
-
|- !n1 n2 (w1::PWORDLEN (n1 + n2)) (w2::PWORDLEN (n1 + n2)) cin.
(NBWORD (n1 + n2) (BNVAL w1 + BNVAL w2 + BV cin) = NBWORD (n1 + n2) 0) =
(NBWORD n1
(BNVAL (WSEG n1 n2 w1) + BNVAL (WSEG n1 n2 w2) +
BV (ACARRY n2 w1 w2 cin)) =
NBWORD n1 0) /\
(NBWORD n2 (BNVAL (WSEG n2 0 w1) + BNVAL (WSEG n2 0 w2) + BV cin) =
NBWORD n2 0)
- ACARRY_MSB
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) cin.
ACARRY n w1 w2 cin =
BIT n (NBWORD (SUC n) (BNVAL w1 + BNVAL w2 + BV cin))
- ACARRY_WSEG
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) cin k m.
k < m /\ m <= n ==>
(ACARRY k (WSEG m 0 w1) (WSEG m 0 w2) cin = ACARRY k w1 w2 cin)
- ICARRY_WSEG
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) cin k m.
k < m /\ m <= n ==>
(ICARRY k (WSEG m 0 w1) (WSEG m 0 w2) cin = ICARRY k w1 w2 cin)
- ACARRY_ACARRY_WSEG
-
|- !n (w1::PWORDLEN n) (w2::PWORDLEN n) cin m k1 k2.
k1 < m /\ k2 < n /\ m + k2 <= n ==>
(ACARRY k1 (WSEG m k2 w1) (WSEG m k2 w2) (ACARRY k2 w1 w2 cin) =
ACARRY (k1 + k2) w1 w2 cin)