File: Mathlib/CategoryTheory/Monad/Types.lean

full_name: CategoryTheory.ofTypeMonad
code: /-- A lawful `Control.Monad` gives a category theory `Monad` on the category of types.
-/
@[simps!]
def ofTypeMonad : Monad (Type u) 
goal: CategoryTheory.Monad (Type u)

full_name: CategoryTheory.ofTypeMonad_obj
code: /-- A lawful `Control.Monad` gives a category theory `Monad` on the category of types.
-/
@[simps!]
def ofTypeMonad : Monad (Type u) 
goal: ∀ (a : Type u), (CategoryTheory.ofTypeMonad m).obj a = m a

full_name: CategoryTheory.ofTypeMonad_map
code: /-- A lawful `Control.Monad` gives a category theory `Monad` on the category of types.
-/
@[simps!]
def ofTypeMonad : Monad (Type u) 
goal: ∀ {X Y : Type u} (f : X ⟶ Y) (a : m X), (CategoryTheory.ofTypeMonad m).map f a = f <$> a

full_name: CategoryTheory.ofTypeMonad_μ_app
code: /-- A lawful `Control.Monad` gives a category theory `Monad` on the category of types.
-/
@[simps!]
def ofTypeMonad : Monad (Type u) 
goal: (CategoryTheory.ofTypeMonad m).μ.app α a = joinM a

full_name: CategoryTheory.ofTypeMonad_η_app
code: /-- A lawful `Control.Monad` gives a category theory `Monad` on the category of types.
-/
@[simps!]
def ofTypeMonad : Monad (Type u) 
goal: ∀ (a : α), (CategoryTheory.ofTypeMonad m).η.app α a = pure a

full_name: CategoryTheory.eq_functor_obj
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: (CategoryTheory.eq m).functor.obj X = X

full_name: CategoryTheory.eq_inverse_obj
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: (CategoryTheory.eq m).inverse.obj X = X

full_name: CategoryTheory.eq_unitIso
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: (CategoryTheory.eq m).unitIso = CategoryTheory.NatIso.ofComponents (fun X => CategoryTheory.Iso.refl X) ⋯

full_name: CategoryTheory.eq_counitIso
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: (CategoryTheory.eq m).counitIso = CategoryTheory.NatIso.ofComponents (fun X => CategoryTheory.Iso.refl X) ⋯

full_name: CategoryTheory.eq_inverse_map
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: ∀ {X Y : CategoryTheory.Kleisli (CategoryTheory.ofTypeMonad m)} (f : X ⟶ Y) (a : X),
  (CategoryTheory.eq m).inverse.map f a = f a

full_name: CategoryTheory.eq_functor_map
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: ∀ {X Y : CategoryTheory.KleisliCat m} (f : X ⟶ Y) (a : X), (CategoryTheory.eq m).functor.map f a = f a

full_name: CategoryTheory.eq
code: /-- The `Kleisli` category of a `Control.Monad` is equivalent to the `Kleisli` category of its
category-theoretic version, provided the monad is lawful.
-/
@[simps]
def eq : KleisliCat m ≌ Kleisli (ofTypeMonad m) 
goal: CategoryTheory.KleisliCat m ≌ CategoryTheory.Kleisli (CategoryTheory.ofTypeMonad m)