split
case inr
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
aig : AIG α
w : Nat
hw : 0 < w
input : aig.RefStream w
newWidth curr : Nat
hcurr✝ : curr ≤ newWidth
s : aig.RefStream curr
idx : Nat
hidx1 : idx < newWidth
hcurr : curr ≤ idx
this : curr < newWidth
heq : curr < idx
⊢ (if h : curr < w then go w hw input newWidth (curr + 1) ⋯ (s.pushRef (input.getRef curr ⋯))
        else go w hw input newWidth (curr + 1) ⋯ (s.pushRef (input.getRef (w - 1) ⋯))).getRef
      idx hidx1 =
    if hidx2 : idx < w then input.getRef idx ⋯ else input.getRef (w - 1) ⋯
case inr.isTrue
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
aig : AIG α
w : Nat
hw : 0 < w
input : aig.RefStream w
newWidth curr : Nat
hcurr✝ : curr ≤ newWidth
s : aig.RefStream curr
idx : Nat
hidx1 : idx < newWidth
hcurr : curr ≤ idx
this : curr < newWidth
heq : curr < idx
h✝ : curr < w
⊢ (go w hw input newWidth (curr + 1) ⋯ (s.pushRef (input.getRef curr ⋯))).getRef idx hidx1 =
    if hidx2 : idx < w then input.getRef idx ⋯ else input.getRef (w - 1) ⋯

case inr.isFalse
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
aig : AIG α
w : Nat
hw : 0 < w
input : aig.RefStream w
newWidth curr : Nat
hcurr✝ : curr ≤ newWidth
s : aig.RefStream curr
idx : Nat
hidx1 : idx < newWidth
hcurr : curr ≤ idx
this : curr < newWidth
heq : curr < idx
h✝ : ¬curr < w
⊢ (go w hw input newWidth (curr + 1) ⋯ (s.pushRef (input.getRef (w - 1) ⋯))).getRef idx hidx1 =
    if hidx2 : idx < w then input.getRef idx ⋯ else input.getRef (w - 1) ⋯