Documentation

Mathlib.AlgebraicTopology.SimplicialSet.StrictSegal

Strict Segal simplicial sets #

A simplicial set X satisfies the StrictSegal condition if for all n, the map X.spine n : X _⦋n⦌ → X.Path n is an equivalence, with equivalence inverse spineToSimplex {n : ℕ} : Path X n → X _⦋n⦌.

Examples of StrictSegal simplicial sets are given by nerves of categories.

TODO: Show that these are the only examples: that a StrictSegal simplicial set is isomorphic to the nerve of its homotopy category.

StrictSegal simplicial sets have an important property of being 2-coskeletal which is proven in Mathlib/AlgebraicTopology/SimplicialSet/Coskeletal.lean.

structure SSet.Truncated.StrictSegal {n : } (X : Truncated (n + 1)) :

An n + 1-truncated simplicial set satisfies the strict Segal condition if its m-simplices are uniquely determined by their spine for all m ≤ n + 1.

Instances For

    For an n + 1-truncated simplicial set X, IsStrictSegal X asserts the mere existence of an inverse to spine X m for all m ≤ n + 1.

    Instances

      Given IsStrictSegal X, a choice of inverse to spine X m for all m ≤ n + 1 determines an inhabitant of StrictSegal X.

      Equations
        Instances For
          @[simp]
          theorem SSet.Truncated.StrictSegal.spine_spineToSimplex_apply {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (f : X.Path m) :
          X.spine m h (sx.spineToSimplex m h f) = f
          @[simp]
          theorem SSet.Truncated.StrictSegal.spineToSimplex_spine_apply {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (Δ : X.obj (Opposite.op { obj := SimplexCategory.mk m, property := h })) :
          sx.spineToSimplex m h (X.spine m h Δ) = Δ
          def SSet.Truncated.StrictSegal.spineEquiv {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1 := by omega) :
          X.obj (Opposite.op { obj := SimplexCategory.mk m, property := h }) X.Path m

          The fields of StrictSegal define an equivalence between X _⦋m⦌ₙ₊₁ and Path X m.

          Equations
            Instances For
              theorem SSet.Truncated.StrictSegal.spineInjective {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1 := by omega) :
              def SSet.Truncated.StrictSegal.spineToDiagonal {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1 := by omega) :
              X.Path mX.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })

              In the presence of the strict Segal condition, a path of length m can be "composed" by taking the diagonal edge of the resulting m-simplex.

              Equations
                Instances For

                  The unique existence of an inverse to spine X m for all m ≤ n + 1 implies the mere existence of such an inverse.

                  @[simp]
                  theorem SSet.Truncated.StrictSegal.spineToSimplex_vertex {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (i : Fin (m + 1)) (f : X.Path m) :
                  @[simp]
                  theorem SSet.Truncated.StrictSegal.spineToSimplex_arrow {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (i : Fin m) (f : X.Path m) :
                  @[simp]
                  theorem SSet.Truncated.StrictSegal.spineToSimplex_interval {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (f : X.Path m) (j l : ) (hjl : j + l m) :
                  theorem SSet.Truncated.StrictSegal.spineToSimplex_edge {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (f : X.Path m) (j l : ) (hjl : j + l m) :
                  theorem SSet.Truncated.StrictSegal.spineToSimplex_map {n : } {X Y : Truncated (n + 1)} (sx : X.StrictSegal) (sy : Y.StrictSegal) (m : ) (h : m n) (f : X.Path (m + 1)) (σ : X Y) :
                  sy.spineToSimplex (m + 1) (f.map σ) = σ.app (Opposite.op { obj := SimplexCategory.mk (m + 1), property := }) (sx.spineToSimplex (m + 1) f)

                  For any σ : X ⟶ Y between n + 1-truncated StrictSegal simplicial sets, spineToSimplex commutes with Path.map.

                  theorem SSet.Truncated.StrictSegal.spine_δ_vertex_lt {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n) (f : X.Path (m + 1)) {i : Fin (m + 1)} {j : Fin (m + 2)} (hij : i.castSucc < j) :

                  If we take the path along the spine of the jth face of a spineToSimplex, the common vertices will agree with those of the original path f. In particular, a vertex i with i < j can be identified with the same vertex in f.

                  theorem SSet.Truncated.StrictSegal.spine_δ_vertex_ge {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n) (f : X.Path (m + 1)) {i : Fin (m + 1)} {j : Fin (m + 2)} (hij : j i.castSucc) :

                  If we take the path along the spine of the jth face of a spineToSimplex, a vertex i with j ≤ i can be identified with vertex i + 1 in the original path.

                  theorem SSet.Truncated.StrictSegal.spine_δ_arrow_lt {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n) (f : X.Path (m + 1)) {i : Fin m} {j : Fin (m + 2)} (hij : i.succ.castSucc < j) :

                  If we take the path along the spine of the jth face of a spineToSimplex, the common arrows will agree with those of the original path f. In particular, an arrow i with i + 1 < j can be identified with the same arrow in f.

                  theorem SSet.Truncated.StrictSegal.spine_δ_arrow_gt {n : } {X : Truncated (n + 1)} (sx : X.StrictSegal) (m : ) (h : m n) (f : X.Path (m + 1)) {i : Fin m} {j : Fin (m + 2)} (hij : j < i.succ.castSucc) :
                  (X.spine m (X.map (SimplexCategory.Truncated.Hom.tr (SimplexCategory.δ j) ).op (sx.spineToSimplex (m + 1) f))).arrow i = f.arrow i.succ

                  If we take the path along the spine of the jth face of a spineToSimplex, an arrow i with i + 1 > j can be identified with arrow i + 1 in the original path.

                  theorem SSet.Truncated.StrictSegal.spine_δ_arrow_eq {n : } {X : Truncated (n + 2)} (sx : X.StrictSegal) (m : ) (h : m n + 1) (f : X.Path (m + 1)) {i : Fin m} {j : Fin (m + 2)} (hij : j = i.succ.castSucc) :
                  (X.spine m (X.map (SimplexCategory.Truncated.Hom.tr (SimplexCategory.δ j) ).op (sx.spineToSimplex (m + 1) f))).arrow i = sx.spineToDiagonal 2 (f.interval (↑i) 2 )
                  structure SSet.StrictSegal (X : SSet) :

                  A simplicial set X satisfies the strict Segal condition if its simplices are uniquely determined by their spine.

                  Instances For

                    For X a simplicial set, IsStrictSegal X asserts the mere existence of an inverse to spine X n for all n : ℕ.

                    Instances

                      Given IsStrictSegal X, a choice of inverse to spine X n for all n : ℕ determines an inhabitant of StrictSegal X.

                      Equations
                        Instances For

                          A StrictSegal structure on a simplicial set X restricts to a Truncated.StrictSegal structure on the n + 1-truncation of X.

                          Equations
                            Instances For
                              @[simp]
                              theorem SSet.StrictSegal.spine_spineToSimplex_apply {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path n) :
                              X.spine n (sx.spineToSimplex f) = f

                              The fields of StrictSegal define an equivalence between X _⦋n⦌ and Path X n.

                              Equations
                                Instances For

                                  The unique existence of an inverse to spine X n forall n : ℕ implies the mere existence of such an inverse.

                                  @[simp]
                                  theorem SSet.StrictSegal.spineToSimplex_vertex {X : SSet} (sx : X.StrictSegal) {n : } (i : Fin (n + 1)) (f : X.Path n) :
                                  @[simp]
                                  theorem SSet.StrictSegal.spineToSimplex_arrow {X : SSet} (sx : X.StrictSegal) {n : } (i : Fin n) (f : X.Path n) :

                                  In the presence of the strict Segal condition, a path of length n can be "composed" by taking the diagonal edge of the resulting n-simplex.

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem SSet.StrictSegal.spineToSimplex_interval {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path n) (j l : ) (hjl : j + l n) :
                                      theorem SSet.StrictSegal.spineToSimplex_edge {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path n) (j l : ) (hjl : j + l n) :
                                      theorem SSet.StrictSegal.spineToSimplex_map {X Y : SSet} (sx : X.StrictSegal) (sy : Y.StrictSegal) {n : } (f : X.Path (n + 1)) (σ : X Y) :

                                      For any σ : X ⟶ Y between StrictSegal simplicial sets, spineToSimplex commutes with Path.map.

                                      theorem SSet.StrictSegal.spine_δ_vertex_lt {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path (n + 1)) {i : Fin (n + 1)} {j : Fin (n + 2)} (h : i.castSucc < j) :

                                      If we take the path along the spine of the jth face of a spineToSimplex, the common vertices will agree with those of the original path f. In particular, a vertex i with i < j can be identified with the same vertex in f.

                                      theorem SSet.StrictSegal.spine_δ_vertex_ge {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path (n + 1)) {i : Fin (n + 1)} {j : Fin (n + 2)} (h : j i.castSucc) :

                                      If we take the path along the spine of the jth face of a spineToSimplex, a vertex i with i ≥ j can be identified with vertex i + 1 in the original path.

                                      theorem SSet.StrictSegal.spine_δ_arrow_lt {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path (n + 1)) {i : Fin n} {j : Fin (n + 2)} (h : i.succ.castSucc < j) :

                                      If we take the path along the spine of the jth face of a spineToSimplex, the common arrows will agree with those of the original path f. In particular, an arrow i with i + 1 < j can be identified with the same arrow in f.

                                      theorem SSet.StrictSegal.spine_δ_arrow_gt {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path (n + 1)) {i : Fin n} {j : Fin (n + 2)} (h : j < i.succ.castSucc) :

                                      If we take the path along the spine of the jth face of a spineToSimplex, an arrow i with i + 1 > j can be identified with arrow i + 1 in the original path.

                                      theorem SSet.StrictSegal.spine_δ_arrow_eq {X : SSet} (sx : X.StrictSegal) {n : } (f : X.Path (n + 1)) {i : Fin n} {j : Fin (n + 2)} (h : j = i.succ.castSucc) :

                                      If we take the path along the spine of a face of a spineToSimplex, the arrows not contained in the original path can be recovered as the diagonal edge of the spineToSimplex that "composes" arrows i and i + 1.

                                      Simplices in the nerve of categories are uniquely determined by their spine. Indeed, this property describes the essential image of the nerve functor.

                                      Equations
                                        Instances For