This module contains the definition of the BitVec
fragment that bv_decide
internally operates
on as BVLogicalExpr
. The preprocessing steps of bv_decide
reduce all supported BitVec
operations to the ones provided in this file. For verification purposes BVLogicalExpr.Sat
and
BVLogicalExpr.Unsat
are provided.
All supported expressions involving BitVec
and operations on them.
- var
{w : Nat}
(idx : Nat)
: BVExpr w
A
BitVec
variable, referred to through an index. - const
{w : Nat}
(val : BitVec w)
: BVExpr w
A constant
BitVec
value. - extract
{w : Nat}
(start len : Nat)
(expr : BVExpr w)
: BVExpr len
Extract a slice from a
BitVec
. - bin
{w : Nat}
(lhs : BVExpr w)
(op : BVBinOp)
(rhs : BVExpr w)
: BVExpr w
A binary operation on two
BVExpr
. - un
{w : Nat}
(op : BVUnOp)
(operand : BVExpr w)
: BVExpr w
A unary operation on two
BVExpr
. - append
{l r w : Nat}
(lhs : BVExpr l)
(rhs : BVExpr r)
(h : w = l + r)
: BVExpr w
Concatenate two bitvectors.
- replicate
{w w' : Nat}
(n : Nat)
(expr : BVExpr w)
(h : w' = w * n)
: BVExpr w'
Concatenate a bitvector with itself
n
times. - shiftLeft
{m n : Nat}
(lhs : BVExpr m)
(rhs : BVExpr n)
: BVExpr m
shift left by another BitVec expression. For constant shifts there exists a
BVUnop
. - shiftRight
{m n : Nat}
(lhs : BVExpr m)
(rhs : BVExpr n)
: BVExpr m
shift right by another BitVec expression. For constant shifts there exists a
BVUnop
. - arithShiftRight
{m n : Nat}
(lhs : BVExpr m)
(rhs : BVExpr n)
: BVExpr m
shift right arithmetically by another BitVec expression. For constant shifts there exists a
BVUnop
.
Instances For
Equations
Instances For
Boolean substructure of problems involving predicates on BitVec as atoms.
Equations
Instances For
The semantics of boolean problems involving BitVec predicates as atoms.