Documentation

Mathlib.AlgebraicTopology.SimplicialSet.FundamentalGroupoid.Basic

The fundamental groupoid of a simplicial set #

In this file, we define the fundamental groupoid SSet.Truncated.FundamentalGroupoid X of a 2-truncated simplicial set X. We also define the fundamental groupoid SSet.FundamentalGroupoid X of a simplicial set X.

Implementation notes #

In order to get good definitional properties at implicit transparency, we do not define FundamentalGroupoid X as FreeGroupoid X.HomotopyCategory, but only as an induced category via a bijection FundamentalGroupoid X ≃ FreeGroupoid X.HomotopyCategory. If f : X ⟶ Y is a morphism of simplicial sets and x : X _⦋0⦌, this allows to obtain the equality (mapFundamentalGroupoid f).obj (mk x) = mk (f.app _ x) by with_implicit rfl.

The fundamental groupoid of a 2-truncated simplicial set.

Instances For

    The bijection FundamentalGroupoid X ≃ FreeGroupoid X.HomotopyCategory that is used to define the category structure on FundamentalGroupoid X when X is a 2-truncated simplicial set.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[instance_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      @[instance_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      def SSet.Truncated.FundamentalGroupoid.homMk {X : Truncated 2} {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} (e : Edge x y) :
      { pt := x } ⟶ { pt := y }

      Constructor for morphisms in the fundamental groupoid of a 2-truncated simplicial set.

      Equations
      Instances For
        @[simp]
        theorem SSet.Truncated.FundamentalGroupoid.hom_rec {X : Truncated 2} {motive : ⦃x y : X.FundamentalGroupoid⦄ → (x ⟶ y) → Prop} (homMk : ∀ ⦃x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })⦄ (e : Edge x y), motive (homMk e)) (inv : ∀ ⦃x y : X.FundamentalGroupoid⦄ (f : x ⟶ y), motive f → motive (CategoryTheory.inv f)) (comp : ∀ ⦃x y z : X.FundamentalGroupoid⦄ (f : x ⟶ y) (g : y ⟶ z), motive f → motive g → motive (CategoryTheory.CategoryStruct.comp f g)) {x y : X.FundamentalGroupoid} (f : x ⟶ y) :
        motive f

        Induction principle for morphisms in the fundamental groupoid of a 2-truncated simplicial set: in order to prove a property of all morphisms, it suffices to do it for morphisms induced by edges and show that the property is stable by inverses and by composition.

        def SSet.Truncated.FundamentalGroupoid.descMap {X : Truncated 2} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 }) → D) (map : {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) {x y : X.FundamentalGroupoid} (f : x ⟶ y) :
        obj x.pt ⟶ obj y.pt

        Auxiliary definition for desc.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem SSet.Truncated.FundamentalGroupoid.descMap_homMk {X : Truncated 2} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 }) → D) (map : {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} (e : Edge x y) :
          descMap obj (fun {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} => map) ⋯ (homMk e) = map e
          @[implicit_reducible]
          def SSet.Truncated.FundamentalGroupoid.desc {X : Truncated 2} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 }) → D) (map : {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) :

          Constructor for functors from the fundamental groupoid of a 2-truncated simplicial set.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem SSet.Truncated.FundamentalGroupoid.desc_obj_mk {X : Truncated 2} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 }) → D) (map : {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) (x : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })) :
            (desc obj (fun {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} => map) ⋯).obj { pt := x } = obj x
            @[simp]
            theorem SSet.Truncated.FundamentalGroupoid.desc_map_homMk {X : Truncated 2} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 }) → D) (map : {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} (e : Edge x y) :
            (desc obj (fun {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} => map) ⋯).map (homMk e) = map e
            theorem SSet.Truncated.FundamentalGroupoid.functor_ext {X : Truncated 2} {D : Type u_1} [CategoryTheory.Groupoid D] {F G : CategoryTheory.Functor X.FundamentalGroupoid D} (h₁ : ∀ (x : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })), F.obj { pt := x } = G.obj { pt := x }) (h₂ : ∀ {x y : X.obj (Opposite.op { obj := { len := 0 }, property := _proof_1 })} (e : Edge x y), F.map (homMk e) = CategoryTheory.CategoryStruct.comp (CategoryTheory.eqToHom ⋯) (CategoryTheory.CategoryStruct.comp (G.map (homMk e)) (CategoryTheory.eqToHom ⋯))) :
            F = G
            theorem SSet.Truncated.Edge.CompStruct.homMk_comp {X : Truncated 2} {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := FundamentalGroupoid._proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (h : e₀₁.CompStruct e₁₂ e₀₂) :
            theorem SSet.Truncated.Edge.CompStruct.homMk_comp_assoc {X : Truncated 2} {x₀ x₁ x₂ : X.obj (Opposite.op { obj := { len := 0 }, property := FundamentalGroupoid._proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (h : e₀₁.CompStruct e₁₂ e₀₂) {Z : X.FundamentalGroupoid} (h✝ : { pt := x₂ } ⟶ Z) :
            @[implicit_reducible]

            The functor FundamentalGroupoid X ⥤ FundamentalGroupoid Y that is induced by a morphism of 2-truncated simplicial sets.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem SSet.Truncated.mapFundamentalGroupoid_obj_mk {X Y : Truncated 2} (f : X ⟶ Y) (x : X.obj (Opposite.op { obj := { len := 0 }, property := FundamentalGroupoid._proof_1 })) :

              The isomorphism of fundamental groupoids that is induced by an isomorphism of 2-truncated simplicial sets.

              Equations
              Instances For
                @[implicit_reducible]

                The fundamental groupoid of a simplicial set X.

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

                  Constructor for objects of the fundamental groupoid of a simplicial set X.

                  Equations
                  Instances For
                    @[implicit_reducible]
                    def SSet.FundamentalGroupoid.rec {X : SSet} {motive : X.FundamentalGroupoid → Sort u_1} (mk : (x : X.obj (Opposite.op { len := 0 })) → motive (mk x)) (x : X.FundamentalGroupoid) :
                    motive x

                    Induction principle for the objects of the fundamental groupoid of a simplicial set.

                    Equations
                    Instances For
                      @[simp]
                      theorem SSet.FundamentalGroupoid.rec_mk {X : SSet} {motive : X.FundamentalGroupoid → Sort u_1} (mk : (x : X.obj (Opposite.op { len := 0 })) → motive (mk x)) (x : X.obj (Opposite.op { len := 0 })) :
                      def SSet.FundamentalGroupoid.homMk {X : SSet} {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y) :
                      mk x ⟶ mk y

                      Constructor for morphisms in the fundamental groupoid of a simplicial set X.

                      Equations
                      Instances For
                        theorem SSet.FundamentalGroupoid.hom_rec {X : SSet} {motive : ⦃x y : X.FundamentalGroupoid⦄ → (x ⟶ y) → Prop} (homMk : ∀ ⦃x y : X.obj (Opposite.op { len := 0 })⦄ (e : Edge x y), motive (homMk e)) (inv : ∀ ⦃x y : X.FundamentalGroupoid⦄ (f : x ⟶ y), motive f → motive (CategoryTheory.inv f)) (comp : ∀ ⦃x y z : X.FundamentalGroupoid⦄ (f : x ⟶ y) (g : y ⟶ z), motive f → motive g → motive (CategoryTheory.CategoryStruct.comp f g)) {x y : X.FundamentalGroupoid} (f : x ⟶ y) :
                        motive f

                        Induction principle for morphisms in the fundamental groupoid of a simplicial set: in order to prove a property of all morphisms, it suffices to do it for morphisms induced by edges and show that the property is stable by inverses and by composition;

                        @[implicit_reducible]
                        def SSet.FundamentalGroupoid.desc {X : SSet} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { len := 0 }) → D) (map : {x y : X.obj (Opposite.op { len := 0 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { len := 0 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) :

                        Constructor for functors from the fundamental groupoid of a simplicial set.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]
                          theorem SSet.FundamentalGroupoid.desc_obj_mk {X : SSet} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { len := 0 }) → D) (map : {x y : X.obj (Opposite.op { len := 0 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { len := 0 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) (x : X.obj (Opposite.op { len := 0 })) :
                          (desc obj (fun {x y : X.obj (Opposite.op { len := 0 })} => map) ⋯).obj (mk x) = obj x
                          @[simp]
                          theorem SSet.FundamentalGroupoid.desc_map_homMk {X : SSet} {D : Type u_1} [CategoryTheory.Groupoid D] (obj : X.obj (Opposite.op { len := 0 }) → D) (map : {x y : X.obj (Opposite.op { len := 0 })} → Edge x y → (obj x ⟶ obj y)) (map_comp : ∀ {x₀ x₁ x₂ : X.obj (Opposite.op { len := 0 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (x : e₀₁.CompStruct e₁₂ e₀₂), CategoryTheory.CategoryStruct.comp (map e₀₁) (map e₁₂) = map e₀₂) {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y) :
                          (desc obj (fun {x y : X.obj (Opposite.op { len := 0 })} => map) ⋯).map (homMk e) = map e
                          def SSet.FundamentalGroupoid.natTransMk {X : SSet} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor X.FundamentalGroupoid D} (app : (x : X.obj (Opposite.op { len := 0 })) → F.obj (mk x) ⟶ G.obj (mk x)) (naturality : ∀ {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (app y) = CategoryTheory.CategoryStruct.comp (app x) (G.map (homMk e)) := by cat_disch) :
                          F ⟶ G

                          Constructor for natural transformations between functors from the fundamental groupoid of a simplicial set.

                          Equations
                          Instances For
                            @[simp]
                            theorem SSet.FundamentalGroupoid.natTransMk_app {X : SSet} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor X.FundamentalGroupoid D} (app : (x : X.obj (Opposite.op { len := 0 })) → F.obj (mk x) ⟶ G.obj (mk x)) (naturality : ∀ {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (app y) = CategoryTheory.CategoryStruct.comp (app x) (G.map (homMk e)) := by cat_disch) (x : X.FundamentalGroupoid) :
                            (natTransMk app naturality).app x = app x.pt
                            def SSet.FundamentalGroupoid.natIsoMk {X : SSet} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor X.FundamentalGroupoid D} (app : (x : X.obj (Opposite.op { len := 0 })) → F.obj (mk x) ≅ G.obj (mk x)) (naturality : ∀ {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (app y).hom = CategoryTheory.CategoryStruct.comp (app x).hom (G.map (homMk e)) := by cat_disch) :
                            F ≅ G

                            Constructor for natural isomorphisms between functors from the fundamental groupoid of a simplicial set.

                            Equations
                            Instances For
                              @[simp]
                              theorem SSet.FundamentalGroupoid.natIsoMk_hom_app {X : SSet} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor X.FundamentalGroupoid D} (app : (x : X.obj (Opposite.op { len := 0 })) → F.obj (mk x) ≅ G.obj (mk x)) (naturality : ∀ {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (app y).hom = CategoryTheory.CategoryStruct.comp (app x).hom (G.map (homMk e)) := by cat_disch) (X✝ : X.FundamentalGroupoid) :
                              (natIsoMk app naturality).hom.app X✝ = (app X✝.pt).hom
                              @[simp]
                              theorem SSet.FundamentalGroupoid.natIsoMk_inv_app {X : SSet} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor X.FundamentalGroupoid D} (app : (x : X.obj (Opposite.op { len := 0 })) → F.obj (mk x) ≅ G.obj (mk x)) (naturality : ∀ {x y : X.obj (Opposite.op { len := 0 })} (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (app y).hom = CategoryTheory.CategoryStruct.comp (app x).hom (G.map (homMk e)) := by cat_disch) (X✝ : X.FundamentalGroupoid) :
                              (natIsoMk app naturality).inv.app X✝ = (app X✝.pt).inv
                              theorem SSet.Edge.CompStruct.homMk_comp {X : SSet} {x₀ x₁ x₂ : X.obj (Opposite.op { len := 0 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (h : e₀₁.CompStruct e₁₂ e₀₂) :
                              theorem SSet.Edge.CompStruct.homMk_comp_assoc {X : SSet} {x₀ x₁ x₂ : X.obj (Opposite.op { len := 0 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (h : e₀₁.CompStruct e₁₂ e₀₂) {Z : X.FundamentalGroupoid} (h✝ : FundamentalGroupoid.mk x₂ ⟶ Z) :
                              @[implicit_reducible]

                              The functor FundamentalGroupoid X ⥤ FundamentalGroupoid Y that is induced by a morphism of simplicial sets.

                              Equations
                              Instances For
                                theorem SSet.isIso_mapFundamentalGroupoid_of_isIso {X Y : SSet} (f : X ⟶ Y) (hf : CategoryTheory.IsIso ((truncation 2).map f) := by infer_instance) :

                                The isomorphism of fundamental groupoids that is induced by a morphism of simplicial sets which induces an isomorphism on the 2-truncations.