apply bind_congr
case cons
α : Type u
β : Type v
n : Nat
m : Type v → Type w
inst✝ : Monad m
f : β → α → m β
n✝ : Nat
a : α
x : SizedArray α n✝
IH : ∀ (init : β), List.foldlM f init x.val.data = foldlMIdx (fun x => f) init x
init : β
⊢ (do
      let s' ← f init a
      List.foldlM f s' x.val.data) =
    do
    let b ← f init a
    foldlMIdx (fun i b => f b) b x
case cons.h
α : Type u
β : Type v
n : Nat
m : Type v → Type w
inst✝ : Monad m
f : β → α → m β
n✝ : Nat
a : α
x : SizedArray α n✝
IH : ∀ (init : β), List.foldlM f init x.val.data = foldlMIdx (fun x => f) init x
init : β
⊢ ∀ (a : β), List.foldlM f a x.val.data = foldlMIdx (fun i b => f b) a x