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.
Instances For
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
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
Instances For
Get the value of a BVExpr.var from an Assignment.
Instances For
The semantics for BVExpr.
Instances For
The semantics for BVPred.
Instances For
Boolean substructure of problems involving predicates on BitVec as atoms.
Instances For
The semantics of boolean problems involving BitVec predicates as atoms.