This module contains the verification of the bitblaster for BitVec.rotateRight
from
Impl.Operations.RotateRight
.
@[simp]
theorem
Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastRotateRight
{α : Type}
[Hashable α]
[DecidableEq α]
{w : Nat}
(aig : Sat.AIG α)
(target : aig.ShiftTarget w)
(assign : α → Bool)
(idx : Nat)
(hidx : idx < w)
:
⟦assign, { aig := (blastRotateRight aig target).aig, ref := (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)) ⋯ }⟧