intros
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
newWidth : Nat
aig : AIG α
target : AppendTarget aig newWidth
assign : α → Bool
⊢ ∀ (idx : Nat) (hidx : idx < newWidth),
    ⟦{ aig := (blastAppend aig target).aig, ref := (blastAppend aig target).stream.getRef idx hidx }, assign⟧ =
      if hr : idx < target.rw then ⟦{ aig := aig, ref := target.rhs.getRef idx hr }, assign⟧
      else
        let_fun this := ⋯;
        ⟦{ aig := aig, ref := target.lhs.getRef (idx - target.rw) ⋯ }, assign⟧
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
newWidth : Nat
aig : AIG α
target : AppendTarget aig newWidth
assign : α → Bool
idx✝ : Nat
hidx✝ : idx✝ < newWidth
⊢ ⟦{ aig := (blastAppend aig target).aig, ref := (blastAppend aig target).stream.getRef idx✝ hidx✝ }, assign⟧ =
    if hr : idx✝ < target.rw then ⟦{ aig := aig, ref := target.rhs.getRef idx✝ hr }, assign⟧
    else
      let_fun this := ⋯;
      ⟦{ aig := aig, ref := target.lhs.getRef (idx✝ - target.rw) ⋯ }, assign⟧