- PBITOP_PWORDLEN
-
|- !op ::PBITOP. !n. !w ::(PWORDLEN n). PWORDLEN n (op w)
- PBITOP_WSEG
-
|- !op ::PBITOP.
!n.
!w ::(PWORDLEN n).
!m k. m + k <= n ==> (op (WSEG m k w) = WSEG m k (op w))
- PBITOP_BIT
-
|- !op ::PBITOP.
!n.
!w ::(PWORDLEN n).
!k. k < n ==> (op (WORD [BIT k w]) = WORD [BIT k (op w)])
- PBITBOP_PWORDLEN
-
|- !op ::PBITBOP.
!n. !w1 ::(PWORDLEN n). !w2 ::(PWORDLEN n). PWORDLEN n (op w1 w2)
- PBITBOP_WSEG
-
|- !op ::PBITBOP.
!n.
!w1 ::(PWORDLEN n).
!w2 ::(PWORDLEN n).
!m k.
m + k <= n ==>
(op (WSEG m k w1) (WSEG m k w2) = WSEG m k (op w1 w2))
- PBITBOP_EXISTS
-
|- !f. ?fn. !l1 l2. fn (WORD l1) (WORD l2) = WORD (MAP2 f l1 l2)
- WMAP_PWORDLEN
-
|- !w ::(PWORDLEN n). !f. PWORDLEN n (WMAP f w)
- WMAP_0
-
|- !f. WMAP f (WORD []) = WORD []
- WMAP_BIT
-
|- !n. !w ::(PWORDLEN n). !k. k < n ==> (!f. BIT k (WMAP f w) = f (BIT k w))
- WMAP_WSEG
-
|- !n.
!w ::(PWORDLEN n).
!m k. m + k <= n ==> (!f. WMAP f (WSEG m k w) = WSEG m k (WMAP f w))
- WMAP_PBITOP
-
|- !f. PBITOP (WMAP f)
- WMAP_WCAT
-
|- !w1 w2 f. WMAP f (WCAT (w1,w2)) = WCAT (WMAP f w1,WMAP f w2)
- WMAP_o
-
|- !w f g. WMAP g (WMAP f w) = WMAP (g o f) w
- FORALLBITS
-
|- !n. !w ::(PWORDLEN n). !P. FORALLBITS P w = (!k. k < n ==> P (BIT k w))
- FORALLBITS_WSEG
-
|- !n.
!w ::(PWORDLEN n).
!P. FORALLBITS P w ==> (!m k. m + k <= n ==> FORALLBITS P (WSEG m k w))
- FORALLBITS_WCAT
-
|- !w1 w2 P. FORALLBITS P (WCAT (w1,w2)) = FORALLBITS P w1 /\ FORALLBITS P w2
- NOT_EXISTSABIT
-
|- !P w. ~(EXISTSABIT P w) = FORALLBITS (~ o P) w
- NOT_FORALLBITS
-
|- !P w. ~(FORALLBITS P w) = EXISTSABIT (~ o P) w
- EXISTSABIT
-
|- !n. !w ::(PWORDLEN n). !P. EXISTSABIT P w = (?k. k < n /\ P (BIT k w))
- EXISTSABIT_WSEG
-
|- !n.
!w ::(PWORDLEN n).
!m k. m + k <= n ==> (!P. EXISTSABIT P (WSEG m k w) ==> EXISTSABIT P w)
- EXISTSABIT_WCAT
-
|- !w1 w2 P. EXISTSABIT P (WCAT (w1,w2)) = EXISTSABIT P w1 \/ EXISTSABIT P w2
- SHR_WSEG
-
|- !n.
!w ::(PWORDLEN n).
!m k.
m + k <= n ==>
0 < m ==>
(!f b.
SHR f b (WSEG m k w) =
((f
=> (WCAT (WSEG 1 (k + (m - 1)) w,WSEG (m - 1) (k + 1) w))
| (WCAT (WORD [b],WSEG (m - 1) (k + 1) w))),
BIT k w))
- SHR_WSEG_1F
-
|- !n.
!w ::(PWORDLEN n).
!m k.
m + k <= n ==>
0 < m ==>
(!b.
SHR F b (WSEG m k w) =
(WCAT (WORD [b],WSEG (m - 1) (k + 1) w),BIT k w))
- SHR_WSEG_NF
-
|- !n.
!w ::(PWORDLEN n).
!m k.
m + k < n ==>
0 < m ==>
(SHR F (BIT (m + k) w) (WSEG m k w) = (WSEG m (k + 1) w,BIT k w))
- SHL_WSEG
-
|- !n.
!w ::(PWORDLEN n).
!m k.
m + k <= n ==>
0 < m ==>
(!f b.
SHL f (WSEG m k w) b =
(BIT (k + (m - 1)) w,
(f
=> (WCAT (WSEG (m - 1) k w,WSEG 1 k w))
| (WCAT (WSEG (m - 1) k w,WORD [b])))))
- SHL_WSEG_1F
-
|- !n.
!w ::(PWORDLEN n).
!m k.
m + k <= n ==>
0 < m ==>
(!b.
SHL F (WSEG m k w) b =
(BIT (k + (m - 1)) w,WCAT (WSEG (m - 1) k w,WORD [b])))
- SHL_WSEG_NF
-
|- !n.
!w ::(PWORDLEN n).
!m k.
m + k <= n ==>
0 < m ==>
0 < k ==>
(SHL F (WSEG m k w) (BIT (k - 1) w) =
(BIT (k + (m - 1)) w,WSEG m (k - 1) w))
- WSEG_SHL
-
|- !n.
!w ::(PWORDLEN (SUC n)).
!m k.
0 < k /\ m + k <= SUC n ==>
(!b. WSEG m k (SND (SHL f w b)) = WSEG m (k - 1) w)
- WSEG_SHL_0
-
|- !n.
!w ::(PWORDLEN (SUC n)).
!m b.
0 < m /\ m <= SUC n ==>
(WSEG m 0 (SND (SHL f w b)) =
WCAT (WSEG (m - 1) 0 w,(f => (WSEG 1 0 w) | (WORD [b]))))