Lemmas about list iterators #
This module provides lemmas about the interactions of List.iterM with IterM.step and various
collectors.
theorem List.step_iterM {m : Type w → Type w'} [Monad m] {β : Type w} {l : List β} :
(l.iterM m).step = match l with
| [] => pure (Std.Shrink.deflate ⟨Std.IterStep.done, ⋯⟩)
| x :: xs => pure (Std.Shrink.deflate ⟨Std.IterStep.yield (xs.iterM m) x, ⋯⟩)