theorem Std.IterM.step_append {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [Iterator α₁ m β] [Iterator α₂ m β] {it₁ : IterM m β} {it₂ : IterM m β} :
(it₁.append it₂).step = do
let __do_lift ← it₁.step
match __do_lift.inflate with
| ⟨IterStep.yield it₁' out, h⟩ => pure (Shrink.deflate (PlausibleIterStep.yield (it₁'.append it₂) out ⋯))
| ⟨IterStep.skip it₁', h⟩ => pure (Shrink.deflate (PlausibleIterStep.skip (it₁'.append it₂) ⋯))
| ⟨IterStep.done, h⟩ => pure (Shrink.deflate (PlausibleIterStep.skip (Intermediate.appendSnd α₁ it₂) ⋯))
theorem Std.IterM.Intermediate.step_appendSnd {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [Iterator α₁ m β] [Iterator α₂ m β] {it₂ : IterM m β} :
(appendSnd α₁ it₂).step = do
let __do_lift ← it₂.step
match __do_lift.inflate with
| ⟨IterStep.yield it₂' out, h⟩ => pure (Shrink.deflate (PlausibleIterStep.yield (appendSnd α₁ it₂') out ⋯))
| ⟨IterStep.skip it₂', h⟩ => pure (Shrink.deflate (PlausibleIterStep.skip (appendSnd α₁ it₂') ⋯))
| ⟨IterStep.done, h⟩ => pure (Shrink.deflate (PlausibleIterStep.done ⋯))
@[simp]
theorem Std.IterM.toList_appendSnd {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] [Iterators.Finite α₁ m] [Iterators.Finite α₂ m] {it₂ : IterM m β} :
@[simp]
theorem Std.IterM.toList_append {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] [Iterators.Finite α₁ m] [Iterators.Finite α₂ m] {it₁ : IterM m β} {it₂ : IterM m β} :
@[simp]
theorem Std.IterM.toListRev_append {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] [Iterators.Finite α₁ m] [Iterators.Finite α₂ m] {it₁ : IterM m β} {it₂ : IterM m β} :
@[simp]
theorem Std.IterM.toArray_append {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] [Iterators.Finite α₁ m] [Iterators.Finite α₂ m] {it₁ : IterM m β} {it₂ : IterM m β} :