simp only [mapM_cons f, bind_assoc]
α : Type u
m : Type v → Type w
inst✝¹ : Monad m
β : Type v
inst✝ : LawfulMonad m
f : α → m β
x✝ : Array α
a✝ a : α
x : Array α
IH :
  mapM f (push x a✝) = do
    let y ← mapM f x
    let b ← f a✝
    pure (push y b)
⊢ mapM f (cons a (push x a✝)) = do
    let y ← mapM f (cons a x)
    let b ← f a✝
    pure (push y b)
α : Type u
m : Type v → Type w
inst✝¹ : Monad m
β : Type v
inst✝ : LawfulMonad m
f : α → m β
x✝ : Array α
a✝ a : α
x : Array α
IH :
  mapM f (push x a✝) = do
    let y ← mapM f x
    let b ← f a✝
    pure (push y b)
⊢ (do
      let b ← f a
      let y ← mapM f (push x a✝)
      pure (cons b y)) =
    do
    let x_1 ← f a
    let x ← mapM f x
    let y ← pure (cons x_1 x)
    let b ← f a✝
    pure (push y b)