Documentation

Mathlib.AlgebraicTopology.SimplexCategory

The simplex category #

We construct a skeletal model of the simplex category, with objects and the morphism n ⟶ m being the monotone maps from Fin (n+1) to Fin (m+1).

We show that this category is equivalent to NonemptyFinLinOrd.

Remarks #

The definitions SimplexCategory and SimplexCategory.Hom are marked as irreducible.

We provide the following functions to work with these objects:

  1. SimplexCategory.mk creates an object of SimplexCategory out of a natural number. Use the notation [n] in the Simplicial locale.
  2. SimplexCategory.len gives the "length" of an object of SimplexCategory, as a natural.
  3. SimplexCategory.Hom.mk makes a morphism out of a monotone map between Fin's.
  4. SimplexCategory.Hom.toOrderHom gives the underlying monotone map associated to a term of SimplexCategory.Hom.
@[irreducible]

The simplex category:

  • objects are natural numbers n : ℕ
  • morphisms from n to m are monotone functions Fin (n+1) → Fin (m+1)
Equations
Instances For

    Interpret a natural number as an object of the simplex category.

    Equations
    Instances For

      the n-dimensional simplex can be denoted [n]

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

        The length of an object of SimplexCategory.

        Equations
        • n.len = n
        Instances For
          theorem SimplexCategory.ext (a b : SimplexCategory) :
          a.len = b.lena = b
          @[simp]
          theorem SimplexCategory.len_mk (n : ) :
          (mk n).len = n
          @[simp]
          def SimplexCategory.rec {F : SimplexCategorySort u_1} (h : (n : ) → F (mk n)) (X : SimplexCategory) :
          F X

          A recursor for SimplexCategory. Use it as induction Δ using SimplexCategory.rec.

          Equations
          Instances For
            @[irreducible]

            Morphisms in the SimplexCategory.

            Equations
            Instances For
              def SimplexCategory.Hom.mk {a b : SimplexCategory} (f : Fin (a.len + 1) →o Fin (b.len + 1)) :
              a.Hom b

              Make a morphism in SimplexCategory from a monotone map of Fin's.

              Equations
              Instances For
                def SimplexCategory.Hom.toOrderHom {a b : SimplexCategory} (f : a.Hom b) :
                Fin (a.len + 1) →o Fin (b.len + 1)

                Recover the monotone map from a morphism in the simplex category.

                Equations
                • f.toOrderHom = f
                Instances For
                  theorem SimplexCategory.Hom.ext' {a b : SimplexCategory} (f g : a.Hom b) :
                  f.toOrderHom = g.toOrderHomf = g
                  @[simp]
                  theorem SimplexCategory.Hom.mk_toOrderHom {a b : SimplexCategory} (f : a.Hom b) :
                  mk f.toOrderHom = f
                  @[simp]
                  theorem SimplexCategory.Hom.toOrderHom_mk {a b : SimplexCategory} (f : Fin (a.len + 1) →o Fin (b.len + 1)) :
                  (mk f).toOrderHom = f
                  theorem SimplexCategory.Hom.mk_toOrderHom_apply {a b : SimplexCategory} (f : Fin (a.len + 1) →o Fin (b.len + 1)) (i : Fin (a.len + 1)) :
                  (mk f).toOrderHom i = f i
                  def SimplexCategory.Hom.comp {a b c : SimplexCategory} (f : b.Hom c) (g : a.Hom b) :
                  a.Hom c

                  Composition of morphisms of SimplexCategory.

                  Equations
                  Instances For
                    theorem SimplexCategory.Hom.ext {a b : SimplexCategory} (f g : a b) :
                    toOrderHom f = toOrderHom gf = g
                    def SimplexCategory.const (x y : SimplexCategory) (i : Fin (y.len + 1)) :
                    x y

                    The constant morphism from [0].

                    Equations
                    Instances For
                      @[simp]
                      theorem SimplexCategory.const_apply (x y : SimplexCategory) (i : Fin (y.len + 1)) (a : Fin (x.len + 1)) :
                      (Hom.toOrderHom (x.const y i)) a = i
                      @[simp]
                      theorem SimplexCategory.const_comp (x : SimplexCategory) {y z : SimplexCategory} (f : y z) (i : Fin (y.len + 1)) :
                      CategoryTheory.CategoryStruct.comp (x.const y i) f = x.const z ((Hom.toOrderHom f) i)
                      theorem SimplexCategory.const_fac_thru_zero (n m : SimplexCategory) (i : Fin (m.len + 1)) :
                      n.const m i = CategoryTheory.CategoryStruct.comp (n.const (mk 0) 0) ((mk 0).const m i)
                      theorem SimplexCategory.Hom.ext_zero_left {n : SimplexCategory} (f g : SimplexCategory.mk 0 n) (h0 : (toOrderHom f) 0 = (toOrderHom g) 0 := by rfl) :
                      f = g
                      theorem SimplexCategory.eq_const_of_zero {n : SimplexCategory} (f : mk 0 n) :
                      f = (mk 0).const n ((Hom.toOrderHom f) 0)
                      theorem SimplexCategory.exists_eq_const_of_zero {n : SimplexCategory} (f : mk 0 n) :
                      ∃ (a : Fin (n.len + 1)), f = (mk 0).const n a
                      theorem SimplexCategory.eq_const_to_zero {n : SimplexCategory} (f : n mk 0) :
                      f = n.const (mk 0) 0
                      theorem SimplexCategory.Hom.ext_one_left {n : SimplexCategory} (f g : SimplexCategory.mk 1 n) (h0 : (toOrderHom f) 0 = (toOrderHom g) 0 := by rfl) (h1 : (toOrderHom f) 1 = (toOrderHom g) 1 := by rfl) :
                      f = g
                      theorem SimplexCategory.eq_of_one_to_one (f : mk 1 mk 1) :
                      (∃ (a : Fin ((mk 1).len + 1)), f = (mk 1).const (mk 1) a) f = CategoryTheory.CategoryStruct.id (mk 1)
                      def SimplexCategory.mkHom {n m : } (f : Fin (n + 1) →o Fin (m + 1)) :
                      mk n mk m

                      Make a morphism [n] ⟶ [m] from a monotone map between fin's. This is useful for constructing morphisms between [n] directly without identifying n with [n].len.

                      Equations
                      Instances For
                        def SimplexCategory.mkOfLe {n : } (i j : Fin (n + 1)) (h : i j) :
                        mk 1 mk n

                        The morphism [1] ⟶ [n] that picks out a specified h : i ≤ j in Fin (n+1).

                        Equations
                        Instances For
                          @[simp]
                          theorem SimplexCategory.mkOfLe_refl {n : } (j : Fin (n + 1)) :
                          mkOfLe j j = (mk 1).const (mk n) j

                          The morphism [1] ⟶ [n] that picks out the "diagonal composite" edge

                          Equations
                          Instances For
                            def SimplexCategory.intervalEdge {n : } (j l : ) (hjl : j + l n) :
                            mk 1 mk n

                            The morphism [1] ⟶ [n] that picks out the edge spanning the interval from j to j + l.

                            Equations
                            Instances For
                              def SimplexCategory.mkOfSucc {n : } (i : Fin n) :
                              mk 1 mk n

                              The morphism [1] ⟶ [n] that picks out the arrow i ⟶ i+1 in Fin (n+1).

                              Equations
                              Instances For
                                @[simp]
                                def SimplexCategory.mkOfLeComp {n : } (i j k : Fin (n + 1)) (h₁ : i j) (h₂ : j k) :
                                mk 2 mk n

                                The morphism [2] ⟶ [n] that picks out a specified composite of morphisms in Fin (n+1).

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def SimplexCategory.subinterval {n : } (j l : ) (hjl : j + l n) :
                                  mk l mk n

                                  The "inert" morphism associated to a subinterval j ≤ i ≤ j + l of Fin (n + 1).

                                  Equations
                                  Instances For
                                    theorem SimplexCategory.const_subinterval_eq {n : } (j l : ) (hjl : j + l n) (i : Fin (l + 1)) :
                                    CategoryTheory.CategoryStruct.comp ((mk 0).const (mk l) i) (subinterval j l hjl) = (mk 0).const (mk n) j + i,
                                    @[simp]
                                    theorem SimplexCategory.mkOfSucc_subinterval_eq {n : } (j l : ) (hjl : j + l n) (i : Fin l) :
                                    @[simp]

                                    Generating maps for the simplex category #

                                    TODO: prove that the simplex category is equivalent to one given by the following generators and relations.

                                    def SimplexCategory.δ {n : } (i : Fin (n + 2)) :
                                    mk n mk (n + 1)

                                    The i-th face map from [n] to [n+1]

                                    Equations
                                    Instances For
                                      def SimplexCategory.σ {n : } (i : Fin (n + 1)) :
                                      mk (n + 1) mk n

                                      The i-th degeneracy map from [n+1] to [n]

                                      Equations
                                      Instances For
                                        theorem SimplexCategory.δ_comp_δ {n : } {i j : Fin (n + 2)} (H : i j) :

                                        The generic case of the first simplicial identity

                                        theorem SimplexCategory.δ_comp_δ' {n : } {i : Fin (n + 2)} {j : Fin (n + 3)} (H : i.castSucc < j) :
                                        theorem SimplexCategory.δ_comp_δ'' {n : } {i : Fin (n + 3)} {j : Fin (n + 2)} (H : i j.castSucc) :

                                        The special case of the first simplicial identity

                                        theorem SimplexCategory.δ_comp_δ_self' {n : } {i : Fin (n + 2)} {j : Fin (n + 3)} (H : j = i.castSucc) :
                                        theorem SimplexCategory.δ_comp_σ_of_le {n : } {i : Fin (n + 2)} {j : Fin (n + 1)} (H : i j.castSucc) :

                                        The second simplicial identity

                                        The first part of the third simplicial identity

                                        theorem SimplexCategory.δ_comp_σ_self' {n : } {j : Fin (n + 2)} {i : Fin (n + 1)} (H : j = i.castSucc) :
                                        theorem SimplexCategory.δ_comp_σ_self'_assoc {n : } {j : Fin (n + 2)} {i : Fin (n + 1)} (H : j = i.castSucc) {Z : SimplexCategory} (h : mk n Z) :

                                        The second part of the third simplicial identity

                                        theorem SimplexCategory.δ_comp_σ_of_gt {n : } {i : Fin (n + 2)} {j : Fin (n + 1)} (H : j.castSucc < i) :

                                        The fourth simplicial identity

                                        theorem SimplexCategory.δ_comp_σ_of_gt' {n : } {i : Fin (n + 3)} {j : Fin (n + 2)} (H : j.succ < i) :
                                        theorem SimplexCategory.σ_comp_σ {n : } {i j : Fin (n + 1)} (H : i j) :

                                        The fifth simplicial identity

                                        def SimplexCategory.factor_δ {m n : } (f : mk m mk (n + 1)) (j : Fin (n + 2)) :
                                        mk m mk n

                                        If f : [m] ⟶ [n+1] is a morphism and j is not in the range of f, then factor_δ f j is a morphism [m] ⟶ [n] such that factor_δ f j ≫ δ j = f (as witnessed by factor_δ_spec).

                                        Equations
                                        Instances For
                                          theorem SimplexCategory.factor_δ_spec {m n : } (f : mk m mk (n + 1)) (j : Fin (n + 2)) (hj : ∀ (k : Fin (m + 1)), (Hom.toOrderHom f) k j) :
                                          @[simp]
                                          theorem SimplexCategory.δ_zero_mkOfSucc {n : } (i : Fin n) :
                                          CategoryTheory.CategoryStruct.comp (δ 0) (mkOfSucc i) = (mk 0).const (mk n) i.succ
                                          @[simp]
                                          theorem SimplexCategory.δ_one_mkOfSucc {n : } (i : Fin n) :
                                          CategoryTheory.CategoryStruct.comp (δ 1) (mkOfSucc i) = (mk 0).const (mk n) i.castSucc
                                          theorem SimplexCategory.mkOfSucc_δ_lt {n : } {i : Fin n} {j : Fin (n + 2)} (h : i.succ.castSucc < j) :

                                          If i + 1 < j, mkOfSucc i ≫ δ j is the morphism [1] ⟶ [n] that sends 0 and 1 to i and i + 1, respectively.

                                          theorem SimplexCategory.mkOfSucc_δ_gt {n : } {i : Fin n} {j : Fin (n + 2)} (h : j < i.succ.castSucc) :

                                          If i + 1 > j, mkOfSucc i ≫ δ j is the morphism [1] ⟶ [n] that sends 0 and 1 to i + 1 and i + 2, respectively.

                                          theorem SimplexCategory.mkOfSucc_δ_eq {n : } {i : Fin n} {j : Fin (n + 2)} (h : j = i.succ.castSucc) :

                                          If i + 1 = j, mkOfSucc i ≫ δ j is the morphism [1] ⟶ [n] that sends 0 and 1 to i and i + 2, respectively.

                                          theorem SimplexCategory.eq_of_one_to_two (f : mk 1 mk 2) :
                                          f = δ 0 f = δ 1 f = δ 2 ∃ (a : Fin ((mk 2).len + 1)), f = (mk 1).const (mk 2) a

                                          The functor that exhibits SimplexCategory as skeleton of NonemptyFinLinOrd

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

                                            The truncated simplex category.

                                            Equations
                                            Instances For

                                              The fully faithful inclusion of the truncated simplex category into the usual simplex category.

                                              Equations
                                              Instances For
                                                noncomputable def SimplexCategory.Truncated.inclusion.fullyFaithful (n : ) :
                                                (inclusion n).op.FullyFaithful

                                                A proof that the full subcategory inclusion is fully faithful.

                                                Equations
                                                Instances For
                                                  theorem SimplexCategory.Truncated.Hom.ext {n : } {a b : Truncated n} (f g : a b) :
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.

                                                  A morphism in SimplexCategory is a monomorphism precisely when it is an injective function

                                                  A morphism in SimplexCategory is an epimorphism if and only if it is a surjective function

                                                  theorem SimplexCategory.len_le_of_mono {x y : SimplexCategory} {f : x y} :
                                                  CategoryTheory.Mono fx.len y.len

                                                  A monomorphism in SimplexCategory must increase lengths

                                                  theorem SimplexCategory.le_of_mono {n m : } {f : mk n mk m} :
                                                  theorem SimplexCategory.len_le_of_epi {x y : SimplexCategory} {f : x y} :
                                                  CategoryTheory.Epi fy.len x.len

                                                  An epimorphism in SimplexCategory must decrease lengths

                                                  theorem SimplexCategory.le_of_epi {n m : } {f : mk n mk m} :
                                                  def SimplexCategory.orderIsoOfIso {x y : SimplexCategory} (e : x y) :
                                                  Fin (x.len + 1) ≃o Fin (y.len + 1)

                                                  An isomorphism in SimplexCategory induces an OrderIso.

                                                  Equations
                                                  Instances For
                                                    theorem SimplexCategory.eq_σ_comp_of_not_injective' {n : } {Δ' : SimplexCategory} (θ : mk (n + 1) Δ') (i : Fin (n + 1)) (hi : (Hom.toOrderHom θ) i.castSucc = (Hom.toOrderHom θ) i.succ) :
                                                    ∃ (θ' : mk n Δ'), θ = CategoryTheory.CategoryStruct.comp (σ i) θ'
                                                    theorem SimplexCategory.eq_σ_comp_of_not_injective {n : } {Δ' : SimplexCategory} (θ : mk (n + 1) Δ') (hθ : ¬Function.Injective (Hom.toOrderHom θ)) :
                                                    ∃ (i : Fin (n + 1)) (θ' : mk n Δ'), θ = CategoryTheory.CategoryStruct.comp (σ i) θ'
                                                    theorem SimplexCategory.eq_comp_δ_of_not_surjective' {n : } {Δ : SimplexCategory} (θ : Δ mk (n + 1)) (i : Fin (n + 2)) (hi : ∀ (x : Fin (Δ.len + 1)), (Hom.toOrderHom θ) x i) :
                                                    ∃ (θ' : Δ mk n), θ = CategoryTheory.CategoryStruct.comp θ' (δ i)
                                                    theorem SimplexCategory.eq_comp_δ_of_not_surjective {n : } {Δ : SimplexCategory} (θ : Δ mk (n + 1)) (hθ : ¬Function.Surjective (Hom.toOrderHom θ)) :
                                                    ∃ (i : Fin (n + 2)) (θ' : Δ mk n), θ = CategoryTheory.CategoryStruct.comp θ' (δ i)
                                                    theorem SimplexCategory.eq_σ_of_epi {n : } (θ : mk (n + 1) mk n) [CategoryTheory.Epi θ] :
                                                    ∃ (i : Fin (n + 1)), θ = σ i
                                                    theorem SimplexCategory.eq_δ_of_mono {n : } (θ : mk n mk (n + 1)) [CategoryTheory.Mono θ] :
                                                    ∃ (i : Fin (n + 2)), θ = δ i
                                                    theorem SimplexCategory.len_lt_of_mono {Δ' Δ : SimplexCategory} (i : Δ' Δ) [hi : CategoryTheory.Mono i] (hi' : Δ Δ') :
                                                    Δ'.len < Δ.len
                                                    theorem SimplexCategory.image_eq {Δ Δ' Δ'' : SimplexCategory} {φ : Δ Δ''} {e : Δ Δ'} [CategoryTheory.Epi e] {i : Δ' Δ''} [CategoryTheory.Mono i] (fac : CategoryTheory.CategoryStruct.comp e i = φ) :

                                                    This functor SimplexCategory ⥤ Cat sends [n] (for n : ℕ) to the category attached to the ordered set {0, 1, ..., n}

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      @[simp]
                                                      theorem SimplexCategory.toCat_map {X✝ Y✝ : SimplexCategory} (f : X✝ Y✝) :
                                                      toCat.map f = .functor