unfold mapM.loop
α : Type u
β : Type v
γ : Type w
n : Nat
m : Type v → Type w
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → m β
x : SizedArray α n
a : α
⊢ (if hlt : 0 < 0 + 1 then do
      let __do_lift ← f (push empty a)[0]
      mapM.loop f (push empty a) (0 + 1) hlt (push (mkEmpty (0 + 1)) __do_lift)
    else
      let_fun this := (_ : 0 = 0 + 1);
      pure (this ▸ mkEmpty (0 + 1))) =
    do
    let b ← f a
    pure (push empty b)
α : Type u
β : Type v
γ : Type w
n : Nat
m : Type v → Type w
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → m β
x : SizedArray α n
a : α
⊢ (if h : 0 < 0 + 1 then do
      let __do_lift ← f (push empty a)[0]
      if hlt : 0 + 1 < 0 + 1 then do
          let __do_lift_1 ← f (push empty a)[0 + 1]
          mapM.loop f (push empty a) (0 + 1 + 1) hlt (push (push (mkEmpty (0 + 1)) __do_lift) __do_lift_1)
        else
          let_fun this := (_ : 0 + 1 = 0 + 1);
          pure (this ▸ push (mkEmpty (0 + 1)) __do_lift)
    else
      let_fun this := (_ : 0 = 0 + 1);
      pure (this ▸ mkEmpty (0 + 1))) =
    do
    let b ← f a
    pure (push empty b)