induction n generalizing f init
m : Type u → Type v
inst✝ : Monad m
n : Nat
α : Type u
f : Nat → α → m α
init : α
⊢ foldAllM (f ∘ val) init = Nat.foldM f init n
case zero
m : Type u → Type v
inst✝ : Monad m
α : Type u
f : Nat → α → m α
init : α
⊢ foldAllM (f ∘ val) init = Nat.foldM f init Nat.zero

case succ
m : Type u → Type v
inst✝ : Monad m
α : Type u
n✝ : Nat
n_ih✝ : ∀ {f : Nat → α → m α} {init : α}, foldAllM (f ∘ val) init = Nat.foldM f init n✝
f : Nat → α → m α
init : α
⊢ foldAllM (f ∘ val) init = Nat.foldM f init (Nat.succ n✝)