File: Mathlib/CategoryTheory/Monad/Coequalizer.lean

full_name: CategoryTheory.Monad.FreeCoequalizer.topMap
code: /-- The top map in the coequalizer diagram we will construct. -/
@[simps!]
def FreeCoequalizer.topMap : (Monad.free T).obj (T.obj X.A) ⟶ (Monad.free T).obj X.A 
goal: T.free.obj (T.obj X.A) ⟶ T.free.obj X.A

full_name: CategoryTheory.Monad.FreeCoequalizer.topMap_f
code: /-- The top map in the coequalizer diagram we will construct. -/
@[simps!]
def FreeCoequalizer.topMap : (Monad.free T).obj (T.obj X.A) ⟶ (Monad.free T).obj X.A 
goal: (CategoryTheory.Monad.FreeCoequalizer.topMap X).f = T.map X.a

full_name: CategoryTheory.Monad.FreeCoequalizer.bottomMap_f
code: /-- The bottom map in the coequalizer diagram we will construct. -/
@[simps]
def FreeCoequalizer.bottomMap : (Monad.free T).obj (T.obj X.A) ⟶ (Monad.free T).obj X.A 
goal: (CategoryTheory.Monad.FreeCoequalizer.bottomMap X).f = T.μ.app X.A

full_name: CategoryTheory.Monad.FreeCoequalizer.bottomMap
code: /-- The bottom map in the coequalizer diagram we will construct. -/
@[simps]
def FreeCoequalizer.bottomMap : (Monad.free T).obj (T.obj X.A) ⟶ (Monad.free T).obj X.A 
goal: T.free.obj (T.obj X.A) ⟶ T.free.obj X.A

full_name: CategoryTheory.Monad.FreeCoequalizer.π_f
code: /-- The cofork map in the coequalizer diagram we will construct. -/
@[simps]
def FreeCoequalizer.π : (Monad.free T).obj X.A ⟶ X 
goal: (CategoryTheory.Monad.FreeCoequalizer.π X).f = X.a

full_name: CategoryTheory.Monad.FreeCoequalizer.π
code: /-- The cofork map in the coequalizer diagram we will construct. -/
@[simps]
def FreeCoequalizer.π : (Monad.free T).obj X.A ⟶ X 
goal: T.free.obj X.A ⟶ X

full_name: CategoryTheory.Monad.FreeCoequalizer.condition
code: theorem FreeCoequalizer.condition :
    FreeCoequalizer.topMap X ≫ FreeCoequalizer.π X =
      FreeCoequalizer.bottomMap X ≫ FreeCoequalizer.π X 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.Monad.FreeCoequalizer.topMap X)
    (CategoryTheory.Monad.FreeCoequalizer.π X) =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.Monad.FreeCoequalizer.bottomMap X)
    (CategoryTheory.Monad.FreeCoequalizer.π X)

full_name: CategoryTheory.Monad.instIsReflexivePairAlgebraTopMapBottomMap
code: instance : IsReflexivePair (FreeCoequalizer.topMap X) (FreeCoequalizer.bottomMap X) 
goal: CategoryTheory.IsReflexivePair (CategoryTheory.Monad.FreeCoequalizer.topMap X)
  (CategoryTheory.Monad.FreeCoequalizer.bottomMap X)

full_name: CategoryTheory.Monad.beckAlgebraCofork
code: /-- Construct the Beck cofork in the category of algebras. This cofork is reflexive as well as a
coequalizer.
-/
@[simps!]
def beckAlgebraCofork : Cofork (FreeCoequalizer.topMap X) (FreeCoequalizer.bottomMap X) 
goal: CategoryTheory.Limits.Cofork (CategoryTheory.Monad.FreeCoequalizer.topMap X)
  (CategoryTheory.Monad.FreeCoequalizer.bottomMap X)

full_name: CategoryTheory.Monad.beckAlgebraCofork_ι_app
code: /-- Construct the Beck cofork in the category of algebras. This cofork is reflexive as well as a
coequalizer.
-/
@[simps!]
def beckAlgebraCofork : Cofork (FreeCoequalizer.topMap X) (FreeCoequalizer.bottomMap X) 
goal: ∀ (X_1 : CategoryTheory.Limits.WalkingParallelPair),
  (CategoryTheory.Monad.beckAlgebraCofork X).ι.app X_1 =
    CategoryTheory.Limits.WalkingParallelPair.rec
      (CategoryTheory.CategoryStruct.comp (CategoryTheory.Monad.FreeCoequalizer.topMap X)
        (CategoryTheory.Monad.FreeCoequalizer.π X))
      (CategoryTheory.Monad.FreeCoequalizer.π X) X_1

full_name: CategoryTheory.Monad.beckAlgebraCofork_pt
code: /-- Construct the Beck cofork in the category of algebras. This cofork is reflexive as well as a
coequalizer.
-/
@[simps!]
def beckAlgebraCofork : Cofork (FreeCoequalizer.topMap X) (FreeCoequalizer.bottomMap X) 
goal: (CategoryTheory.Monad.beckAlgebraCofork X).pt = X

full_name: CategoryTheory.Monad.beckAlgebraCoequalizer
code: /-- The cofork constructed is a colimit. This shows that any algebra is a (reflexive) coequalizer of
free algebras.
-/
def beckAlgebraCoequalizer : IsColimit (beckAlgebraCofork X) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Monad.beckAlgebraCofork X)

full_name: CategoryTheory.Monad.beckSplitCoequalizer
code: /-- The Beck cofork is a split coequalizer. -/
def beckSplitCoequalizer : IsSplitCoequalizer (T.map X.a) (T.μ.app _) X.a 
goal: CategoryTheory.IsSplitCoequalizer (T.map X.a) (T.μ.app X.A) X.a

full_name: CategoryTheory.Monad.beckCofork
code: /-- This is the Beck cofork. It is a split coequalizer, in particular a coequalizer. -/
@[simps! pt]
def beckCofork : Cofork (T.map X.a) (T.μ.app _) 
goal: CategoryTheory.Limits.Cofork (T.map X.a) (T.μ.app X.A)

full_name: CategoryTheory.Monad.beckCofork_pt
code: /-- This is the Beck cofork. It is a split coequalizer, in particular a coequalizer. -/
@[simps! pt]
def beckCofork : Cofork (T.map X.a) (T.μ.app _) 
goal: (CategoryTheory.Monad.beckCofork X).pt = X.A

full_name: CategoryTheory.Monad.beckCofork_π
code: @[simp]
theorem beckCofork_π : (beckCofork X).π = X.a 
goal: (CategoryTheory.Monad.beckCofork X).π = X.a

full_name: CategoryTheory.Monad.beckCoequalizer
code: /-- The Beck cofork is a coequalizer. -/
def beckCoequalizer : IsColimit (beckCofork X) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Monad.beckCofork X)

full_name: CategoryTheory.Monad.beckCoequalizer_desc
code: @[simp]
theorem beckCoequalizer_desc (s : Cofork (T.toFunctor.map X.a) (T.μ.app X.A)) :
    (beckCoequalizer X).desc s = T.η.app _ ≫ s.π 
goal: (CategoryTheory.Monad.beckCoequalizer X).desc s = CategoryTheory.CategoryStruct.comp (T.η.app X.A) s.π