# Documentation

Mathlib.CategoryTheory.Subobject.FactorThru

# Factoring through subobjects #

The predicate h : P.Factors f, for P : Subobject Y and f : X ⟶ Y asserts the existence of some P.factorThru f : X ⟶ (P : C) making the obvious diagram commute.

def CategoryTheory.MonoOver.Factors {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) :

When f : X ⟶ Y and P : MonoOver Y, P.Factors f expresses that there exists a factorisation of f through P. Given h : P.Factors f, you can recover the morphism as P.factorThru f h.

Instances For
theorem CategoryTheory.MonoOver.factors_congr {C : Type u₁} [] {X : C} {f : } {g : } {Y : C} (h : Y X) (e : f g) :
def CategoryTheory.MonoOver.factorThru {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) (h : ) :
X P.obj.left

P.factorThru f h provides a factorisation of f : X ⟶ Y through some P : MonoOver Y, given the evidence h : P.Factors f that such a factorisation exists.

Instances For
def CategoryTheory.Subobject.Factors {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) :

When f : X ⟶ Y and P : Subobject Y, P.Factors f expresses that there exists a factorisation of f through P. Given h : P.Factors f, you can recover the morphism as P.factorThru f h.

Instances For
@[simp]
theorem CategoryTheory.Subobject.mk_factors_iff {C : Type u₁} [] {X : C} {Y : C} {Z : C} (f : Y X) (g : Z X) :
theorem CategoryTheory.Subobject.mk_factors_self {C : Type u₁} [] {X : C} {Y : C} (f : X Y) :
theorem CategoryTheory.Subobject.factors_iff {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) :
CategoryTheory.MonoOver.Factors (CategoryTheory.Subobject.representative.obj P) f
theorem CategoryTheory.Subobject.factors_self {C : Type u₁} [] {X : C} (P : ) :
theorem CategoryTheory.Subobject.factors_comp_arrow {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X CategoryTheory.Subobject.underlying.obj P) :
theorem CategoryTheory.Subobject.factors_of_factors_right {C : Type u₁} [] {X : C} {Y : C} {Z : C} {P : } (f : X Y) {g : Y Z} (h : ) :
theorem CategoryTheory.Subobject.factors_zero {C : Type u₁} [] {X : C} {Y : C} {P : } :
theorem CategoryTheory.Subobject.factors_of_le {C : Type u₁} [] {Y : C} {Z : C} {P : } {Q : } (f : Z Y) (h : P Q) :
def CategoryTheory.Subobject.factorThru {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) (h : ) :
X CategoryTheory.Subobject.underlying.obj P

P.factorThru f h provides a factorisation of f : X ⟶ Y through some P : Subobject Y, given the evidence h : P.Factors f that such a factorisation exists.

Instances For
@[simp]
theorem CategoryTheory.Subobject.factorThru_arrow_assoc {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) (h : ) {Z : C} (h : Y Z) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_arrow {C : Type u₁} [] {X : C} {Y : C} (P : ) (f : X Y) (h : ) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_self {C : Type u₁} [] {X : C} (P : ) :
= CategoryTheory.CategoryStruct.id (CategoryTheory.Subobject.underlying.obj P)
@[simp]
theorem CategoryTheory.Subobject.factorThru_mk_self {C : Type u₁} [] {X : C} {Y : C} (f : X Y) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_comp_arrow {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X CategoryTheory.Subobject.underlying.obj P) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_eq_zero {C : Type u₁} [] {X : C} {Y : C} {P : } {f : X Y} {h : } :
f = 0
theorem CategoryTheory.Subobject.factorThru_right {C : Type u₁} [] {X : C} {Y : C} {Z : C} {P : } (f : X Y) (g : Y Z) (h : ) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_zero {C : Type u₁} [] {X : C} {Y : C} {P : } (h : ) :
theorem CategoryTheory.Subobject.factorThru_ofLE {C : Type u₁} [] {Y : C} {Z : C} {P : } {Q : } {f : Z Y} (h : P Q) (w : ) :
theorem CategoryTheory.Subobject.factors_add {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X Y) (g : X Y) (wf : ) (wg : ) :
theorem CategoryTheory.Subobject.factorThru_add {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X Y) (g : X Y) (w : ) (wf : ) (wg : ) :
=
theorem CategoryTheory.Subobject.factors_left_of_factors_add {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X Y) (g : X Y) (w : ) (wg : ) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_add_sub_factorThru_right {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X Y) (g : X Y) (w : ) (wg : ) :
- =
theorem CategoryTheory.Subobject.factors_right_of_factors_add {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X Y) (g : X Y) (w : ) (wf : ) :
@[simp]
theorem CategoryTheory.Subobject.factorThru_add_sub_factorThru_left {C : Type u₁} [] {X : C} {Y : C} {P : } (f : X Y) (g : X Y) (w : ) (wf : ) :
- =