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 unary operators on BVExpr.
- not : BVUnOp
Bitwise not.
- rotateLeft
(n : Nat)
: BVUnOp
Rotating left by a constant value.
- rotateRight
(n : Nat)
: BVUnOp
Rotating right by a constant value.
- arithShiftRightConst (n : Nat) : BVUnOp
- reverse : BVUnOp
Reverse the bits in a bitvector.
- clz : BVUnOp
Count leading zeros.
Instances For
All supported expressions involving BitVec and operations on them.
- var
{w : Nat}
(idx : Nat)
: BVExpr w
A
BitVecvariable, referred to through an index. - const
{w : Nat}
(val : BitVec w)
: BVExpr w
A constant
BitVecvalue. - 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
ntimes. - 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.