Documentation

Std.Tactic.BVDecide.Bitblast.BVExpr.Circuit.Lemmas.Operations.RotateRight

This module contains the verification of the bitblaster for BitVec.rotateRight from Impl.Operations.RotateRight.

@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastRotateRight.go_get_aux {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (distance : Nat) (input : aig.RefVec w) (curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastRotateRight.go input distance curr hcurr s).get idx = s.get idx hidx
@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastRotateRight.go_get {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (distance : Nat) (input : aig.RefVec w) (curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx1 : idx < w) :
curr idx(Std.Tactic.BVDecide.BVExpr.bitblast.blastRotateRight.go input distance curr hcurr s).get idx hidx1 = if hidx3 : idx < w - distance % w then input.get (distance % w + idx) else input.get (idx - (w - distance % w))
@[simp]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastRotateRight {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (target : aig.ShiftTarget w) (assign : αBool) (idx : Nat) (hidx : idx < w) :
assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastRotateRight aig target).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.blastRotateRight aig target).vec.get idx hidx } = if hidx2 : idx < w - target.distance % w then assign, { aig := aig, ref := target.vec.get (target.distance % w + idx) } else assign, { aig := aig, ref := target.vec.get (idx - (w - target.distance % w)) }