Documentation

Std.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap

theorem Std.Iterators.stepAsHetT_filterMapWithPostcondition {m : Type u_1 → Type u_2} {n : Type u_1 → Type u_3} {α β γ : Type u_1} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βPostconditionT n (Option γ)} {it : IterM m β} :
theorem Std.Iterators.IterM.Equiv.filterMapWithPostcondition {α₁ α₂ β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α₁ m β] [Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βPostconditionT n (Option γ)} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.filterWithPostcondition {α₁ α₂ β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α₁ m β] [Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βPostconditionT n (ULift Bool)} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.mapWithPostcondition {α₁ α₂ β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α₁ m β] [Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βPostconditionT n γ} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.filterMapM {α₁ α₂ β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α₁ m β] [Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βn (Option γ)} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.filterM {α₁ α₂ β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α₁ m β] [Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βn (ULift Bool)} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.mapM {α₁ α₂ β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Iterator α₁ m β] [Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : βn γ} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
(IterM.mapM f ita).Equiv (IterM.mapM f itb)
theorem Std.Iterators.IterM.Equiv.filterMap {α₁ α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] {f : βOption γ} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.filter {α₁ α₂ β : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] {f : βBool} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
theorem Std.Iterators.IterM.Equiv.map {α₁ α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Iterator α₁ m β] [Iterator α₂ m β] {f : βγ} {ita : IterM m β} {itb : IterM m β} (h : ita.Equiv itb) :
(IterM.map f ita).Equiv (IterM.map f itb)