- DIV1
-
|- !q. q DIV 1 = q
- SUC_SUB
-
|- SUC a - a = 1
- DIV_MULT_1
-
|- !r n. r < n ==> ((n + r) DIV n = 1)
- NOT_ZERO_ADD1
-
|- !m. ~(m = 0) ==> ?p. m = SUC p
- ZERO_LT_TWOEXP
-
|- !n. 0 < 2 ** n
- MOD_2EXP_LT
-
|- !n k. k MOD 2 ** n < 2 ** n
- TWOEXP_DIVISION
-
|- !n k. k = k DIV 2 ** n * 2 ** n + k MOD 2 ** n
- TWOEXP_MONO
-
|- !a b. a < b ==> 2 ** a < 2 ** b
- TWOEXP_MONO2
-
|- !a b. a <= b ==> 2 ** a <= 2 ** b
- EXP_SUB_LESS_EQ
-
|- !a b. 2 ** (a - b) <= 2 ** a
- BITS_THM
-
|- !h l n. BITS h l n = (n DIV 2 ** l) MOD 2 ** (SUC h - l)
- BITSLT_THM
-
|- !h l n. BITS h l n < 2 ** (SUC h - l)
- DIV_MULT_LEM
-
|- !m n. 0 < n ==> m DIV n * n <= m
- MOD_2EXP_LEM
-
|- !n x. n MOD 2 ** x = n - n DIV 2 ** x * 2 ** x
- BITS2_THM
-
|- !h l n. BITS h l n = n MOD 2 ** SUC h DIV 2 ** l
- BITS_COMP_THM
-
|- !h1 l1 h2 l2 n.
h2 + l1 <= h1 ==>
(BITS h2 l2 (BITS h1 l1 n) = BITS (h2 + l1) (l2 + l1) n)
- BITS_DIV_THM
-
|- !h l x n. BITS h l x DIV 2 ** n = BITS h (l + n) x
- BITS_LT_HIGH
-
|- !h l n. n < 2 ** SUC h ==> (BITS h l n = n DIV 2 ** l)
- BITS_ZERO
-
|- !h l n. h < l ==> (BITS h l n = 0)
- BITS_ZERO2
-
|- !h l. BITS h l 0 = 0
- BITS_ZERO3
-
|- !h n. BITS h 0 n = n MOD 2 ** SUC h
- BITS_COMP_THM2
-
|- !h1 l1 h2 l2 n.
BITS h2 l2 (BITS h1 l1 n) = BITS (MIN h1 (h2 + l1)) (l2 + l1) n
- NOT_MOD2_LEM
-
|- !n. ~(n MOD 2 = 0) = (n MOD 2 = 1)
- NOT_MOD2_LEM2
-
|- !n a. ~(n MOD 2 = 1) = (n MOD 2 = 0)
- EVEN_MOD2_LEM
-
|- !n. EVEN n = (n MOD 2 = 0)
- ODD_MOD2_LEM
-
|- !n. ODD n = (n MOD 2 = 1)
- LSB_ODD
-
|- LSBn = ODD
- DIV_MULT_THM
-
|- !x n. n DIV 2 ** x * 2 ** x = n - n MOD 2 ** x
- DIV_MULT_THM2
-
|- !n. 2 * (n DIV 2) = n - n MOD 2
- LESS_EQ_EXP_MULT
-
|- !a b. a <= b ==> ?p. 2 ** b = p * 2 ** a
- SLICE_LEM1
-
|- !a x y.
a DIV 2 ** (x + y) * 2 ** (x + y) =
a DIV 2 ** x * 2 ** x - (a DIV 2 ** x) MOD 2 ** y * 2 ** x
- SLICE_LEM2
-
|- !a x y.
n MOD 2 ** (x + y) = n MOD 2 ** x + (n DIV 2 ** x) MOD 2 ** y * 2 ** x
- SLICE_LEM3
-
|- !n h l. l < h ==> n MOD 2 ** SUC l <= n MOD 2 ** h
- SLICE_THM
-
|- !n h l. SLICE h l n = BITS h l n * 2 ** l
- SLICELT_THM
-
|- !h l n. SLICE h l n < 2 ** SUC h
- BITS_SLICE_THM
-
|- !h l n. BITS h l (SLICE h l n) = BITS h l n
- BITS_SLICE_THM2
-
|- !h l n. h <= h2 ==> (BITS h2 l (SLICE h l n) = BITS h l n)
- MOD_2EXP_MONO
-
|- !n h l. l <= h ==> n MOD 2 ** l <= n MOD 2 ** SUC h
- SLICE_COMP_THM
-
|- !h m l n.
SUC m <= h /\ l <= m ==> (SLICE h (SUC m) n + SLICE m l n = SLICE h l n)
- SLICE_ZERO
-
|- !h l n. h < l ==> (SLICE h l n = 0)
- BIT_COMP_THM3
-
|- !h m l n.
SUC m <= h /\ l <= m ==>
(BITS h (SUC m) n * 2 ** (SUC m - l) + BITS m l n = BITS h l n)
- NOT_BIT
-
|- !n a. ~BIT n a = (BITS n n a = 0)
- NOT_BITS
-
|- !n a. ~(BITS n n a = 0) = (BITS n n a = 1)
- NOT_BITS2
-
|- !n a. ~(BITS n n a = 1) = (BITS n n a = 0)
- BIT_SLICE
-
|- !n a b. (BIT n a = BIT n b) = (SLICE n n a = SLICE n n b)
- BIT_SLICE_LEM
-
|- !y x n. SBIT (BIT x n) (x + y) = SLICE x x n * 2 ** y
- BIT_SLICE_THM
-
|- !x n. SBIT (BIT x n) x = SLICE x x n
- SBIT_DIV
-
|- !b m n. n < m ==> (SBIT b (m - n) = SBIT b m DIV 2 ** n)
- BITS_SUC
-
|- !h l n.
l <= SUC h ==>
(SBIT (BIT (SUC h) n) (SUC h - l) + BITS h l n = BITS (SUC h) l n)
- BITS_SUC_THM
-
|- !h l n.
BITS (SUC h) l n =
(if SUC h < l then 0 else SBIT (BIT (SUC h) n) (SUC h - l) + BITS h l n)
- BIT_BITS_THM
-
|- !h l a b.
(!x. l <= x /\ x <= h ==> (BIT x a = BIT x b)) =
(BITS h l a = BITS h l b)
- BITWISE_LT_2EXP
-
|- !n op a b. BITWISE n op a b < 2 ** n
- LESS_EXP_MULT2
-
|- !a b. a < b ==> ?p. 2 ** b = 2 ** (p + 1) * 2 ** a
- BITWISE_THM
-
|- !x n op a b. x < n ==> (BIT x (BITWISE n op a b) = op (BIT x a) (BIT x b))
- BITWISE_COR
-
|- !x n op a b.
x < n ==>
op (BIT x a) (BIT x b) ==>
((BITWISE n op a b DIV 2 ** x) MOD 2 = 1)
- BITWISE_NOT_COR
-
|- !x n op a b.
x < n ==>
~op (BIT x a) (BIT x b) ==>
((BITWISE n op a b DIV 2 ** x) MOD 2 = 0)
- MOD_PLUS_RIGHT
-
|- !n. 0 < n ==> !j k. (j + k MOD n) MOD n = (j + k) MOD n
- MOD_PLUS_1
-
|- !n. 0 < n ==> !x. ((x + 1) MOD n = 0) = (x MOD n + 1 = n)
- MOD_ADD_1
-
|- !n. 0 < n ==> !x. ~((x + 1) MOD n = 0) ==> ((x + 1) MOD n = x MOD n + 1)