Documentation

Mathlib.CategoryTheory.Groupoid.FreeGroupoidOfCategory

Free groupoid on a category #

This file defines the free groupoid on a category, the lifting of a functor to its unique extension as a functor from the free groupoid, and proves uniqueness of this extension.

Main results #

Given a type C and a category instance on C:

Implementation notes #

The free groupoid on a category C is first defined by taking the free groupoid G on the underlying quiver of C. Then the free groupoid on the category C is defined as the quotient of G by the relation that makes the inclusion prefunctor C ℤq G a functor.

The relation on the free groupoid on the underlying quiver of C that promotes the prefunctor C ℤq FreeGroupoid C into a functor C ℤ Quotient (FreeGroupoid.homRel C).

Instances For

    The underlying type of the free groupoid on a category, defined by quotienting the free groupoid on the underlying quiver of C by the relation that promotes the prefunctor C ℤq FreeGroupoid C into a functor C ℤ Quotient (FreeGroupoid.homRel C).

    Instances For

      The localization functor from the category C to the groupoid FreeGroupoid C

      Instances For
        @[reducible, inline]

        Construct an object in the free groupoid on C by providing an object in C.

        Instances For
          @[reducible, inline]
          abbrev CategoryTheory.FreeGroupoid.homMk {C : Type u} [Category.{v, u} C] {X Y : C} (f : X ⟶ Y) :

          Construct a morphism in the free groupoid on C by providing a morphism in C.

          Instances For
            def CategoryTheory.FreeGroupoid.lift {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] (φ : Functor C G) :

            The lift of a functor from C to a groupoid to a functor from FreeGroupoid C to the groupoid

            Instances For
              theorem CategoryTheory.FreeGroupoid.lift_spec {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] (φ : Functor C G) :
              (of C).comp (lift φ) = φ
              @[simp]
              theorem CategoryTheory.FreeGroupoid.lift_obj_mk {C : Type u} [Category.{v, u} C] {E : Type uā‚‚} [Groupoid E] (φ : Functor C E) (X : C) :
              (lift φ).obj (mk X) = φ.obj X
              @[simp]
              theorem CategoryTheory.FreeGroupoid.lift_map_homMk {C : Type u} [Category.{v, u} C] {E : Type uā‚‚} [Groupoid E] (φ : Functor C E) {X Y : C} (f : X ⟶ Y) :
              (lift φ).map (homMk f) = φ.map f
              theorem CategoryTheory.FreeGroupoid.lift_unique {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] (φ : Functor C G) (Φ : Functor (FreeGroupoid C) G) (hΦ : (of C).comp Φ = φ) :
              Φ = lift φ
              theorem CategoryTheory.FreeGroupoid.lift_comp {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] {H : Type uā‚‚} [Groupoid H] (φ : Functor C G) (ψ : Functor G H) :
              lift (φ.comp ψ) = (lift φ).comp ψ
              noncomputable def CategoryTheory.FreeGroupoid.liftNatIso {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] (F₁ Fā‚‚ : Functor (FreeGroupoid C) G) (Ļ„ : (of C).comp F₁ ≅ (of C).comp Fā‚‚) :
              F₁ ≅ Fā‚‚

              In order to define a natural isomorphism F ≅ G with F G : FreeGroupoid ℤ D, it suffices to do so after precomposing with FreeGroupoid.of C.

              Instances For
                @[simp]
                theorem CategoryTheory.FreeGroupoid.liftNatIso_hom_app {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] (F₁ Fā‚‚ : Functor (FreeGroupoid C) G) (Ļ„ : (of C).comp F₁ ≅ (of C).comp Fā‚‚) (X : C) :
                (liftNatIso F₁ Fā‚‚ Ļ„).hom.app (mk X) = Ļ„.hom.app X
                @[simp]
                theorem CategoryTheory.FreeGroupoid.liftNatIso_inv_app {C : Type u} [Category.{v, u} C] {G : Type u₁} [Groupoid G] (F₁ Fā‚‚ : Functor (FreeGroupoid C) G) (Ļ„ : (of C).comp F₁ ≅ (of C).comp Fā‚‚) (X : C) :
                (liftNatIso F₁ Fā‚‚ Ļ„).inv.app (mk X) = Ļ„.inv.app X

                The functor between free groupoids induced by a functor between categories.

                Instances For

                  The operation of is natural.

                  Instances For

                    The functor induced by the identity is the identity.

                    Instances For
                      noncomputable def CategoryTheory.FreeGroupoid.mapComp {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {E : Type uā‚‚} [Category.{vā‚‚, uā‚‚} E] (φ : Functor C D) (φ' : Functor D E) :
                      map (φ.comp φ') ≅ (map φ).comp (map φ')

                      The functor induced by a composition is the composition of the functors they induce.

                      Instances For
                        @[simp]
                        theorem CategoryTheory.FreeGroupoid.mapComp_hom_app {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {E : Type uā‚‚} [Category.{vā‚‚, uā‚‚} E] (φ : Functor C D) (φ' : Functor D E) (X : FreeGroupoid C) :
                        (mapComp φ φ').hom.app X = CategoryStruct.id ((map (φ.comp φ')).obj X)
                        @[simp]
                        theorem CategoryTheory.FreeGroupoid.mapComp_inv_app {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {E : Type uā‚‚} [Category.{vā‚‚, uā‚‚} E] (φ : Functor C D) (φ' : Functor D E) (X : FreeGroupoid C) :
                        (mapComp φ φ').inv.app X = CategoryStruct.id (((map φ).comp (map φ')).obj X)
                        theorem CategoryTheory.FreeGroupoid.map_comp {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {E : Type uā‚‚} [Category.{vā‚‚, uā‚‚} E] (φ : Functor C D) (φ' : Functor D E) :
                        map (φ.comp φ') = (map φ).comp (map φ')
                        @[simp]
                        theorem CategoryTheory.FreeGroupoid.map_obj_mk {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (φ : Functor C D) (X : C) :
                        (map φ).obj (mk X) = mk (φ.obj X)
                        @[simp]
                        theorem CategoryTheory.FreeGroupoid.map_map_homMk {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (φ : Functor C D) {X Y : C} (f : X ⟶ Y) :
                        (map φ).map (homMk f) = homMk (φ.map f)
                        theorem CategoryTheory.FreeGroupoid.map_comp_lift {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {E : Type uā‚‚} [Groupoid E] (F : Functor C D) (G : Functor D E) :
                        (map F).comp (lift G) = lift (F.comp G)
                        noncomputable def CategoryTheory.FreeGroupoid.mapCompLift {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] {E : Type uā‚‚} [Groupoid E] (F : Functor C D) (G : Functor D E) :
                        (map F).comp (lift G) ≅ lift (F.comp G)

                        The operation lift is natural.

                        Instances For

                          Functors out of the free groupoid biject with functors out of the original category.

                          Instances For

                            The free groupoid construction on a category as a functor.

                            Instances For
                              @[simp]
                              theorem CategoryTheory.Grpd.free_obj (C : Cat) :
                              ↑(free.obj C) = FreeGroupoid ↑C

                              The free-forgetful adjunction between Grpd and Cat.

                              Instances For