This module contains the verification of the bitblaster for BitVec.signExtend
from
Impl.Operations.SignExtend
.
theorem
Std.Tactic.BVDecide.BVExpr.bitblast.blastSignExtend_empty_eq_zeroExtend
{α : Type}
[Hashable α]
[DecidableEq α]
{newWidth : Nat}
(aig : Sat.AIG α)
(target : aig.ExtendTarget newWidth)
(htarget : target.w = 0)
:
blastSignExtend aig target = blastZeroExtend aig target
theorem
Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastSignExtend
{α : Type}
[Hashable α]
[DecidableEq α]
{newWidth : Nat}
(aig : Sat.AIG α)
(target : aig.ExtendTarget newWidth)
(assign : α → Bool)
(htarget : 0 < target.w)
(idx : Nat)
(hidx : idx < newWidth)
:
⟦assign, { aig := (blastSignExtend aig target).aig, ref := (blastSignExtend aig target).vec.get idx hidx }⟧ = if hidx : idx < target.w then ⟦assign, { aig := aig, ref := target.vec.get idx hidx }⟧
else ⟦assign, { aig := aig, ref := target.vec.get (target.w - 1) ⋯ }⟧