# mathlib3documentation

category_theory.subobject.comma

# Subobjects in the category of structured arrows #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

We compute the subobjects of an object A in the category structured_arrow S T for T : C ⥤ D and S : D as a subtype of the subobjects of A.right. We deduce that structured_arrow S T is well-powered if C is.

## Main declarations #

• structured_arrow.equiv_subtype: the order-equivalence between subobject A and a subtype of subobject A.right.

## Implementation notes #

Our computation requires that C has all limits and T preserves all limits. Furthermore, we require that the morphisms of C and D are in the same universe. It is possible that both of these requirements can be relaxed by refining the results about limits in comma categories.

We also provide the dual results. As usual, we use subobject (op A) for the quotient objects of A.

def category_theory.structured_arrow.project_subobject {C : Type u₁} {D : Type u₂} {S : D} {T : C D} {A : T} :

Every subobject of a structured arrow can be projected to a subobject of the underlying object.

Equations
@[simp]
theorem category_theory.structured_arrow.project_subobject_mk {C : Type u₁} {D : Type u₂} {S : D} {T : C D} {A P : T} (f : P A)  :
theorem category_theory.structured_arrow.project_subobject_factors {C : Type u₁} {D : Type u₂} {S : D} {T : C D} {A : T}  :
@[simp]
noncomputable def category_theory.structured_arrow.lift_subobject {C : Type u₁} {D : Type u₂} {S : D} {T : C D} {A : T} {q : T.obj P} (hq : q T.map P.arrow = A.hom) :

A subobject of the underlying object of a structured arrow can be lifted to a subobject of the structured arrow, provided that there is a morphism making the subobject into a structured arrow.

Equations
theorem category_theory.structured_arrow.lift_project_subobject {C : Type u₁} {D : Type u₂} {S : D} {T : C D} {A : T} (hq : = A.hom) :

Projecting and then lifting a subobject recovers the original subobject, because there is at most one morphism making the projected subobject into a structured arrow.

@[simp]
theorem category_theory.structured_arrow.subobject_equiv_apply_coe {C : Type u₁} {D : Type u₂} {S : D} {T : C D} (A : T)  :
@[simp]
theorem category_theory.structured_arrow.subobject_equiv_symm_apply {C : Type u₁} {D : Type u₂} {S : D} {T : C D} (A : T) (P : {P // (q : T.obj P), q T.map P.arrow = A.hom}) :
noncomputable def category_theory.structured_arrow.subobject_equiv {C : Type u₁} {D : Type u₂} {S : D} {T : C D} (A : T) :
≃o {P // (q : T.obj P), q T.map P.arrow = A.hom}

If A : S → T.obj B is a structured arrow for S : D and T : C ⥤ D, then we can explicitly describe the subobjects of A as the subobjects P of B in C for which A.hom factors through the image of P under T.

Equations
@[protected, instance]

If C is well-powered and complete and T preserves limits, then structured_arrow S T is well-powered.

def category_theory.costructured_arrow.project_quotient {C : Type u₁} {D : Type u₂} {S : C D} {T : D}  :

Every quotient of a costructured arrow can be projected to a quotient of the underlying object.

Equations
@[simp]
theorem category_theory.costructured_arrow.project_quotient_mk {C : Type u₁} {D : Type u₂} {S : C D} {T : D} {P : ᵒᵖ} (f : P )  :
@[simp]
noncomputable def category_theory.costructured_arrow.lift_quotient {C : Type u₁} {D : Type u₂} {S : C D} {T : D} (P : category_theory.subobject (opposite.op A.left)) {q : S.obj } (hq : S.map P.arrow.unop q = A.hom) :

A quotient of the underlying object of a costructured arrow can be lifted to a quotient of the costructured arrow, provided that there is a morphism making the quotient into a costructured arrow.

Equations
@[simp]
theorem category_theory.costructured_arrow.unop_left_comp_underlying_iso_hom_unop {C : Type u₁} {D : Type u₂} {S : C D} {T : D} {P : ᵒᵖ} (f : P )  :

Technical lemma for lift_project_quotient.

theorem category_theory.costructured_arrow.lift_project_quotient {C : Type u₁} {D : Type u₂} {S : C D} {T : D} (P : category_theory.subobject (opposite.op A)) (hq : = A.hom) :

Projecting and then lifting a quotient recovers the original quotient, because there is at most one morphism making the projected quotient into a costructured arrow.

theorem category_theory.costructured_arrow.unop_left_comp_of_mk_le_mk_unop {C : Type u₁} {D : Type u₂} {S : C D} {T : D} {P Q : ᵒᵖ} {f : P } {g : Q }  :

Technical lemma for quotient_equiv.

noncomputable def category_theory.costructured_arrow.quotient_equiv {C : Type u₁} {D : Type u₂} {S : C D} {T : D}  :
≃o {P // (q : S.obj , S.map P.arrow.unop q = A.hom}

If A : S.obj B ⟶ T is a costructured arrow for S : C ⥤ D and T : D, then we can explicitly describe the quotients of A as the quotients P of B in C for which A.hom factors through the image of P under S.

Equations
@[protected, instance]

If C is well-copowered and cocomplete and S preserves colimits, then costructured_arrow S T is well-copowered.