Lemmas About Option Monad Transformer #
This file contains lemmas about the behavior of OptionT
and OptionT.run
.
@[simp]
@[simp]
theorem
OptionT.run_map
{m : Type u_1 → Type u_2}
{α β : Type u_1}
(x : OptionT m α)
(f : α → β)
[Monad m]
[LawfulMonad m]
:
@[simp]
theorem
OptionT.run_mapConst
{m : Type u_1 → Type u_2}
{α β : Type u_1}
[Monad m]
[LawfulMonad m]
(x : OptionT m α)
(y : β)
:
instance
OptionT.instLawfulMonad_batteries
(m : Type u_1 → Type u_2)
[Monad m]
[LawfulMonad m]
:
LawfulMonad (OptionT m)
@[simp]
theorem
OptionT.run_seq
{m : Type u_1 → Type u_2}
{α β : Type u_1}
[Monad m]
[LawfulMonad m]
(f : OptionT m (α → β))
(x : OptionT m α)
:
@[simp]
theorem
OptionT.run_seqLeft
{m : Type u_1 → Type u_2}
{α β : Type u_1}
[Monad m]
[LawfulMonad m]
(x : OptionT m α)
(y : OptionT m β)
:
(x <* y).run = Option.elimM x.run (pure none) fun (x : α) => Option.map (Function.const β x) <$> y.run
@[simp]
theorem
OptionT.run_seqRight
{m : Type u_1 → Type u_2}
{α β : Type u_1}
[Monad m]
[LawfulMonad m]
(x : OptionT m α)
(y : OptionT m β)
: