• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
        • Svex-stvs
        • Svex-decomposition-methodology
        • Sv-versus-esim
        • Svex-decomp
        • Svex-compose-dfs
        • Svex-compilation
        • Moddb
        • Svmods
        • Svstmt
        • Sv-tutorial
        • Expressions
          • Rewriting
          • Svex
          • Bit-blasting
          • Functions
            • 4vec-operations
              • 4vec-bit?
              • 4vec-part-install
              • 4vec-concat
              • 4vec-?
              • 4vec-rsh
              • 4vec-bit?!
              • 4vec-===*
              • 4vec-reduction-and
              • 4vec-bit-extract
              • 4vec-rev-blocks
                • Rev-blocks
                • Rev-block-index
              • 4vec-lsh
              • 4vec-resor
              • 4vec-resand
              • 4vec-parity
              • 4vec-plus
              • 4vec-<
              • 4vec-minus
              • 4vec-res
              • 4vec-override
              • 4vec-bit-index
              • 4vec-?!
              • 4vec-zero-ext
              • 4vec-part-select
              • 4vec-===
              • 4vec-remainder
              • 4vec-reduction-or
              • 4vec-idx->4v
              • 4vec-==
              • 4vec-sign-ext
              • 4vec-quotient
              • 4vec-?*
              • 4vec-bitxor
              • 4vec-wildeq
              • 4vec-times
              • 4vec-bitmux
              • 4vec-symwildeq
              • 4vec-bitand
              • 4vec-wildeq-safe
              • 4vec-bitor
              • 4vec-shift-core
              • 4vec-pow
              • 4vec-onset
              • 4vec-offset
              • 4vec-xdet
              • 4vec-uminus
              • 4vec-clog2
              • 4vec-bitnot
              • 4vec-onehot
              • 4vec-countones
              • 4veclist-p-to-stringp
              • 4vec-p-to-stringp
              • 4vec-onehot0
              • 4vec-1mask
              • 4vec-p-to-stringp-aux
              • 4v->4vec-bit
              • 4v-to-characterp
              • Bool->vec
              • Unsigned-4vec-p
            • 3vec-operations
            • *svex-op-table*
          • 4vmask
          • Why-infinite-width
          • Svex-vars
          • Evaluation
          • Values
        • Symbolic-test-vector
        • Vl-to-svex
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • 4vec-operations

4vec-rev-blocks

Similar to a streaming concatenation operation in SystemVerilog.

Signature
(4vec-rev-blocks nbits blocksz x) → res
Arguments
nbits — Guard (4vec-p nbits).
blocksz — Guard (4vec-p blocksz).
x — Guard (4vec-p x).
Returns
res — Type (4vec-p res).

BOZO document me.

Definitions and Theorems

Function: 4vec-rev-blocks

(defun 4vec-rev-blocks (nbits blocksz x)
  (declare (xargs :guard (and (4vec-p nbits)
                              (4vec-p blocksz)
                              (4vec-p x))))
  (let ((__function__ '4vec-rev-blocks))
    (declare (ignorable __function__))
    (if (and (2vec-p nbits)
             (<= 0 (2vec->val nbits))
             (2vec-p blocksz)
             (< 0 (2vec->val blocksz)))
        (b* (((4vec x)))
          (4vec (rev-blocks (2vec->val nbits)
                            (2vec->val blocksz)
                            x.upper)
                (rev-blocks (2vec->val nbits)
                            (2vec->val blocksz)
                            x.lower)))
      (4vec-x))))

Theorem: 4vec-p-of-4vec-rev-blocks

(defthm 4vec-p-of-4vec-rev-blocks
  (b* ((res (4vec-rev-blocks nbits blocksz x)))
    (4vec-p res))
  :rule-classes :rewrite)

Theorem: 4vec-rev-blocks-of-4vec-fix-nbits

(defthm 4vec-rev-blocks-of-4vec-fix-nbits
  (equal (4vec-rev-blocks (4vec-fix nbits)
                          blocksz x)
         (4vec-rev-blocks nbits blocksz x)))

Theorem: 4vec-rev-blocks-4vec-equiv-congruence-on-nbits

(defthm 4vec-rev-blocks-4vec-equiv-congruence-on-nbits
  (implies (4vec-equiv nbits nbits-equiv)
           (equal (4vec-rev-blocks nbits blocksz x)
                  (4vec-rev-blocks nbits-equiv blocksz x)))
  :rule-classes :congruence)

Theorem: 4vec-rev-blocks-of-4vec-fix-blocksz

(defthm 4vec-rev-blocks-of-4vec-fix-blocksz
  (equal (4vec-rev-blocks nbits (4vec-fix blocksz)
                          x)
         (4vec-rev-blocks nbits blocksz x)))

Theorem: 4vec-rev-blocks-4vec-equiv-congruence-on-blocksz

(defthm 4vec-rev-blocks-4vec-equiv-congruence-on-blocksz
  (implies (4vec-equiv blocksz blocksz-equiv)
           (equal (4vec-rev-blocks nbits blocksz x)
                  (4vec-rev-blocks nbits blocksz-equiv x)))
  :rule-classes :congruence)

Theorem: 4vec-rev-blocks-of-4vec-fix-x

(defthm 4vec-rev-blocks-of-4vec-fix-x
  (equal (4vec-rev-blocks nbits blocksz (4vec-fix x))
         (4vec-rev-blocks nbits blocksz x)))

Theorem: 4vec-rev-blocks-4vec-equiv-congruence-on-x

(defthm 4vec-rev-blocks-4vec-equiv-congruence-on-x
  (implies (4vec-equiv x x-equiv)
           (equal (4vec-rev-blocks nbits blocksz x)
                  (4vec-rev-blocks nbits blocksz x-equiv)))
  :rule-classes :congruence)

Subtopics

Rev-blocks
Reverses blocks, like the streaming concatenation operator in SystemVerilog.
Rev-block-index
For reasoning about rev-blocks, computes the offset into x corresponding to an offset into (rev-blocks nbits blocksz x).