Documentation

Mathlib.AlgebraicTopology.SimplicialSet.Path

Paths in simplicial sets #

A path in a simplicial set X of length n is a directed path comprised of n + 1 0-simplices and n 1-simplices, together with identifications between 0-simplices and the sources and targets of the 1-simplices. We define this construction first for truncated simplicial sets in SSet.Truncated.Path. A path in a simplicial set X is then defined as a 1-truncated path in the 1-truncation of X.

An n-simplex has a maximal path, the spine of the simplex, which is a path of length n.

structure SSet.Truncated.Path₁ (X : Truncated 1) (n : ) :

A path of length n in a 1-truncated simplicial set X is a directed path of n edges.

Instances For
    theorem SSet.Truncated.Path₁.ext_iff {X : Truncated 1} {n : } {x y : X.Path₁ n} :
    theorem SSet.Truncated.Path₁.ext {X : Truncated 1} {n : } {x y : X.Path₁ n} (vertex : x.vertex = y.vertex) (arrow : x.arrow = y.arrow) :
    x = y
    def SSet.Truncated.Path {n : } (X : Truncated (n + 1)) (m : ) :

    A path of length m in an n + 1-truncated simplicial set X is given by the data of a Path₁ structure on the further 1-truncation of X.

    Equations
    Instances For
      @[reducible, inline]
      abbrev SSet.Truncated.Path.vertex {n : } {X : Truncated (n + 1)} {m : } (f : X.Path m) (i : Fin (m + 1)) :
      X.obj (Opposite.op { obj := SimplexCategory.mk 0, property := })

      A path includes the data of n + 1 0-simplices in X.

      Equations
      Instances For
        @[reducible, inline]
        abbrev SSet.Truncated.Path.arrow {n : } {X : Truncated (n + 1)} {m : } (f : X.Path m) (i : Fin m) :
        X.obj (Opposite.op { obj := SimplexCategory.mk 1, property := })

        A path includes the data of n 1-simplices in X.

        Equations
        Instances For
          theorem SSet.Truncated.Path.arrow_src {n : } {X : Truncated (n + 1)} {m : } (f : X.Path m) (i : Fin m) :

          The source of a 1-simplex in a path is identified with the source vertex.

          theorem SSet.Truncated.Path.arrow_tgt {n : } {X : Truncated (n + 1)} {m : } (f : X.Path m) (i : Fin m) :

          The target of a 1-simplex in a path is identified with the target vertex.

          theorem SSet.Truncated.Path.ext {n : } {X : Truncated (n + 1)} {m : } {f g : X.Path m} (hᵥ : f.vertex = g.vertex) (hₐ : f.arrow = g.arrow) :
          f = g
          theorem SSet.Truncated.Path.ext_iff {n : } {X : Truncated (n + 1)} {m : } {f g : X.Path m} :
          theorem SSet.Truncated.Path.ext' {n : } {X : Truncated (n + 1)} {m : } {f g : X.Path (m + 1)} (h : ∀ (i : Fin (m + 1)), f.arrow i = g.arrow i) :
          f = g

          To show two paths equal it suffices to show that they have the same edges.

          theorem SSet.Truncated.Path.ext'_iff {n : } {X : Truncated (n + 1)} {m : } {f g : X.Path (m + 1)} :
          f = g ∀ (i : Fin (m + 1)), f.arrow i = g.arrow i
          def SSet.Truncated.Path.interval {n : } {X : Truncated (n + 1)} {m : } (f : X.Path m) (j l : ) (h : j + l m := by omega) :
          X.Path l

          For j + l ≤ m, a path of length m restricts to a path of length l, namely the subpath spanned by the vertices j ≤ i ≤ j + l and edges j ≤ i < j + l.

          Equations
          Instances For
            def SSet.Truncated.Path.map {n : } {X Y : Truncated (n + 1)} {m : } (f : X.Path m) (σ : X Y) :
            Y.Path m

            Maps of n + 1-truncated simplicial sets induce maps of paths.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem SSet.Truncated.Path.map_vertex {n : } {X Y : Truncated (n + 1)} {m : } (f : X.Path m) (σ : X Y) (i : Fin (m + 1)) :
              (f.map σ).vertex i = σ.app (Opposite.op { obj := SimplexCategory.mk 0, property := }) (f.vertex i)
              @[simp]
              theorem SSet.Truncated.Path.map_arrow {n : } {X Y : Truncated (n + 1)} {m : } (f : X.Path m) (σ : X Y) (i : Fin m) :
              (f.map σ).arrow i = σ.app (Opposite.op { obj := SimplexCategory.mk 1, property := }) (f.arrow i)
              theorem SSet.Truncated.Path.map_interval {n : } {X Y : Truncated (n + 1)} {m : } (f : X.Path m) (σ : X Y) (j l : ) (h : j + l m) :
              (f.map σ).interval j l h = (f.interval j l h).map σ
              def SSet.Truncated.spine {n : } (X : Truncated (n + 1)) (m : ) (h : m n + 1 := by omega) (Δ : X.obj (Opposite.op { obj := SimplexCategory.mk m, property := h })) :
              X.Path m

              The spine of an m-simplex in X is the path of edges of length m formed by traversing in order through its vertices.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem SSet.Truncated.trunc_spine {n : } (X : Truncated (n + 1)) (k m : ) (h : m k + 1) (hₙ : k n) :
                ((trunc (n + 1) (k + 1) ).obj X).spine m h = X.spine m

                Further truncating X above m does not change the m-spine.

                @[simp]
                theorem SSet.Truncated.spine_vertex {n : } (X : Truncated (n + 1)) (m : ) (hₘ : m n + 1) (Δ : X.obj (Opposite.op { obj := SimplexCategory.mk m, property := hₘ })) (i : Fin (m + 1)) :
                @[simp]
                theorem SSet.Truncated.spine_arrow {n : } (X : Truncated (n + 1)) (m : ) (hₘ : m n + 1) (Δ : X.obj (Opposite.op { obj := SimplexCategory.mk m, property := hₘ })) (i : Fin m) :
                theorem SSet.Truncated.spine_map_vertex {n : } (X : Truncated (n + 1)) (m : ) (hₘ : m n + 1) (Δ : X.obj (Opposite.op { obj := SimplexCategory.mk m, property := hₘ })) (a : ) (hₐ : a n + 1) (φ : { obj := SimplexCategory.mk a, property := hₐ } { obj := SimplexCategory.mk m, property := hₘ }) (i : Fin (a + 1)) :
                (X.spine a hₐ (X.map φ.op Δ)).vertex i = (X.spine m hₘ Δ).vertex ((SimplexCategory.Hom.toOrderHom φ) i)
                theorem SSet.Truncated.spine_map_subinterval {n : } (X : Truncated (n + 1)) (m : ) (hₘ : m n + 1) (j l : ) (h : j + l m) (Δ : X.obj (Opposite.op { obj := SimplexCategory.mk m, property := hₘ })) :
                X.spine l (X.map (SimplexCategory.Truncated.Hom.tr (SimplexCategory.subinterval j l h) hₘ).op Δ) = (X.spine m hₘ Δ).interval j l h
                @[reducible, inline]
                abbrev SSet.Path (X : SSet) (n : ) :

                A path of length n in a simplicial set X is defined as a 1-truncated path in the 1-truncation of X.

                Equations
                Instances For
                  @[reducible, inline]
                  abbrev SSet.Path.vertex {X : SSet} {n : } (f : X.Path n) (i : Fin (n + 1)) :

                  A path includes the data of n + 1 0-simplices in X.

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev SSet.Path.arrow {X : SSet} {n : } (f : X.Path n) (i : Fin n) :

                    A path includes the data of n 1-simplices in X.

                    Equations
                    Instances For
                      theorem SSet.Path.arrow_src {X : SSet} {n : } (f : X.Path n) (i : Fin n) :

                      The source of a 1-simplex in a path is identified with the source vertex.

                      theorem SSet.Path.arrow_tgt {X : SSet} {n : } (f : X.Path n) (i : Fin n) :

                      The target of a 1-simplex in a path is identified with the target vertex.

                      theorem SSet.Path.ext {X : SSet} {n : } {f g : X.Path n} (hᵥ : f.vertex = g.vertex) (hₐ : f.arrow = g.arrow) :
                      f = g
                      theorem SSet.Path.ext_iff {X : SSet} {n : } {f g : X.Path n} :
                      theorem SSet.Path.ext' {X : SSet} {n : } {f g : X.Path (n + 1)} (h : ∀ (i : Fin (n + 1)), f.arrow i = g.arrow i) :
                      f = g

                      To show two paths equal it suffices to show that they have the same edges.

                      theorem SSet.Path.ext'_iff {X : SSet} {n : } {f g : X.Path (n + 1)} :
                      f = g ∀ (i : Fin (n + 1)), f.arrow i = g.arrow i
                      def SSet.Path.interval {X : SSet} {n : } (f : X.Path n) (j l : ) (h : j + l n := by omega) :
                      X.Path l

                      For j + l ≤ n, a path of length n restricts to a path of length l, namely the subpath spanned by the vertices j ≤ i ≤ j + l and edges j ≤ i < j + l.

                      Equations
                      Instances For
                        def SSet.Path.map {X Y : SSet} {n : } (f : X.Path n) (σ : X Y) :
                        Y.Path n

                        Maps of simplicial sets induce maps of paths in a simplicial set.

                        Equations
                        Instances For
                          @[simp]
                          theorem SSet.Path.map_vertex {X Y : SSet} {n : } (f : X.Path n) (σ : X Y) (i : Fin (n + 1)) :
                          @[simp]
                          theorem SSet.Path.map_arrow {X Y : SSet} {n : } (f : X.Path n) (σ : X Y) (i : Fin n) :
                          theorem SSet.Path.map_interval {X Y : SSet} {n : } (f : X.Path n) (σ : X Y) (j l : ) (h : j + l n) :
                          (f.map σ).interval j l h = (f.interval j l h).map σ

                          Path.map respects subintervals of paths.

                          def SSet.spine (X : SSet) (n : ) :

                          The spine of an n-simplex in X is the path of edges of length n formed by traversing in order through the vertices of X _⦋n⦌ₙ₊₁.

                          Equations
                          Instances For
                            @[simp]
                            theorem SSet.spine_vertex (X : SSet) (n : ) (Δ : X.obj (Opposite.op (SimplexCategory.mk n))) (i : Fin (n + 1)) :
                            @[simp]
                            theorem SSet.spine_arrow (X : SSet) (n : ) (Δ : X.obj (Opposite.op (SimplexCategory.mk n))) (i : Fin n) :
                            theorem SSet.truncation_spine (X : SSet) (n m : ) (h : m n + 1) :
                            ((truncation (n + 1)).obj X).spine m h = X.spine m

                            For m ≤ n + 1, the m-spine of X factors through the n + 1-truncation of X.

                            theorem SSet.spine_map_vertex (X : SSet) (n : ) (Δ : X.obj (Opposite.op (SimplexCategory.mk n))) {m : } (φ : SimplexCategory.mk m SimplexCategory.mk n) (i : Fin (m + 1)) :
                            (X.spine m (X.map φ.op Δ)).vertex i = (X.spine n Δ).vertex ((SimplexCategory.Hom.toOrderHom φ) i)
                            theorem SSet.spine_map_subinterval (X : SSet) (n j l : ) (h : j + l n) (Δ : X.obj (Opposite.op (SimplexCategory.mk n))) :
                            X.spine l (X.map (SimplexCategory.subinterval j l h).op Δ) = (X.spine n Δ).interval j l h

                            The spine of the unique non-degenerate n-simplex in Δ[n].

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              @[simp]
                              @[simp]
                              def SSet.Subcomplex.liftPath {X : SSet} (A : X.Subcomplex) {n : } (p : X.Path n) (hp₀ : ∀ (j : Fin (n + 1)), p.vertex j A.obj (Opposite.op (SimplexCategory.mk 0))) (hp₁ : ∀ (j : Fin n), p.arrow j A.obj (Opposite.op (SimplexCategory.mk 1))) :

                              A path of a simplicial set can be lifted to a subcomplex if the vertices and arrows belong to this subcomplex.

                              Equations
                              Instances For
                                @[simp]
                                theorem SSet.Subcomplex.liftPath_vertex_coe {X : SSet} (A : X.Subcomplex) {n : } (p : X.Path n) (hp₀ : ∀ (j : Fin (n + 1)), p.vertex j A.obj (Opposite.op (SimplexCategory.mk 0))) (hp₁ : ∀ (j : Fin n), p.arrow j A.obj (Opposite.op (SimplexCategory.mk 1))) (j : Fin (n + 1)) :
                                ((A.liftPath p hp₀ hp₁).vertex j) = p.vertex j
                                @[simp]
                                theorem SSet.Subcomplex.liftPath_arrow_coe {X : SSet} (A : X.Subcomplex) {n : } (p : X.Path n) (hp₀ : ∀ (j : Fin (n + 1)), p.vertex j A.obj (Opposite.op (SimplexCategory.mk 0))) (hp₁ : ∀ (j : Fin n), p.arrow j A.obj (Opposite.op (SimplexCategory.mk 1))) (j : Fin n) :
                                ((A.liftPath p hp₀ hp₁).arrow j) = p.arrow j
                                @[simp]
                                theorem SSet.Subcomplex.map_ι_liftPath {X : SSet} (A : X.Subcomplex) {n : } (p : X.Path n) (hp₀ : ∀ (j : Fin (n + 1)), p.vertex j A.obj (Opposite.op (SimplexCategory.mk 0))) (hp₁ : ∀ (j : Fin n), p.arrow j A.obj (Opposite.op (SimplexCategory.mk 1))) :
                                (A.liftPath p hp₀ hp₁).map A.ι = p
                                def SSet.horn.spineId {n : } (i : Fin (n + 3)) (h₀ : 0 < i) (hₙ : i < Fin.last (n + 2)) :
                                (horn (n + 2) i).toSSet.Path (n + 2)

                                Any inner horn contains the spine of the unique non-degenerate n-simplex in Δ[n].

                                Equations
                                Instances For
                                  @[simp]
                                  theorem SSet.horn.spineId_arrow_coe {n : } (i : Fin (n + 3)) (h₀ : 0 < i) (hₙ : i < Fin.last (n + 2)) (j : Fin (n + 2)) :
                                  ((spineId i h₀ hₙ).arrow j) = (stdSimplex.spineId (n + 2)).arrow j
                                  @[simp]
                                  theorem SSet.horn.spineId_vertex_coe {n : } (i : Fin (n + 3)) (h₀ : 0 < i) (hₙ : i < Fin.last (n + 2)) (j : Fin (n + 2 + 1)) :
                                  ((spineId i h₀ hₙ).vertex j) = stdSimplex.const (n + 2) j (Opposite.op (SimplexCategory.mk 0))
                                  @[simp]
                                  theorem SSet.horn.spineId_map_hornInclusion {n : } (i : Fin (n + 3)) (h₀ : 0 < i) (hₙ : i < Fin.last (n + 2)) :
                                  (spineId i h₀ hₙ).map (horn (n + 2) i).ι = stdSimplex.spineId (n + 2)