Theory: word_bitop

Parents


Type constants


Term constants


Axioms


Definitions

PBITOP_DEF
|- !op.
     PBITOP op =
     (!n.
       !w ::(PWORDLEN n).
         PWORDLEN n (op w) /\
         (!m k. m + k <= n ==> (op (WSEG m k w) = WSEG m k (op w))))
PBITBOP_DEF
|- !op.
     PBITBOP op =
     (!n.
       !w1 ::(PWORDLEN n).
         !w2 ::(PWORDLEN n).
           PWORDLEN n (op w1 w2) /\
           (!m k.
             m + k <= n ==>
             (op (WSEG m k w1) (WSEG m k w2) = WSEG m k (op w1 w2))))
WMAP_DEF
|- !f l. WMAP f (WORD l) = WORD (MAP f l)
FORALLBITS_DEF
|- !P l. FORALLBITS P (WORD l) = ALL_EL P l
EXISTSABIT_DEF
|- !P l. EXISTSABIT P (WORD l) = SOME_EL P l
SHR_DEF
|- !f b w.
     SHR f b w =
     (WCAT
        ((f => (WSEG 1 (PRE (WORDLEN w)) w) | (WORD [b])),
         WSEG (PRE (WORDLEN w)) 1 w),
      BIT 0 w)
SHL_DEF
|- !f w b.
     SHL f w b =
     (BIT (PRE (WORDLEN w)) w,
      WCAT (WSEG (PRE (WORDLEN w)) 0 w,(f => (WSEG 1 0 w) | (WORD [b]))))

Theorems

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]))))