This module contains the implementation of a bitblaster for BitVec.shiftRight.
It distinguishes two cases:
- Shifting by a constant distance (trivial)
- Shifting by a symbolic
BitVecdistance (requires symbolic branches over the distance).
def Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRightConst {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (target : aig.ShiftTarget w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRightConst.go {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (input : aig.RefVec w) (distance curr : Nat) (hcurr : curr ≤ w) (s : aig.RefVec curr) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRightConst.go_decl_eq {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (distance : Nat) (input : aig.RefVec w) (curr : Nat) (hcurr : curr ≤ w) (s : aig.RefVec curr) (idx : Nat) (h1 : idx < aig.decls.size) (h2 : idx < (go aig input distance curr hcurr s).aig.decls.size) :
instance Std.Tactic.BVDecide.BVExpr.bitblast.instLawfulVecOperatorShiftTargetBlastShiftRightConst {α : Type} [Hashable α] [DecidableEq α] :
Sat.AIG.LawfulVecOperator α Sat.AIG.ShiftTarget fun {len : Nat} => blastShiftRightConst
def Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRightConst {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (target : aig.ShiftTarget w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRightConst.go {α : Type} [Hashable α] [DecidableEq α] {w : Nat} {aig : Sat.AIG α} (input : aig.RefVec w) (distance curr : Nat) (hcurr : curr ≤ w) (s : aig.RefVec curr) :
aig.RefVec w
Equations
- One or more equations did not get rendered due to their size.
Instances For
def Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRight.twoPowShift {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (target : TwoPowShiftTarget aig w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRight.instLawfulVecOperatorTwoPowShiftTargetTwoPowShift {α : Type} [Hashable α] [DecidableEq α] :
Sat.AIG.LawfulVecOperator α TwoPowShiftTarget fun {len : Nat} => twoPowShift
def Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRight {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (target : aig.ArbitraryShiftTarget w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def Std.Tactic.BVDecide.BVExpr.bitblast.blastShiftRight.go {α : Type} [Hashable α] [DecidableEq α] {w n : Nat} (aig : Sat.AIG α) (distance : aig.RefVec n) (curr : Nat) (acc : aig.RefVec w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Std.Tactic.BVDecide.BVExpr.bitblast.instLawfulVecOperatorArbitraryShiftTargetBlastShiftRight {α : Type} [Hashable α] [DecidableEq α] :
Sat.AIG.LawfulVecOperator α Sat.AIG.ArbitraryShiftTarget fun {len : Nat} => blastShiftRight
def Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRight.twoPowShift {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (target : TwoPowShiftTarget aig w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRight.instLawfulVecOperatorTwoPowShiftTargetTwoPowShift {α : Type} [Hashable α] [DecidableEq α] :
Sat.AIG.LawfulVecOperator α TwoPowShiftTarget fun {len : Nat} => twoPowShift
def Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRight {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Sat.AIG α) (target : aig.ArbitraryShiftTarget w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[irreducible]
def Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRight.go {α : Type} [Hashable α] [DecidableEq α] {w n : Nat} (aig : Sat.AIG α) (distance : aig.RefVec n) (curr : Nat) (acc : aig.RefVec w) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastArithShiftRight.go_decl_eq {α : Type} [Hashable α] [DecidableEq α] {n w : Nat} (aig : Sat.AIG α) (distance : aig.RefVec n) (curr : Nat) (acc : aig.RefVec w) (idx : Nat) (h1 : idx < aig.decls.size) (h2 : idx < (go aig distance curr acc).aig.decls.size) :