Documentation

Mathlib.AlgebraicTopology.SimplicialSet.HomotopyCat

The homotopy category of a simplicial set #

The homotopy category of a simplicial set is defined as a quotient of the free category on its underlying reflexive quiver (equivalently its one truncation). The quotient imposes an additional hom relation on this free category, asserting that f ≫ g = h whenever f, g, and h are respectively the 2nd, 0th, and 1st faces of a 2-simplex.

In fact, the associated functor

SSet.hoFunctor : SSet.{u} ⥤ Cat.{u, u} := SSet.truncation 2 ⋙ SSet.hoFunctor₂

is defined by first restricting from simplicial sets to 2-truncated simplicial sets (throwing away the data that is not used for the construction of the homotopy category) and then composing with an analogously defined SSet.hoFunctor₂ : SSet.Truncated.{u} 2 ⥤ Cat.{u,u} implemented relative to the syntax of the 2-truncated simplex category.

In the file Mathlib/AlgebraicTopology/SimplicialSet/NerveAdjunction.lean we show the functor SSet.hoFunctor to be left adjoint to the nerve by providing an analogous decomposition of the nerve functor, made by possible by the fact that nerves of categories are 2-coskeletal, and then composing a pair of adjunctions, which factor through the category of 2-truncated simplicial sets.

A 2-truncated simplicial set S has an underlying refl quiver with S _⦋0⦌₂ as its underlying type.

Equations
Instances For
    @[deprecated SSet.Truncated.Edge (since := "2025-11-01")]

    Alias of SSet.Truncated.Edge.

    Equations
    Instances For
      theorem SSet.OneTruncation₂.reflQuiver_Hom (S : Truncated 2) (x₀ x₁ : S.obj (Opposite.op { obj := SimplexCategory.mk 0, property := Truncated.Edge._proof_1 })) :
      (x₀ x₁) = Truncated.Edge x₀ x₁
      theorem SSet.OneTruncation₂.hom_ext {S : Truncated 2} {x y : OneTruncation₂ S} {f g : x y} (h : f.edge = g.edge) :
      f = g
      theorem SSet.OneTruncation₂.hom_ext_iff {S : Truncated 2} {x y : OneTruncation₂ S} {f g : x y} :
      f = g f.edge = g.edge
      @[deprecated "Use reflQuiver_id" (since := "2025-11-01")]

      The prefunctor on refl quivers OneTruncation₂ 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.OneTruncation₂.map_map {S T : Truncated 2} (f : S T) {X✝ Y✝ : OneTruncation₂ S} (e : X✝ Y✝) :
        @[simp]
        theorem SSet.OneTruncation₂.map_obj {S T : Truncated 2} (f : S T) (x : OneTruncation₂ S) :
        (map f).obj x = f.app (Opposite.op { obj := SimplexCategory.mk 0, property := _proof_1 }) x

        The functor that carries a 2-truncated simplicial set to its underlying refl quiver.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          @[simp]
          theorem SSet.OneTruncation₂.homOfEq_edge {X : Truncated 2} {x₁ y₁ x₂ y₂ : OneTruncation₂ X} (f : x₁ y₁) (hx : x₁ = x₂) (hy : y₁ = y₂) :

          An equivalence between the type of objects underlying a category and the type of 0-simplices in the 2-truncated nerve.

          Equations
          Instances For

            The refl quiver underlying a nerve is isomorphic to the refl quiver underlying the category.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[deprecated SSet.OneTruncation₂.nerve_hom_ext (since := "2025-11-06")]

              Alias of SSet.OneTruncation₂.nerve_hom_ext.

              @[simp]
              @[simp]

              The map that picks up the initial vertex of a 2-simplex, as a morphism in the 2-truncated simplex category.

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

                The map that picks up the middle vertex of a 2-simplex, as a morphism in the 2-truncated simplex category.

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

                  The map that picks up the final vertex of a 2-simplex, as a morphism in the 2-truncated simplex category.

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

                    The initial vertex of a 2-simplex in a 2-truncated simplicial set.

                    Equations
                    Instances For

                      The middle vertex of a 2-simplex in a 2-truncated simplicial set.

                      Equations
                      Instances For

                        The final vertex of a 2-simplex in a 2-truncated simplicial set.

                        Equations
                        Instances For

                          The 0th face of a 2-simplex, as a morphism in the 2-truncated simplex category.

                          Equations
                          Instances For

                            The 1st face of a 2-simplex, as a morphism in the 2-truncated simplex category.

                            Equations
                            Instances For

                              The 2nd face of a 2-simplex, as a morphism in the 2-truncated simplex category.

                              Equations
                              Instances For

                                The arrow in the ReflQuiver OneTruncation₂ V of a 2-truncated simplicial set arising from the 0th face of a 2-simplex.

                                Equations
                                Instances For

                                  The arrow in the ReflQuiver OneTruncation₂ V of a 2-truncated simplicial set arising from the 1st face of a 2-simplex.

                                  Equations
                                  Instances For

                                    The arrow in the ReflQuiver OneTruncation₂ V of a 2-truncated simplicial set arising from the 2nd face of a 2-simplex.

                                    Equations
                                    Instances For

                                      The 2-simplices in a 2-truncated simplicial set V generate a hom relation on the free category on the underlying refl quiver of V.

                                      Instances For
                                        @[deprecated "HoRel₂.of_compStruct" (since := "2025-11-06")]

                                        The type underlying the homotopy category of a 2-truncated simplicial set V.

                                        Equations
                                        Instances For

                                          A canonical functor from the free category on the refl quiver underlying a 2-truncated simplicial set V to its homotopy category.

                                          Equations
                                          Instances For

                                            Constructor for objects of the homotopy category of a 2-truncated simplicial set.

                                            Equations
                                            Instances For
                                              theorem SSet.Truncated.HomotopyCategory.cases_on {V : Truncated 2} {motive : V.HomotopyCategoryProp} (h : ∀ (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })), motive (mk x)) (x : V.HomotopyCategory) :
                                              motive x
                                              def SSet.Truncated.HomotopyCategory.homMk {V : Truncated 2} {x₀ x₁ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} (e : Edge x₀ x₁) :
                                              mk x₀ mk x₁

                                              The morphism in the homotopy category of a 2-truncated simplicial set that is induced by an edge.

                                              Equations
                                              Instances For
                                                theorem SSet.Truncated.HomotopyCategory.congr_arrowMk_homMk {V : Truncated 2} {x₀ x₁ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} (e : Edge x₀ x₁) {y₀ y₁ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} (e' : Edge y₀ y₁) (h : e.edge = e'.edge) :
                                                theorem SSet.Truncated.HomotopyCategory.homMk_comp_homMk {V : Truncated 2} {x₀ x₁ x₂ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (h : e₀₁.CompStruct e₁₂ e₀₂) :
                                                theorem SSet.Truncated.HomotopyCategory.homMk_comp_homMk_assoc {V : Truncated 2} {x₀ x₁ x₂ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} {e₀₁ : Edge x₀ x₁} {e₁₂ : Edge x₁ x₂} {e₀₂ : Edge x₀ x₂} (h : e₀₁.CompStruct e₁₂ e₀₂) {Z : V.HomotopyCategory} (h✝ : mk x₂ Z) :

                                                If V is a 2-truncated simplicial sets, this is the family of morphisms in V.HomotopyCategory corresponding to the edges of V. (Any morphism in V.HomotopyCategory is in the multiplicative closure of this family of morphisms, see multiplicativeClosure_morphismPropertyHomMk.)

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  def SSet.Truncated.HomotopyCategory.lift {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] (obj : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })D) (map : {x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} → Edge x y → (obj x obj y)) (map_id : ∀ (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })), map (Edge.id x) = CategoryTheory.CategoryStruct.id (obj x)) (map_comp : ∀ {x₀ x₁ x₂ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._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 homotopy category.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    @[simp]
                                                    theorem SSet.Truncated.HomotopyCategory.lift_obj_mk {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] (obj : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })D) (map : {x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} → Edge x y → (obj x obj y)) (map_id : ∀ (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })), map (Edge.id x) = CategoryTheory.CategoryStruct.id (obj x)) (map_comp : ∀ {x₀ x₁ x₂ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._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 : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) :
                                                    (lift obj (fun {x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} => map) map_id ).obj (mk x) = obj x
                                                    @[simp]
                                                    theorem SSet.Truncated.HomotopyCategory.lift_map_homMk {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] (obj : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })D) (map : {x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} → Edge x y → (obj x obj y)) (map_id : ∀ (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })), map (Edge.id x) = CategoryTheory.CategoryStruct.id (obj x)) (map_comp : ∀ {x₀ x₁ x₂ : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._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 : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} (e : Edge x y) :
                                                    (lift obj (fun {x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })} => map) map_id ).map (homMk e) = map e
                                                    def SSet.Truncated.HomotopyCategory.mkNatTrans {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor V.HomotopyCategory D} (φ : (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) → F.obj (mk x) G.obj (mk x)) ( : ∀ ⦃x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })⦄ (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (φ y) = CategoryTheory.CategoryStruct.comp (φ x) (G.map (homMk e)) := by cat_disch) :
                                                    F G

                                                    Constructor for natural transformations between functors from V.HomotopyCategory.

                                                    Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem SSet.Truncated.HomotopyCategory.mkNatTrans_app_mk {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor V.HomotopyCategory D} (φ : (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) → F.obj (mk x) G.obj (mk x)) ( : ∀ ⦃x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })⦄ (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (φ y) = CategoryTheory.CategoryStruct.comp (φ x) (G.map (homMk e)) := by cat_disch) (v : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) :
                                                      (mkNatTrans φ ).app (mk v) = φ v
                                                      def SSet.Truncated.HomotopyCategory.mkNatIso {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor V.HomotopyCategory D} (iso : (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) → F.obj (mk x) G.obj (mk x)) (hiso : ∀ ⦃x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })⦄ (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (iso y).hom = CategoryTheory.CategoryStruct.comp (iso x).hom (G.map (homMk e)) := by cat_disch) :
                                                      F G

                                                      Constructor for natural isomorphisms between functors from V.HomotopyCategory.

                                                      Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem SSet.Truncated.HomotopyCategory.mkNatIso_hom_app_mk {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor V.HomotopyCategory D} (iso : (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) → F.obj (mk x) G.obj (mk x)) (hiso : ∀ ⦃x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })⦄ (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (iso y).hom = CategoryTheory.CategoryStruct.comp (iso x).hom (G.map (homMk e)) := by cat_disch) (v : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) :
                                                        (mkNatIso iso hiso).hom.app (mk v) = (iso v).hom
                                                        @[simp]
                                                        theorem SSet.Truncated.HomotopyCategory.mkNatIso_inv_app_mk {V : Truncated 2} {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] {F G : CategoryTheory.Functor V.HomotopyCategory D} (iso : (x : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) → F.obj (mk x) G.obj (mk x)) (hiso : ∀ ⦃x y : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })⦄ (e : Edge x y), CategoryTheory.CategoryStruct.comp (F.map (homMk e)) (iso y).hom = CategoryTheory.CategoryStruct.comp (iso x).hom (G.map (homMk e)) := by cat_disch) (v : V.obj (Opposite.op { obj := SimplexCategory.mk 0, property := OneTruncation₂._proof_1 })) :
                                                        (mkNatIso iso hiso).inv.app (mk v) = (iso v).inv

                                                        A map of 2-truncated simplicial sets induces a functor between homotopy categories.

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

                                                          The functor that takes a 2-truncated simplicial set to its homotopy category.

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

                                                            By Quotient.lift_unique' (not Quotient.lift) we have that quotientFunctor V is an epimorphism.

                                                            The functor that takes a simplicial set to its homotopy category by passing through the 2-truncation.

                                                            Equations
                                                            Instances For

                                                              For a simplicial set X, the underlying type of hoFunctor.obj X is equivalent to X _⦋0⦌.

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

                                                                Since ⦋0⦌ : SimplexCategory is terminal, Δ[0] has a unique point and thus OneTruncation₂ ((truncation 2).obj Δ[0]) has a unique inhabitant.

                                                                Equations

                                                                Since ⦋0⦌ : SimplexCategory is terminal, Δ[0] has a unique edge and thus the homs of OneTruncation₂ ((truncation 2).obj Δ[0]) have unique inhabitants.

                                                                Equations

                                                                The homotopy category functor preserves generic terminal objects.

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