File: Mathlib/CategoryTheory/Category/Factorisation.lean

full_name: CategoryTheory.Factorisation
code: /-- Factorisations of a morphism `f` as a structure, containing, one object, two morphisms,
and the condition that their composition equals `f`. -/
structure Factorisation {X Y : C} (f : X ⟶ Y) where
  /-- The midpoint of the factorisation. -/
  mid : C
  /-- The morphism into the factorisation midpoint. -/
  ι   : X ⟶ mid
  /-- The morphism out of the factorisation midpoint. -/
  π   : mid ⟶ Y
  /-- The factorisation condition. -/
  ι_π : ι ≫ π = f := by aesop_cat
goal: Type (max u v)

full_name: CategoryTheory.Factorisation.ι_π
code: /-- Factorisations of a morphism `f` as a structure, containing, one object, two morphisms,
and the condition that their composition equals `f`. -/
structure Factorisation {X Y : C} (f : X ⟶ Y) where
  /-- The midpoint of the factorisation. -/
  mid : C
  /-- The morphism into the factorisation midpoint. -/
  ι   : X ⟶ mid
  /-- The morphism out of the factorisation midpoint. -/
  π   : mid ⟶ Y
  /-- The factorisation condition. -/
  ι_π : ι ≫ π = f := by aesop_cat
goal: CategoryTheory.CategoryStruct.comp self.ι self.π = f

full_name: CategoryTheory.Factorisation.mid
code: /-- Factorisations of a morphism `f` as a structure, containing, one object, two morphisms,
and the condition that their composition equals `f`. -/
structure Factorisation {X Y : C} (f : X ⟶ Y) where
  /-- The midpoint of the factorisation. -/
  mid : C
  /-- The morphism into the factorisation midpoint. -/
  ι   : X ⟶ mid
  /-- The morphism out of the factorisation midpoint. -/
  π   : mid ⟶ Y
  /-- The factorisation condition. -/
  ι_π : ι ≫ π = f := by aesop_cat
goal: C

full_name: CategoryTheory.Factorisation.π
code: /-- Factorisations of a morphism `f` as a structure, containing, one object, two morphisms,
and the condition that their composition equals `f`. -/
structure Factorisation {X Y : C} (f : X ⟶ Y) where
  /-- The midpoint of the factorisation. -/
  mid : C
  /-- The morphism into the factorisation midpoint. -/
  ι   : X ⟶ mid
  /-- The morphism out of the factorisation midpoint. -/
  π   : mid ⟶ Y
  /-- The factorisation condition. -/
  ι_π : ι ≫ π = f := by aesop_cat
goal: self.mid ⟶ Y

full_name: CategoryTheory.Factorisation.ι
code: /-- Factorisations of a morphism `f` as a structure, containing, one object, two morphisms,
and the condition that their composition equals `f`. -/
structure Factorisation {X Y : C} (f : X ⟶ Y) where
  /-- The midpoint of the factorisation. -/
  mid : C
  /-- The morphism into the factorisation midpoint. -/
  ι   : X ⟶ mid
  /-- The morphism out of the factorisation midpoint. -/
  π   : mid ⟶ Y
  /-- The factorisation condition. -/
  ι_π : ι ≫ π = f := by aesop_cat
goal: X ⟶ self.mid

full_name: CategoryTheory.Factorisation.Hom.ι_h
code: /-- Morphisms of `Factorisation f` consist of morphism between their midpoints and the obvious
commutativity conditions. -/
@[ext]
protected structure Hom (d e : Factorisation f) : Type (max u v) where
  /-- The morphism between the midpoints of the factorizations. -/
  h : d.mid ⟶ e.mid
  /-- The left commuting triangle of the factorization morphism. -/
  ι_h : d.ι ≫ h = e.ι := by aesop_cat
  /-- The right commuting triangle of the factorization morphism. -/
  h_π : h ≫ e.π = d.π := by aesop_cat
goal: CategoryTheory.CategoryStruct.comp d.ι self.h = e.ι

full_name: CategoryTheory.Factorisation.Hom.h_π
code: /-- Morphisms of `Factorisation f` consist of morphism between their midpoints and the obvious
commutativity conditions. -/
@[ext]
protected structure Hom (d e : Factorisation f) : Type (max u v) where
  /-- The morphism between the midpoints of the factorizations. -/
  h : d.mid ⟶ e.mid
  /-- The left commuting triangle of the factorization morphism. -/
  ι_h : d.ι ≫ h = e.ι := by aesop_cat
  /-- The right commuting triangle of the factorization morphism. -/
  h_π : h ≫ e.π = d.π := by aesop_cat
goal: CategoryTheory.CategoryStruct.comp self.h e.π = d.π

full_name: CategoryTheory.Factorisation.Hom.h
code: /-- Morphisms of `Factorisation f` consist of morphism between their midpoints and the obvious
commutativity conditions. -/
@[ext]
protected structure Hom (d e : Factorisation f) : Type (max u v) where
  /-- The morphism between the midpoints of the factorizations. -/
  h : d.mid ⟶ e.mid
  /-- The left commuting triangle of the factorization morphism. -/
  ι_h : d.ι ≫ h = e.ι := by aesop_cat
  /-- The right commuting triangle of the factorization morphism. -/
  h_π : h ≫ e.π = d.π := by aesop_cat
goal: d.mid ⟶ e.mid

full_name: CategoryTheory.Factorisation.Hom
code: /-- Morphisms of `Factorisation f` consist of morphism between their midpoints and the obvious
commutativity conditions. -/
@[ext]
protected structure Hom (d e : Factorisation f) : Type (max u v) where
  /-- The morphism between the midpoints of the factorizations. -/
  h : d.mid ⟶ e.mid
  /-- The left commuting triangle of the factorization morphism. -/
  ι_h : d.ι ≫ h = e.ι := by aesop_cat
  /-- The right commuting triangle of the factorization morphism. -/
  h_π : h ≫ e.π = d.π := by aesop_cat
goal: Type (max u v)

full_name: CategoryTheory.Factorisation.Hom.id_h
code: /-- The identity morphism of `Factorisation f`. -/
@[simps]
protected def Hom.id (d : Factorisation f) : Factorisation.Hom d d 
goal: (CategoryTheory.Factorisation.Hom.id d).h = CategoryTheory.CategoryStruct.id d.mid

full_name: CategoryTheory.Factorisation.Hom.id
code: /-- The identity morphism of `Factorisation f`. -/
@[simps]
protected def Hom.id (d : Factorisation f) : Factorisation.Hom d d 
goal: d.Hom d

full_name: CategoryTheory.Factorisation.Hom.comp
code: /-- Composition of morphisms in `Factorisation f`. -/
@[simps]
protected def Hom.comp {d₁ d₂ d₃ : Factorisation f}
    (f : Factorisation.Hom d₁ d₂) (g : Factorisation.Hom d₂ d₃) : Factorisation.Hom d₁ d₃ 
goal: d₁.Hom d₂ → d₂.Hom d₃ → d₁.Hom d₃

full_name: CategoryTheory.Factorisation.Hom.comp_h
code: /-- Composition of morphisms in `Factorisation f`. -/
@[simps]
protected def Hom.comp {d₁ d₂ d₃ : Factorisation f}
    (f : Factorisation.Hom d₁ d₂) (g : Factorisation.Hom d₂ d₃) : Factorisation.Hom d₁ d₃ 
goal: ∀ (f_1 : d₁.Hom d₂) (g : d₂.Hom d₃), (f_1.comp g).h = CategoryTheory.CategoryStruct.comp f_1.h g.h

full_name: CategoryTheory.Factorisation.instCategory
code: instance : Category.{max u v} (Factorisation f) 
goal: CategoryTheory.Category.{max u v, max u v} (CategoryTheory.Factorisation f)

full_name: CategoryTheory.Factorisation.initial
code: /-- The initial object in `Factorisation f`, with the domain of `f` as its midpoint. -/
@[simps]
protected def initial : Factorisation f 
goal: CategoryTheory.Factorisation f

full_name: CategoryTheory.Factorisation.initial_ι
code: /-- The initial object in `Factorisation f`, with the domain of `f` as its midpoint. -/
@[simps]
protected def initial : Factorisation f 
goal: CategoryTheory.Factorisation.initial.ι = CategoryTheory.CategoryStruct.id X

full_name: CategoryTheory.Factorisation.initial_π
code: /-- The initial object in `Factorisation f`, with the domain of `f` as its midpoint. -/
@[simps]
protected def initial : Factorisation f 
goal: CategoryTheory.Factorisation.initial.π = f

full_name: CategoryTheory.Factorisation.initial_mid
code: /-- The initial object in `Factorisation f`, with the domain of `f` as its midpoint. -/
@[simps]
protected def initial : Factorisation f 
goal: CategoryTheory.Factorisation.initial.mid = X

full_name: CategoryTheory.Factorisation.initialHom
code: /-- The unique morphism out of `Factorisation.initial f`. -/
@[simps]
protected def initialHom (d : Factorisation f) :
    Factorisation.Hom (Factorisation.initial : Factorisation f) d 
goal: CategoryTheory.Factorisation.initial.Hom d

full_name: CategoryTheory.Factorisation.initialHom_h
code: /-- The unique morphism out of `Factorisation.initial f`. -/
@[simps]
protected def initialHom (d : Factorisation f) :
    Factorisation.Hom (Factorisation.initial : Factorisation f) d 
goal: d.initialHom.h = d.ι

full_name: CategoryTheory.Factorisation.instUniqueHomInitial
code: instance : Unique ((Factorisation.initial : Factorisation f) ⟶ d) 
goal: Unique (CategoryTheory.Factorisation.initial ⟶ d)

full_name: CategoryTheory.Factorisation.terminal_mid
code: /-- The terminal object in `Factorisation f`, with the codomain of `f` as its midpoint. -/
@[simps]
protected def terminal : Factorisation f 
goal: CategoryTheory.Factorisation.terminal.mid = Y

full_name: CategoryTheory.Factorisation.terminal
code: /-- The terminal object in `Factorisation f`, with the codomain of `f` as its midpoint. -/
@[simps]
protected def terminal : Factorisation f 
goal: CategoryTheory.Factorisation f

full_name: CategoryTheory.Factorisation.terminal_ι
code: /-- The terminal object in `Factorisation f`, with the codomain of `f` as its midpoint. -/
@[simps]
protected def terminal : Factorisation f 
goal: CategoryTheory.Factorisation.terminal.ι = f

full_name: CategoryTheory.Factorisation.terminal_π
code: /-- The terminal object in `Factorisation f`, with the codomain of `f` as its midpoint. -/
@[simps]
protected def terminal : Factorisation f 
goal: CategoryTheory.Factorisation.terminal.π = CategoryTheory.CategoryStruct.id Y

full_name: CategoryTheory.Factorisation.terminalHom
code: /-- The unique morphism into `Factorisation.terminal f`. -/
@[simps]
protected def terminalHom (d : Factorisation f) :
    Factorisation.Hom d (Factorisation.terminal : Factorisation f) 
goal: d.Hom CategoryTheory.Factorisation.terminal

full_name: CategoryTheory.Factorisation.terminalHom_h
code: /-- The unique morphism into `Factorisation.terminal f`. -/
@[simps]
protected def terminalHom (d : Factorisation f) :
    Factorisation.Hom d (Factorisation.terminal : Factorisation f) 
goal: d.terminalHom.h = d.π

full_name: CategoryTheory.Factorisation.instUniqueHomTerminal
code: instance : Unique (d ⟶ (Factorisation.terminal : Factorisation f)) 
goal: Unique (d ⟶ CategoryTheory.Factorisation.terminal)

full_name: CategoryTheory.Factorisation.IsInitial_initial
code: /-- The initial factorisation is an initial object -/
def IsInitial_initial : IsInitial (Factorisation.initial : Factorisation f) 
goal: CategoryTheory.Limits.IsInitial CategoryTheory.Factorisation.initial

full_name: CategoryTheory.Factorisation.instHasInitial
code: instance : HasInitial (Factorisation f) 
goal: CategoryTheory.Limits.HasInitial (CategoryTheory.Factorisation f)

full_name: CategoryTheory.Factorisation.IsTerminal_terminal
code: /-- The terminal factorisation is a terminal object -/
def IsTerminal_terminal : IsTerminal (Factorisation.terminal : Factorisation f) 
goal: CategoryTheory.Limits.IsTerminal CategoryTheory.Factorisation.terminal

full_name: CategoryTheory.Factorisation.instHasTerminal
code: instance : HasTerminal (Factorisation f) 
goal: CategoryTheory.Limits.HasTerminal (CategoryTheory.Factorisation f)

full_name: CategoryTheory.Factorisation.forget
code: /-- The forgetful functor from `Factorisation f` to the underlying category `C`. -/
@[simps]
def forget : Factorisation f ⥤ C 
goal: CategoryTheory.Functor (CategoryTheory.Factorisation f) C

full_name: CategoryTheory.Factorisation.forget_map
code: /-- The forgetful functor from `Factorisation f` to the underlying category `C`. -/
@[simps]
def forget : Factorisation f ⥤ C 
goal: ∀ {X_1 Y_1 : CategoryTheory.Factorisation f} (f_1 : X_1 ⟶ Y_1), CategoryTheory.Factorisation.forget.map f_1 = f_1.h

full_name: CategoryTheory.Factorisation.forget_obj
code: /-- The forgetful functor from `Factorisation f` to the underlying category `C`. -/
@[simps]
def forget : Factorisation f ⥤ C 
goal: CategoryTheory.Factorisation.forget.obj self = self.mid