simp only [this, ↓reduceDite] at hg
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
newWidth : Nat
aig : AIG α
target : aig.ExtendTarget newWidth
assign : α → Bool
htarget : 0 < target.w
idx : Nat
hidx : idx < newWidth
res : RefStreamEntry α newWidth
hg :
  (if hw : target.w = 0 then blastZeroExtend aig { w := target.w, stream := target.stream }
    else { aig := aig, stream := blastSignExtend.go target.w ⋯ target.stream newWidth 0 ⋯ RefStream.empty }) =
    res
this : ¬target.w = 0
⊢ ⟦{ aig := res.aig, ref := res.stream.getRef idx hidx }, assign⟧ =
    if hidx : idx < target.w then ⟦{ aig := aig, ref := target.stream.getRef idx hidx }, assign⟧
    else ⟦{ aig := aig, ref := target.stream.getRef (target.w - 1) ⋯ }, assign⟧
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
newWidth : Nat
aig : AIG α
target : aig.ExtendTarget newWidth
assign : α → Bool
htarget : 0 < target.w
idx : Nat
hidx : idx < newWidth
res : RefStreamEntry α newWidth
this : ¬target.w = 0
hg : { aig := aig, stream := blastSignExtend.go target.w ⋯ target.stream newWidth 0 ⋯ RefStream.empty } = res
⊢ ⟦{ aig := res.aig, ref := res.stream.getRef idx hidx }, assign⟧ =
    if hidx : idx < target.w then ⟦{ aig := aig, ref := target.stream.getRef idx hidx }, assign⟧
    else ⟦{ aig := aig, ref := target.stream.getRef (target.w - 1) ⋯ }, assign⟧