Module docstring
{"# Monadic instances for ULift and PLift
In this file we define Monad and IsLawfulMonad instances on PLift and ULift. "}
{"# Monadic instances for ULift and PLift
In this file we define Monad and IsLawfulMonad instances on PLift and ULift. "}
PLift.map
definition
(f : α → β) (a : PLift α) : PLift β
PLift.map_up
theorem
(f : α → β) (a : α) : (PLift.up a).map f = PLift.up (f a)
PLift.pure
definition
: α → PLift α
PLift.seq
definition
(f : PLift (α → β)) (x : Unit → PLift α) : PLift β
PLift.seq_up
theorem
(f : α → β) (x : α) : (PLift.up f).seq (fun _ => PLift.up x) = PLift.up (f x)
PLift.bind
definition
(a : PLift α) (f : α → PLift β) : PLift β
PLift.bind_up
theorem
(a : α) (f : α → PLift β) : (PLift.up a).bind f = f a
PLift.instMonad_mathlib
instance
: Monad PLift
instance : Monad PLift where
map := @PLift.map
pure := @PLift.pure
seq := @PLift.seq
bind := @PLift.bind
PLift.instLawfulFunctor_mathlib
instance
: LawfulFunctor PLift
PLift.instLawfulApplicative_mathlib
instance
: LawfulApplicative PLift
PLift.instLawfulMonad_mathlib
instance
: LawfulMonad PLift
PLift.rec.constant
theorem
{α : Sort u} {β : Type v} (b : β) : (@PLift.rec α (fun _ => β) fun _ => b) = fun _ => b
@[simp]
theorem rec.constant {α : Sort u} {β : Type v} (b : β) :
(@PLift.rec α (fun _ => β) fun _ => b) = fun _ => b := rfl
ULift.map
definition
(f : α → β) (a : ULift.{u'} α) : ULift.{v'} β
ULift.map_up
theorem
(f : α → β) (a : α) : (ULift.up.{u'} a).map f = ULift.up.{v'} (f a)
ULift.pure
definition
: α → ULift α
ULift.seq
definition
{α β} (f : ULift (α → β)) (x : Unit → ULift α) : ULift β
ULift.seq_up
theorem
(f : α → β) (x : α) : (ULift.up f).seq (fun _ => ULift.up x) = ULift.up (f x)
ULift.bind
definition
(a : ULift α) (f : α → ULift β) : ULift β
ULift.bind_up
theorem
(a : α) (f : α → ULift β) : (ULift.up a).bind f = f a
ULift.instMonad_mathlib
instance
: Monad ULift
instance : Monad ULift where
map := @ULift.map
pure := @ULift.pure
seq := @ULift.seq
bind := @ULift.bind
ULift.instLawfulFunctor_mathlib
instance
: LawfulFunctor ULift
ULift.instLawfulApplicative_mathlib
instance
: LawfulApplicative ULift
ULift.instLawfulMonad_mathlib
instance
: LawfulMonad ULift
ULift.rec.constant
theorem
{α : Type u} {β : Sort v} (b : β) : (@ULift.rec α (fun _ => β) fun _ => b) = fun _ => b
@[simp]
theorem rec.constant {α : Type u} {β : Sort v} (b : β) :
(@ULift.rec α (fun _ => β) fun _ => b) = fun _ => b := rfl