- EXISTSABIT
-
|- !n (w::PWORDLEN n) P. EXISTSABIT P w = ?k. k < n /\ P (BIT k w)
- EXISTSABIT_WCAT
-
|- !w1 w2 P. EXISTSABIT P (WCAT (w1,w2)) = EXISTSABIT P w1 \/ EXISTSABIT P w2
- EXISTSABIT_WSEG
-
|- !n (w::PWORDLEN n) m k.
m + k <= n ==> !P. EXISTSABIT P (WSEG m k w) ==> EXISTSABIT P w
- FORALLBITS
-
|- !n (w::PWORDLEN n) P. FORALLBITS P w = !k. k < n ==> P (BIT k w)
- FORALLBITS_WCAT
-
|- !w1 w2 P. FORALLBITS P (WCAT (w1,w2)) = FORALLBITS P w1 /\ FORALLBITS P w2
- FORALLBITS_WSEG
-
|- !n (w::PWORDLEN n) P.
FORALLBITS P w ==> !m k. m + k <= n ==> FORALLBITS P (WSEG m k w)
- NOT_EXISTSABIT
-
|- !P w. ~EXISTSABIT P w = FORALLBITS ($~ o P) w
- NOT_FORALLBITS
-
|- !P w. ~FORALLBITS P w = EXISTSABIT ($~ o P) w
- PBITBOP_EXISTS
-
|- !f. ?fn. !l1 l2. fn (WORD l1) (WORD l2) = WORD (MAP2 f l1 l2)
- 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))
- PBITOP_BIT
-
|- !(op::PBITOP) n (w::PWORDLEN n) k.
k < n ==> (op (WORD [BIT k w]) = WORD [BIT k (op w)])
- 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))
- 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,
(if f then
WCAT (WSEG (m - 1) k w,WSEG 1 k w)
else
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))
- SHR_WSEG
-
|- !n (w::PWORDLEN n) m k.
m + k <= n ==>
0 < m ==>
!f b.
SHR f b (WSEG m k w) =
((if f then
WCAT (WSEG 1 (k + (m - 1)) w,WSEG (m - 1) (k + 1) w)
else
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))
- 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_o
-
|- !w f g. WMAP g (WMAP f w) = WMAP (g o f) w
- WMAP_PBITOP
-
|- !f. PBITOP (WMAP f)
- WMAP_PWORDLEN
-
|- !(w::PWORDLEN n) f. PWORDLEN n (WMAP f w)
- WMAP_WCAT
-
|- !w1 w2 f. WMAP f (WCAT (w1,w2)) = WCAT (WMAP f w1,WMAP f w2)
- WMAP_WSEG
-
|- !n (w::PWORDLEN n) m k.
m + k <= n ==> !f. WMAP f (WSEG m k w) = WSEG m k (WMAP f 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,(if f then WSEG 1 0 w else WORD [b])))