Documentation

Mathlib.CategoryTheory.Subobject.MonoOver

Monomorphisms over a fixed object #

As preparation for defining Subobject X, we set up the theory for MonoOver X := { f : Over X // Mono f.hom}.

Here MonoOver X is a thin category (a pair of objects has at most one morphism between them), so we can think of it as a preorder. However as it is not skeletal, it is not yet a partial order.

Subobject X will be defined as the skeletalization of MonoOver X.

We provide

Notes #

This development originally appeared in Bhavik Mehta's "Topos theory for Lean" repository, and was ported to mathlib by Scott Morrison.

def CategoryTheory.MonoOver {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) :
Type (max u₁ v₁)

The category of monomorphisms into X as a full subcategory of the over category. This isn't skeletal, so it's not a partial order.

Later we define Subobject X as the quotient of this by isomorphisms.

Equations
Instances For

    Construct a MonoOver X.

    Equations
    Instances For
      Equations
      @[simp]
      @[inline, reducible]

      Convenience notation for the underlying arrow of a monomorphism over X.

      Equations
      Instances For

        The category of monomorphisms over X is a thin category, which makes defining its skeleton easy.

        Equations
        @[inline, reducible]

        Convenience constructor for a morphism in monomorphisms over X.

        Equations
        Instances For
          @[simp]
          @[simp]
          theorem CategoryTheory.MonoOver.lift_obj_obj {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {Y : D} (F : CategoryTheory.Functor (CategoryTheory.Over Y) (CategoryTheory.Over X)) (h : ∀ (f : CategoryTheory.MonoOver Y), CategoryTheory.Mono (F.toPrefunctor.obj ((CategoryTheory.MonoOver.forget Y).toPrefunctor.obj f)).hom) (f : CategoryTheory.MonoOver Y) :
          ((CategoryTheory.MonoOver.lift F h).toPrefunctor.obj f).obj = F.toPrefunctor.obj ((CategoryTheory.MonoOver.forget Y).toPrefunctor.obj f)

          Lift a functor between over categories to a functor between MonoOver categories, given suitable evidence that morphisms are taken to monomorphisms.

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

            Isomorphic functors Over Y ⥤ Over X lift to isomorphic functors MonoOver Y ⥤ MonoOver X.

            Equations
            Instances For
              def CategoryTheory.MonoOver.liftComp {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {X : C} {Z : C} {Y : D} (F : CategoryTheory.Functor (CategoryTheory.Over X) (CategoryTheory.Over Y)) (G : CategoryTheory.Functor (CategoryTheory.Over Y) (CategoryTheory.Over Z)) (h₁ : ∀ (f : CategoryTheory.MonoOver X), CategoryTheory.Mono (F.toPrefunctor.obj ((CategoryTheory.MonoOver.forget X).toPrefunctor.obj f)).hom) (h₂ : ∀ (f : CategoryTheory.MonoOver Y), CategoryTheory.Mono (G.toPrefunctor.obj ((CategoryTheory.MonoOver.forget Y).toPrefunctor.obj f)).hom) :
              CategoryTheory.Functor.comp (CategoryTheory.MonoOver.lift F h₁) (CategoryTheory.MonoOver.lift G h₂) CategoryTheory.MonoOver.lift (CategoryTheory.Functor.comp F G) (_ : ∀ (f : CategoryTheory.MonoOver X), CategoryTheory.Mono (G.toPrefunctor.obj ((CategoryTheory.MonoOver.forget Y).toPrefunctor.obj { obj := F.toPrefunctor.obj ((CategoryTheory.MonoOver.forget X).toPrefunctor.obj f), property := (_ : CategoryTheory.Mono (F.toPrefunctor.obj ((CategoryTheory.MonoOver.forget X).toPrefunctor.obj f)).hom) })).hom)

              MonoOver.lift commutes with composition of functors.

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

                MonoOver.lift preserves the identity functor.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]

                  Monomorphisms over an object f : Over A in an over category are equivalent to monomorphisms over the source of f.

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

                    When C has pullbacks, a morphism f : X ⟶ Y induces a functor MonoOver Y ⥤ MonoOver X, by pulling back a monomorphism along f.

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

                      pullback commutes with composition (up to a natural isomorphism)

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

                        pullback preserves the identity (up to a natural isomorphism)

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

                          We can map monomorphisms over X to monomorphisms over Y by post-composition with a monomorphism f : X ⟶ Y.

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

                            MonoOver.map commutes with composition (up to a natural isomorphism).

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

                              MonoOver.map preserves the identity (up to a natural isomorphism).

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem CategoryTheory.MonoOver.map_obj_left {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.Mono f] (g : CategoryTheory.MonoOver X) :
                                ((CategoryTheory.MonoOver.map f).toPrefunctor.obj g).obj.left = g.obj.left
                                Equations
                                • One or more equations did not get rendered due to their size.

                                Isomorphic objects have equivalent MonoOver categories.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.MonoOver.congr_inverse {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (e : C D) :
                                  (CategoryTheory.MonoOver.congr X e).inverse = CategoryTheory.Functor.comp (CategoryTheory.MonoOver.lift (CategoryTheory.Over.post e.inverse) (_ : ∀ (f : CategoryTheory.MonoOver (e.functor.toPrefunctor.obj X)), CategoryTheory.Mono ((CategoryTheory.Over.post e.inverse).toPrefunctor.obj ((CategoryTheory.MonoOver.forget (e.functor.toPrefunctor.obj X)).toPrefunctor.obj f)).hom)) (CategoryTheory.MonoOver.mapIso (e.unitIso.symm.app X)).functor
                                  @[simp]

                                  An equivalence of categories e between C and D induces an equivalence between MonoOver X and MonoOver (e.functor.obj X) whenever X is an object of C.

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

                                    map f is left adjoint to pullback f when f is a monomorphism

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[simp]

                                      Taking the image of a morphism gives a functor Over X ⥤ MonoOver X.

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

                                        MonoOver.image : Over X ⥤ MonoOver X is left adjoint to MonoOver.forget : MonoOver X ⥤ Over X

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          Equations
                                          • CategoryTheory.MonoOver.instIsRightAdjointOverInstCategoryOverMonoOverInstCategoryMonoOverForget = { left := CategoryTheory.MonoOver.image, adj := CategoryTheory.MonoOver.imageForgetAdj }
                                          Equations
                                          • CategoryTheory.MonoOver.reflective = CategoryTheory.Reflective.mk

                                          Forgetting that a monomorphism over X is a monomorphism, then taking its image, is the identity functor.

                                          Equations
                                          Instances For

                                            In the case where f is not a monomorphism but C has images, we can still take the "forward map" under it, which agrees with MonoOver.map f.

                                            Equations
                                            Instances For

                                              When f : X ⟶ Y is a monomorphism, exists f agrees with map f.

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

                                                exists is adjoint to pullback when images exist

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