rw [dif_pos (Nat.succ_lt_succ hi), dif_pos hi]
case refine_2
α✝ α : Type u
n : Nat
f : Fin (Nat.succ n) → α
i✝ : Nat
acc✝ : Array α
hlt : i✝ < n
i : Nat
hi : i < n
h_ind : ∀ (acc : Array α), ofFn.go f (Nat.succ (Nat.succ i)) acc = ofFn.go (f ∘ Fin.succ) (Nat.succ i) acc
acc : Array α
⊢ (if h : Nat.succ i < Nat.succ n then ofFn.go f (Nat.succ i + 1) (push acc (f { val := Nat.succ i, isLt := h }))
    else acc) =
    if h : i < n then ofFn.go (f ∘ Fin.succ) (i + 1) (push acc ((f ∘ Fin.succ) { val := i, isLt := h })) else acc
case refine_2
α✝ α : Type u
n : Nat
f : Fin (Nat.succ n) → α
i✝ : Nat
acc✝ : Array α
hlt : i✝ < n
i : Nat
hi : i < n
h_ind : ∀ (acc : Array α), ofFn.go f (Nat.succ (Nat.succ i)) acc = ofFn.go (f ∘ Fin.succ) (Nat.succ i) acc
acc : Array α
⊢ ofFn.go f (Nat.succ i + 1) (push acc (f { val := Nat.succ i, isLt := (_ : Nat.succ i < Nat.succ n) })) =
    ofFn.go (f ∘ Fin.succ) (i + 1) (push acc ((f ∘ Fin.succ) { val := i, isLt := hi }))