Documentation

Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction

The adjunction between the nerve and the homotopy category functor #

We define an adjunction nerveAdjunction : hoFunctor ⊣ nerveFunctor between the functor that takes a simplicial set to its homotopy category and the functor that takes a category to its nerve.

Up to natural isomorphism, this is constructed as the composite of two other adjunctions, namely nerve₂Adj : hoFunctor₂ ⊣ nerveFunctor₂ between analogously-defined functors involving the category of 2-truncated simplicial sets and coskAdj 2 : truncation 2 ⊣ Truncated.cosk 2. The aforementioned natural isomorphism

cosk₂Iso : nerveFunctor ≅ nerveFunctor₂ ⋙ Truncated.cosk 2

exists because nerves of categories are 2-coskeletal.

We also prove that nerveFunctor is fully faithful, demonstrating that nerveAdjunction is reflective. Since the category of simplicial sets is cocomplete, we conclude in Mathlib/CategoryTheory/Category/Cat/Colimit.lean that the category of categories has colimits.

Finally we show that hoFunctor : SSet.{u} ⥤ Cat.{u, u} preserves finite cartesian products; note that it fails to preserve infinite products.

The goal of this section is to define SSet.Truncated.liftOfStrictSegal which allows to construct of morphism X ⟶ Y of 2-truncated simplicial sets from the data of maps on 0- and 1-simplices when Y is strict Segal.

def SSet.Truncated.liftOfStrictSegal.f₂ {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) :
Y.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })

Auxiliary definition for SSet.Truncated.liftOfStrictSegal.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem SSet.Truncated.liftOfStrictSegal.spineEquiv_f₂_arrow_zero {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) :
    ((hY.spineEquiv 2 ) (f₂ f₀ f₁ hδ₁ hδ₀ hY x)).arrow 0 = f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x)
    @[simp]
    theorem SSet.Truncated.liftOfStrictSegal.spineEquiv_f₂_arrow_one {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) :
    ((hY.spineEquiv 2 ) (f₂ f₀ f₁ hδ₁ hδ₀ hY x)).arrow 1 = f₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x)
    theorem SSet.Truncated.liftOfStrictSegal.hδ'₀ {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) :
    f₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₂ f₀ f₁ hδ₁ hδ₀ hY x)
    theorem SSet.Truncated.liftOfStrictSegal.hδ'₂ {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) :
    f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 2 ).op (f₂ f₀ f₁ hδ₁ hδ₀ hY x)
    theorem SSet.Truncated.liftOfStrictSegal.hδ'₁ {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (H : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) (y : Y.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })), f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 2 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op y) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) :
    f₁ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₂ f₀ f₁ hδ₁ hδ₀ hY x)
    theorem SSet.Truncated.liftOfStrictSegal.hσ'₀ {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) ( : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })), f₁ (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₀ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) :
    f₂ f₀ f₁ hδ₁ hδ₀ hY (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₁ x)
    theorem SSet.Truncated.liftOfStrictSegal.hσ'₁ {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) ( : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })), f₁ (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₀ x)) (hY : Y.StrictSegal) (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) :
    f₂ f₀ f₁ hδ₁ hδ₀ hY (X.map (SimplexCategory.Truncated.σ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 1 ).op (f₁ x)
    def SSet.Truncated.liftOfStrictSegal.app {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) (n : (SimplexCategory.Truncated 2)ᵒᵖ) :
    X.obj n Y.obj n

    Auxiliary definition for SSet.Truncated.liftOfStrictSegal.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[reducible, inline]
      abbrev SSet.Truncated.liftOfStrictSegal.naturalityProperty {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (hY : Y.StrictSegal) :

      The property of morphims in SimplexCategory.Truncated 2 for which liftOfStrictSegal.app is natural.

      Equations
      Instances For
        theorem SSet.Truncated.liftOfStrictSegal.naturalityProperty_eq_top {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (H : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) (y : Y.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })), f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 2 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op y) ( : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })), f₁ (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₀ x)) (hY : Y.StrictSegal) :
        naturalityProperty f₀ f₁ hδ₁ hδ₀ hY =
        def SSet.Truncated.liftOfStrictSegal {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (H : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) (y : Y.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })), f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 2 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op y) ( : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })), f₁ (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₀ x)) (hY : Y.StrictSegal) :
        X Y

        Constructor for morphisms X ⟶ Y between 2-truncated simplicial sets from the data of maps on 0- and 1-simplices when Y is strict Segal.

        Equations
        Instances For
          @[simp]
          theorem SSet.Truncated.liftOfStrictSegal_app_0 {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (H : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) (y : Y.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })), f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 2 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op y) ( : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })), f₁ (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₀ x)) (hY : Y.StrictSegal) :
          (liftOfStrictSegal f₀ f₁ hδ₁ hδ₀ H hY).app (Opposite.op { obj := SimplexCategory.mk 0, property := }) = f₀
          @[simp]
          theorem SSet.Truncated.liftOfStrictSegal_app_1 {X Y : Truncated 2} (f₀ : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })) (f₁ : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })Y.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })) (hδ₁ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op (f₁ x)) (hδ₀ : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })), f₀ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op (f₁ x)) (H : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })) (y : Y.obj (Opposite.op { obj := SimplexCategory.mk 2, property := })), f₁ (X.map (SimplexCategory.Truncated.δ₂ 2 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 2 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 0 ).op yf₁ (X.map (SimplexCategory.Truncated.δ₂ 1 ).op x) = Y.map (SimplexCategory.Truncated.δ₂ 1 ).op y) ( : ∀ (x : X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })), f₁ (X.map (SimplexCategory.Truncated.σ₂ 0 ).op x) = Y.map (SimplexCategory.Truncated.σ₂ 0 ).op (f₀ x)) (hY : Y.StrictSegal) :
          (liftOfStrictSegal f₀ f₁ hδ₁ hδ₀ H hY).app (Opposite.op { obj := SimplexCategory.mk 1, property := }) = f₁

          Given a 2-truncated simplicial set X and a category C, this is the functor X.HomotopyCategory ⥤ C corresponding to a morphism X ⟶ (truncation 2).obj (nerve C).

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

            Given a 2-truncated simplicial set X and a category C, this is the morphism X ⟶ (truncation 2).obj (nerve C) corresponding to a functor X.HomotopyCategory ⥤ C.

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

              Given a 2-truncated simplicial set X and a category C, this is the bijection between morphism X.HomotopyCategory ⥤ C and X ⟶ (truncation 2).obj (nerve C) which is part of the adjunction SSet.Truncated.nerve₂Adj.

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

                The adjunction between the 2-truncated homotopy category functor and the 2-truncated nerve functor.

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

                  The functor C ⥤ D that is reconstructed for a morphism between the 2-truncated nerves.

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

                    The 2-truncated nerve functor is fully faithful.

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

                      The adjunction between the nerve functor and the homotopy category functor is, up to isomorphism, the composite of the adjunctions SSet.coskAdj 2 and nerve₂Adj.

                      Equations
                      Instances For

                        Repleteness exists for full and faithful functors but not fully faithful functors, which is why we do this inefficiently.

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

                        The functor hoFunctor : SSet ⥤ Cat preserves binary products of simplicial sets X and Y.

                        The functor hoFunctor : SSet ⥤ Cat preserves limits of functors out of Discrete WalkingPair.

                        The functor hoFunctor : SSet ⥤ Cat preserves finite products of simplicial sets.

                        The homotopy category functor hoFunctor : SSet.{u} ⥤ Cat.{u, u} is (cartesian) monoidal.

                        Equations