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: an iff characterisation of (imageSubobject f).Factors h

@[reducible, inline]
noncomputable abbrev CategoryTheory.Limits.equalizerSubobject {C : Type u} [Category.{v, u} C] {X Y : C} (f g : X Y) [HasEqualizer f g] :

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

Instances For

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

    Instances For
      @[reducible, inline]
      noncomputable abbrev CategoryTheory.Limits.kernelSubobject {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] (f : X Y) [HasKernel f] :

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

      Instances For

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

        Instances For
          @[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 : carrier (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 : carrier (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 : carrier (Subobject.underlying.obj (kernelSubobject f))) :
          noncomputable def CategoryTheory.Limits.factorThruKernelSubobject {C : Type u} [Category.{v, u} C] {X Y : C} [HasZeroMorphisms C] (f : X Y) [HasKernel f] {W : C} (h : W X) (w : CategoryStruct.comp h f = 0) :

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

          Instances For

            A commuting square induces a morphism between the kernel subobjects.

            Instances For
              @[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 : carrier (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.

              Instances For

                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.

                Instances For
                  @[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.

                  Instances For
                    @[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]
                    noncomputable 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.

                    Instances For

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

                      Instances For

                        A factorisation of f : X ⟶ Y through imageSubobject f.

                        Instances For
                          @[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 : carrier 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.

                          Instances For

                            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.

                            Instances For