unfold loop
case inl.refl
α : Type u
β : Type v
γ : Type w
n : Nat
m : Type v → Type w
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → m β
a : α
x : SizedArray α n
b : β
hi₁ : n + 1 ≤ n + 1
hi₂ : n ≤ n
r : SizedArray β n
⊢ loop f (cons a x) (n + 1) hi₁ (cons b r) = do
    let y ← loop f x n hi₂ r
    pure (cons b y)
case inl.refl
α : Type u
β : Type v
γ : Type w
n : Nat
m : Type v → Type w
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → m β
a : α
x : SizedArray α n
b : β
hi₁ : n + 1 ≤ n + 1
hi₂ : n ≤ n
r : SizedArray β n
⊢ (if hlt : n + 1 < n + 1 then do
      let __do_lift ← f (cons a x)[n + 1]
      loop f (cons a x) (n + 1 + 1) hlt (push (cons b r) __do_lift)
    else
      let_fun this := (_ : n + 1 = n + 1);
      pure (this ▸ cons b r)) =
    do
    let y ←
      if hlt : n < n then do
          let __do_lift ← f x[n]
          loop f x (n + 1) hlt (push r __do_lift)
        else
          let_fun this := (_ : n = n);
          pure (this ▸ r)
    pure (cons b y)