• 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
            • Svex-focused-equivalence-checking
            • A4vec-operations
              • Aig-head-tail-concat-aux
              • A4vec-part-install
              • Aig-rev-blocks-sss
              • A4vec-wildeq-safe-aux
              • A4vec-concat
              • Aig-overlap-width-ss-aux
              • A4vec-wildeq-aux
              • A4vec-part-select
              • A4vec-rsh
              • A4vec-mask-check
              • Aig-head-of-concat
              • A4vec-===*-aux
              • A4vec-sign-ext
              • A4vec-rev-blocks
              • A3vec-bit?
              • A4vec-zero-ext
              • A3vec-?*
              • A3vec-?
              • A4vec-lsh
              • A4vec-bit?!
              • A4vec-?!
              • Aig-scons-with-hint
              • A4vec-override
              • A4vec-symwildeq
              • A4vec-remainder
              • A4vec-pow
              • A4vec-bit-extract
              • A4vec-wildeq-safe
              • A4vec-quotient
              • A4vec-mask
              • Aig-list->s-upper-bound
              • A4vec-wildeq
              • A4vec-resor
              • A4vec-resand
              • A3vec-bitxor
              • A4vec-times
              • A4vec-syntactic-3vec-p
              • A4vec-plus
              • A4vec-minus
              • A3vec-bitor
              • A3vec-bitand
              • A4vec-===*
              • A4vec-===
              • A4vec-<
              • A4vec-res
              • Aig-list->s-lower-bound
              • A3vec-==
              • A4vec-parity
              • 4vec->a4vec
              • Aig-force-sign-s
              • A4vec-wildeq-safe-bit
              • A4vec-onehot0
              • A4vec-onehot
              • A4vec-countones
              • A3vec-reduction-or
              • A3vec-reduction-and
              • A2vec-p
              • Aig-countones-aux
              • A4vec-uminus
              • A4vec-clog2
              • A3vec-fix
              • Aig-onehot-aux
              • A4vec-xdet
              • A4vec-onset
              • A4vec-offset
              • A3vec-bitnot
              • Aig-iszero-s
              • A4vec-wildeq-bit
              • A4vec-ite
              • Aig-sterm-with-hint
              • A4vec-===*-bit
              • A4vec-x
              • A4vec-1x
              • A4vec-0
              • And4
            • Svexlist-eval-gl
            • Aig-symbolic-arithmetic
            • Svex-varmasks/env->aig-env-rec
            • Svex-varmasks->a4env-rec
            • Svexlist/env-list-eval-gl
            • 4vmask-to-a4vec-rec-env
            • 4vmask-to-a4vec-rec
            • Svexlist->a4vecs-for-varlist
            • Svex-varmasks/env->aig-env-stats-rec
            • Svexlist->a4vec-nrev
            • A4veclist/svex-env-list-eval
            • A4vec
            • Svexlist-x-out-unused-vars
            • Svex->a4vec-memotable-correctp
            • A4vec/svex-env-eval
            • Svex-varmasks->a4env
            • Svex-varmasks/env->aig-env-rec-log
            • 4vmask-to-a4vec-env
            • 4veclist-from-bitlist-log-rec
            • Svex-apply-aig
            • Svexlist-vars-for-symbolic-eval
            • Nat-bool-a4env-upper-boundp
            • 4vmask-to-a4vec
            • Svexlist/env-list-vars-for-symbolic-eval
            • Svex-maskbits-for-vars
            • Svexlist->a4vec-aig-env-for-varlist
            • 4vec-from-bitlist
            • Svexlist-full-masks-p
            • Svex-varmasks/env->aig-env-stats
            • Svex-varmasks/env->aig-env
            • Svexlistlist->a4vec
            • Svex-const-concat-args
            • Svex-mask-alist-extract-vars
            • Svexlist->a4vec-top
            • Nat-bool-a4vec-upper-boundp
            • Nat-bool-a4env-lower-boundp
            • Maybe-a3vec-fix
            • Svex-maskbits-ok
            • Svex-envlist-check-boolmasks
            • Svex-env-check-boolmasks
            • Nat-bool-list-upper-boundp
            • Nat-bool-a4vec-lower-boundp
            • Maybe-svexlist-rewrite-fixpoint
            • 4vmask-to-a4vec-varcount
            • A4vec-eval
            • Svexlist-nth
            • A4veclist-nth
            • Nat-bool-list-lower-boundp
            • 4veclist-from-bitlist
            • V2i-first-n
            • A4veclist-eval-gl
            • Svex-envlist-keyset
            • Svex-a4vec-env-eval
            • A4veclist/env-list-eval
            • Svexlist-variable-mask-alist
            • Sparseint-nfix
            • A4veclist-length
            • A4veclist-eval
            • 4vec-boolmaskp
            • Nat-bool-list-nats
            • Nat-bool-a4env-p
            • Nat-bool-listp
            • A4veclist->aiglist
            • Svexlist-rewrite-fixpoint-memo
            • Nat-bool-a4vec-p
            • A4vec->aiglist
            • Svex-is-const-concat
            • Nat-bool-a4env-vars
            • Svexlist-mask-alist-memo
            • Nat-bool-a4vec-vars
            • Svexlist-vars-memo
            • A4vec-constantp
            • Svex-aig-memotable
            • Svex-a4vec-env
            • A4veclistlist
            • A4veclist
            • Symbolic-params-x-out-cond
          • Functions
          • 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
  • Bit-blasting

A4vec-operations

Symbolic versions of the SV functions that operate on a4vecs instead of 4vecs.

These operations form the core of our support for bit-blasting SV expressions.

Our basic goal here is to provide efficient ACL2::aig-based implementations of all of the SV functions. It is generally important for these functions to produce small AIGs so that we will produce simpler, smaller problems for back-end tools like SAT solvers and BDD packages to process.

These are many functions to implement, but most of this is straightforward and we can substantially reuse our functions for aig-symbolic-arithmetic, extending them as appropriate to deal with our four-valued logic.

A few functions with fancier implementations include a4vec-concat, which is reused in a4vec-zero-ext and a4vec-sign-ext, and also the shifting operations a4vec-rsh and a4vec-lsh. Each of these take some special measures to try to avoid creating catastrophically large vectors.

Subtopics

Aig-head-tail-concat-aux
A4vec-part-install
Aig-rev-blocks-sss
A4vec-wildeq-safe-aux
A4vec-concat
Symbolic version of 4vec-concat.
Aig-overlap-width-ss-aux
A4vec-wildeq-aux
A4vec-part-select
A4vec-rsh
Symbolic version of 4vec-rsh.
A4vec-mask-check
Aig-head-of-concat
A4vec-===*-aux
A4vec-sign-ext
Symbolic version of 4vec-sign-ext.
A4vec-rev-blocks
Symbolic version of 4vec-rev-blocks.
A3vec-bit?
Symbolic version of a3vec-bit?.
A4vec-zero-ext
Symbolic version of 4vec-zero-ext.
A3vec-?*
Symbolic version of 3vec-?*.
A3vec-?
Symbolic version of 3vec-?.
A4vec-lsh
Symbolic version of 4vec-lsh.
A4vec-bit?!
Symbolic version of a3vec-bit?.
A4vec-?!
Symbolic version of 3vec-?*.
Aig-scons-with-hint
A4vec-override
Symbolic version of 4vec-override.
A4vec-symwildeq
Symbolic version of 4vec-symwildeq.
A4vec-remainder
Symbolic version of 4vec-remainder.
A4vec-pow
Symbolic version of 4vec-pow.
A4vec-bit-extract
Symbolic version of 4vec-bit-extract.
A4vec-wildeq-safe
Symbolic version of 4vec-wildeq-safe.
A4vec-quotient
Symbolic version of 4vec-quotient.
A4vec-mask
Symbolic version of 4vec-mask.
Aig-list->s-upper-bound
Computes a constant upper bound for the symbolic value of x.
A4vec-wildeq
Symbolic version of 4vec-wildeq.
A4vec-resor
Symbolic version of 4vec-resor.
A4vec-resand
Symbolic version of 4vec-resand.
A3vec-bitxor
Symbolic version of 3vec-bitxor.
A4vec-times
Symbolic version of 4vec-times.
A4vec-syntactic-3vec-p
Try to cheaply, statically determine whether an a4vec always evaluates to a 3vec, i.e., whether it has no Z bits.
A4vec-plus
Symbolic version of 4vec-plus.
A4vec-minus
Symbolic version of 4vec-minus.
A3vec-bitor
Symbolic version of 3vec-bitor.
A3vec-bitand
Symbolic version of 3vec-bitand.
A4vec-===*
A4vec-===
Symbolic version of 4vec-===.
A4vec-<
Symbolic version of 4vec-<.
A4vec-res
Symbolic version of 4vec-res.
Aig-list->s-lower-bound
Computes a constant lower bound for the symbolic value of x.
A3vec-==
Symbolic version of 3vec-==.
A4vec-parity
Symbolic version of 4vec-parity.
4vec->a4vec
Convert a plain 4vec into a symbolic a4vec.
Aig-force-sign-s
A4vec-wildeq-safe-bit
A4vec-onehot0
Symbolic version of 4vec-onehot0.
A4vec-onehot
Symbolic version of 4vec-onehot.
A4vec-countones
Symbolic version of 4vec-countones.
A3vec-reduction-or
Symbolic version of 3vec-reduction-or.
A3vec-reduction-and
Symbolic version of 3vec-reduction-and.
A2vec-p
Construct an AIG that captures: when does an a4vec evaluate to a 2vec-p?
Aig-countones-aux
A4vec-uminus
Symbolic version of 4vec-uminus.
A4vec-clog2
Symbolic version of 4vec-clog2.
A3vec-fix
Symbolic version of 3vec-fix.
Aig-onehot-aux
A4vec-xdet
Symbolic version of 4vec-xdet.
A4vec-onset
Symbolic version of 4vec-onset.
A4vec-offset
Symbolic version of 4vec-offset.
A3vec-bitnot
Symbolic version of 3vec-bitnot.
Aig-iszero-s
Determines whether a signed vector of AIGs is equal to 0.
A4vec-wildeq-bit
A4vec-ite
Lazy macro for if-then-else of symbolic 4vecs.
Aig-sterm-with-hint
A4vec-===*-bit
A4vec-x
(a4vec-x) return an a4vec that evaluates to 4vec-x under every environment.
A4vec-1x
(a4vec-1x) returns an a4vec that evaluates to 4vec-1x under every environment.
A4vec-0
(a4vec-0) return an a4vec that evaluates to 0 under every environment.
And4