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

          A 2-truncated simplicial set S has an underlying refl quiver SSet.OneTruncation₂ S.

          Equations
            theorem SSet.OneTruncation₂.hom_ext {S : Truncated 2} {x y : OneTruncation₂ S} {f g : x y} (h : f.edge = g.edge) :
            f = g

            The prefunctor on refl quivers OneTruncation₂ induced by a morphism of 2-truncated simplicial sets.

            Equations
              Instances For
                @[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
                @[simp]
                theorem SSet.OneTruncation₂.map_map {S T : Truncated 2} (f : S T) {X✝ Y✝ : OneTruncation₂ S} (e : X✝ Y✝) :

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

                Equations
                  Instances For
                    @[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
                          Instances For
                            @[deprecated SSet.OneTruncation₂.nerve_hom_ext (since := "2025-11-06")]

                            Alias of SSet.OneTruncation₂.nerve_hom_ext.

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

                            Equations
                              Instances For

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

                                Equations
                                  Instances For

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

                                    Equations
                                      Instances For

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

                                        Equations
                                          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.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
                                                                                                    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
                                                                                                        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

                                                                                                                  If X : Truncated 2 has a unique 0-simplex and (at most) one 1-simplex, then X.HomotopyCategory is a terminal object in Cat.

                                                                                                                  Equations
                                                                                                                    Instances For

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

                                                                                                                      Equations
                                                                                                                        Instances For

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

                                                                                                                          Equations
                                                                                                                            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
                                                                                                                                    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 category hoFunctor.obj (Δ[0]) is terminal.

                                                                                                                                          Equations
                                                                                                                                            Instances For

                                                                                                                                              The homotopy category functor preserves generic terminal objects.

                                                                                                                                              Equations
                                                                                                                                                Instances For