Documentation

Mathlib.CategoryTheory.Subobject.Limits

Specific subobjects #

We define equalizerSubobject, kernelSubobject and imageSubobject, which are the subobjects represented by the equalizer, kernel and image of (a pair of) morphism(s) and provide conditions for P.factors f, where P is one of these special subobjects.

TODO: Add conditions for when P is a pullback subobject. TODO: an iff characterisation of (imageSubobject f).Factors h

@[reducible, inline]

The equalizer of morphisms f g : X ⟶ Y as a Subobject X.

Equations

The underlying object of equalizerSubobject f g is (up to isomorphism!) the same as the chosen object equalizer f g.

Equations
@[reducible, inline]

The kernel of a morphism f : X ⟶ Y as a Subobject X.

Equations
@[simp]
theorem CategoryTheory.Limits.kernelSubobject_arrow_apply {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] (f : X Y) [HasKernel f] {F : CCType uF} {carrier : CType w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : ConcreteCategory C F] (x : ToType (Subobject.underlying.obj (kernelSubobject f))) :
@[simp]
theorem CategoryTheory.Limits.kernelSubobject_arrow'_apply {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] (f : X Y) [HasKernel f] {F : CCType uF} {carrier : CType w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : ConcreteCategory C F] (x : ToType (kernel f)) :
@[simp]
theorem CategoryTheory.Limits.kernelSubobject_arrow_comp_apply {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] (f : X Y) [HasKernel f] {F : CCType uF} {carrier : CType w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : ConcreteCategory C F] (x : ToType (Subobject.underlying.obj (kernelSubobject f))) :

A factorisation of h : W ⟶ X through kernelSubobject f, assuming h ≫ f = 0.

Equations

A commuting square induces a morphism between the kernel subobjects.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Limits.kernelSubobjectMap_arrow_apply {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] {f : X Y} [HasKernel f] {X' Y' : C} {f' : X' Y'} [HasKernel f'] (sq : Arrow.mk f Arrow.mk f') {F : CCType uF} {carrier : CType w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : ConcreteCategory C F] (x : ToType (Subobject.underlying.obj (kernelSubobject f))) :
@[simp]
theorem CategoryTheory.Limits.kernelSubobjectMap_comp {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] {f : X Y} [HasKernel f] {X' Y' : C} {f' : X' Y'} [HasKernel f'] {X'' Y'' : C} {f'' : X'' Y''} [HasKernel f''] (sq : Arrow.mk f Arrow.mk f') (sq' : Arrow.mk f' Arrow.mk f'') :

The isomorphism between the kernel of f ≫ g and the kernel of g, when f is an isomorphism.

Equations
  • One or more equations did not get rendered due to their size.

The kernel of f is always a smaller subobject than the kernel of f ≫ h.

@[simp]

Postcomposing by a monomorphism does not change the kernel subobject.

Taking cokernels is an order-reversing map from the subobjects of X to the quotient objects of X.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Limits.cokernelOrderHom_coe {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] [HasCokernels C] (X : C) (a✝ : Subobject X) :
(cokernelOrderHom X) a✝ = Subobject.lift (fun (x : C) (f : x X) (x_1 : Mono f) => Subobject.mk (cokernel.π f).op) a✝

Taking kernels is an order-reversing map from the quotient objects of X to the subobjects of X.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CategoryTheory.Limits.kernelOrderHom_coe {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] [HasKernels C] (X : C) (a✝ : Subobject (Opposite.op X)) :
(kernelOrderHom X) a✝ = Subobject.lift (fun (x : Cᵒᵖ) (f : x Opposite.op X) (x_1 : Mono f) => Subobject.mk (kernel.ι f.unop)) a✝
@[reducible, inline]
abbrev CategoryTheory.Limits.imageSubobject {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [HasImage f] :

The image of a morphism f g : X ⟶ Y as a Subobject Y.

Equations

The underlying object of imageSubobject f is (up to isomorphism!) the same as the chosen object image f.

Equations
@[simp]
theorem CategoryTheory.Limits.imageSubobject_arrow_comp_apply {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [HasImage f] {F : CCType uF} {carrier : CType w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : ConcreteCategory C F] (x : ToType X) :

The image of h ≫ f is always a smaller subobject than the image of f.

The morphism imageSubobject (h ≫ f) ⟶ imageSubobject f is an epimorphism when h is an epimorphism. In general this does not imply that imageSubobject (h ≫ f) = imageSubobject f, although it will when the ambient category is abelian.

Postcomposing by an isomorphism gives an isomorphism between image subobjects.

Equations
  • One or more equations did not get rendered due to their size.

Precomposing by an isomorphism does not change the image subobject.

theorem CategoryTheory.Limits.imageSubobject_le_mk {C : Type u} [Category.{v, u} C] {A B X : C} (g : X B) [Mono g] (f : A B) [HasImage f] (h : A X) (w : CategoryStruct.comp h g = f) :

Given a commutative square between morphisms f and g, we have a morphism in the category from imageSubobject f to imageSubobject g.

Equations
  • One or more equations did not get rendered due to their size.