Documentation

Mathlib.AlgebraicTopology.SimplexCategory.Basic

Basic properties of the simplex category #

In Mathlib/AlgebraicTopology/SimplexCategory/Defs.lean, we define the simplex category with objects and morphisms n ⟶ m the monotone maps from Fin (n + 1) to Fin (m + 1).

In this file, we define the generating maps for the simplex category, show that this category is equivalent to NonemptyFinLinOrd, and establish basic properties of its epimorphisms and monomorphisms.

@[implicit_reducible]
instance SimplexCategory.instDecidableEqHom {n m : SimplexCategory} :
DecidableEq (n m)
theorem SimplexCategory.congr_toOrderHom_apply {a b : SimplexCategory} {f g : a b} (h : f = g) (x : Fin (a.len + 1)) :
def SimplexCategory.const (x y : SimplexCategory) (i : Fin (y.len + 1)) :
x y

The constant morphism from ⦋0⦌.

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)) :
    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.exists_eq_const_of_zero {n : SimplexCategory} (f : mk 0 n) :
    ∃ (a : Fin (n.len + 1)), f = (mk 0).const n a
    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.

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

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

        The morphism ⦋1⦌ ⟶ ⦋n⦌ that picks out the "diagonal composite" edge

        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.

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

            Instances For
              @[simp]
              theorem SimplexCategory.mkOfSucc_homToOrderHom_zero {n : } (i : Fin n) :
              (Hom.toOrderHom (mkOfSucc i)) 0 = i.castSucc
              @[simp]
              theorem SimplexCategory.mkOfSucc_homToOrderHom_one {n : } (i : Fin n) :
              (Hom.toOrderHom (mkOfSucc i)) 1 = i.succ
              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).

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

                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]
                  theorem SimplexCategory.diag_subinterval_eq {n : } (j l : ) (hjl : j + l n) :

                  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⦌

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

                    The i-th degeneracy map from ⦋n+1⦌ to ⦋n⦌

                    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) :
                      theorem SimplexCategory.δ_comp_δ_self {n : } {i : Fin (n + 2)} :

                      The special case of the first simplicial identity

                      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

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

                      The second simplicial identity

                      The first part of the third 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

                      The second part of the third simplicial identity

                      theorem SimplexCategory.δ_comp_σ_succ' {n : } {j : Fin (n + 2)} {i : Fin (n + 1)} (H : j = i.succ) :
                      theorem SimplexCategory.δ_comp_σ_succ'_assoc {n : } {j : Fin (n + 2)} {i : Fin (n + 1)} (H : j = i.succ) {Z : SimplexCategory} (h : mk n Z) :
                      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_assoc {n : } {i : Fin (n + 2)} {j : Fin (n + 1)} (H : j.castSucc < i) {Z : SimplexCategory} (h : mk (n + 1) Z) :

                      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_σ_of_gt'_assoc {n : } {i : Fin (n + 3)} {j : Fin (n + 2)} (H : j.succ < i) {Z : SimplexCategory} (h : mk (n + 1) Z) :
                      theorem SimplexCategory.σ_comp_σ {n : } {i j : Fin (n + 1)} (H : i j) :

                      The fifth simplicial identity

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

                      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) :
                        @[simp]
                        theorem SimplexCategory.δ_one_mkOfSucc {n : } (i : Fin n) :
                        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) :
                        (∃ (i : Fin (1 + 2)), f = δ i) ∃ (a : Fin ((mk 2).len + 1)), f = (mk 1).const (mk 2) a
                        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 equivalence that exhibits SimplexCategory as skeleton of NonemptyFinLinOrd

                        Instances For
                          theorem SimplexCategory.mono_iff_injective {n m : SimplexCategory} {f : n m} :
                          CategoryTheory.Mono f Function.Injective (Hom.toOrderHom f)

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

                          theorem SimplexCategory.epi_iff_surjective {n m : SimplexCategory} {f : n m} :
                          CategoryTheory.Epi f Function.Surjective (Hom.toOrderHom f)

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

                          A monomorphism in SimplexCategory must increase lengths

                          theorem SimplexCategory.le_of_mono {n m : } (f : mk n mk m) [CategoryTheory.Mono f] :
                          n m

                          An epimorphism in SimplexCategory must decrease lengths

                          theorem SimplexCategory.le_of_epi {n m : } (f : mk n mk m) [CategoryTheory.Epi f] :
                          m n
                          theorem SimplexCategory.eq_of_isIso {n m : } (f : mk n mk m) [CategoryTheory.IsIso f] :
                          n = m
                          instance SimplexCategory.instEpiσ {n : } {i : Fin (n + 1)} :
                          instance SimplexCategory.instMonoδ {n : } {i : Fin (n + 2)} :
                          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.

                          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) Δ') ( : ¬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)) ( : ¬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 : Δ' Δ) [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}

                            Instances For
                              @[simp]
                              theorem SimplexCategory.toCat_map {X✝ Y✝ : SimplexCategory} (f : X✝ Y✝) :
                              theorem SimplexCategory.toCat.obj_eq_Fin (n : ) :
                              (toCat.obj (mk n)) = Fin (n + 1)
                              @[implicit_reducible]

                              The isomorphism between the terminal object in SimplexCategory and ⦋0⦌.

                              Instances For
                                theorem SimplexCategory.δ_injective {n : } :
                                Function.Injective δ
                                theorem SimplexCategory.σ_injective {n : } :
                                Function.Injective σ