Documentation

ToMathlib.Control.WriterT

Laws for well behaved monadic failure operation #

@[simp]
theorem WriterT.run_mk {m : Type u → Type v} [Monad m] {α ω : Type u} [LawfulMonad m] (x : m (α × ω)) :
@[simp]
theorem WriterT.run_tell {m : Type u → Type v} [Monad m] {ω : Type u} (w : ω) :
@[simp]
theorem WriterT.run_monadLift {m : Type u → Type v} [Monad m] {ω α : Type u} [Monoid ω] (x : m α) :
(monadLift x).run = (fun (x : α) => (x, 1)) <$> x
theorem WriterT.liftM_def {m : Type u → Type v} [Monad m] {ω α : Type u} [Monoid ω] (x : m α) :
liftM x = WriterT.mk ((fun (x : α) => (x, 1)) <$> x)
theorem WriterT.monadLift_def {m : Type u → Type v} [Monad m] {ω α : Type u} [Monoid ω] (x : m α) :
MonadLift.monadLift x = WriterT.mk ((fun (x : α) => (x, 1)) <$> x)
theorem WriterT.bind_def {m : Type u → Type v} [Monad m] {ω α β : Type u} [Monoid ω] (x : WriterT ω m α) (f : αWriterT ω m β) :
x >>= f = WriterT.mk do let xx.run match x with | (a, w₁) => (Prod.map id fun (x : ω) => w₁ * x) <$> f a
@[simp]
theorem WriterT.run_pure {m : Type u → Type v} [Monad m] {ω α : Type u} [Monoid ω] [LawfulMonad m] (x : α) :
(pure x).run = pure (x, 1)
@[simp]
theorem WriterT.run_bind {m : Type u → Type v} [Monad m] {ω α β : Type u} [Monoid ω] [LawfulMonad m] (x : WriterT ω m α) (f : αWriterT ω m β) :
(x >>= f).run = do let xx.run match x with | (a, w₁) => (Prod.map id fun (x : ω) => w₁ * x) <$> (f a).run
@[simp]
theorem WriterT.run_seqLeft {m : Type u → Type v} [Monad m] {ω : Type u} [Monoid ω] {α β : Type u} (x : WriterT ω m α) (y : WriterT ω m β) :
(x *> y).run = do let zx.run (Prod.map id fun (x : ω) => z.snd * x) <$> y.run
@[simp]
theorem WriterT.run_map {m : Type u → Type v} [Monad m] {ω α β : Type u} [Monoid ω] (x : WriterT ω m α) (f : αβ) :
(f <$> x).run = Prod.map f id <$> x.run
@[inline]
def WriterT.orElse {m : Type u → Type v} [AlternativeMonad m] {ω α : Type u} (x₁ : WriterT ω m α) (x₂ : UnitWriterT ω m α) :
WriterT ω m α
Equations
Instances For
    @[inline]
    def WriterT.failure {m : Type u → Type v} [AlternativeMonad m] {ω α : Type u} :
    WriterT ω m α
    Equations
    Instances For
      @[simp]
      theorem WriterT.run_failure {m : Type u → Type v} [AlternativeMonad m] {ω : Type u} [Monoid ω] {α : Type u} :