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) ⋯ }⟧