Skip to content

Commit 52c6445

Browse files
committed
feat(AlgebraicTopology): the simplex category (and its truncated versions) are generated by faces and degeneracies (#21828)
This allows to verify the naturality of morphisms between (truncated) (co)simplicial objects by checking only the naturality relative to the face and degeneracy maps. Note: this is mostly independent of #21749 as the latter proves a stronger result, but only for `SimplexCategory` (not `SimplexCategory.Truncated`), which is already great enough!
1 parent 29f215f commit 52c6445

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,7 @@ import Mathlib.AlgebraicTopology.RelativeCellComplex.AttachCells
11381138
import Mathlib.AlgebraicTopology.RelativeCellComplex.Basic
11391139
import Mathlib.AlgebraicTopology.SimplexCategory.Basic
11401140
import Mathlib.AlgebraicTopology.SimplexCategory.Defs
1141+
import Mathlib.AlgebraicTopology.SimplexCategory.MorphismProperty
11411142
import Mathlib.AlgebraicTopology.SimplicialCategory.Basic
11421143
import Mathlib.AlgebraicTopology.SimplicialCategory.SimplicialObject
11431144
import Mathlib.AlgebraicTopology.SimplicialNerve
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/-
2+
Copyright (c) 2025 Joël Riou. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Joël Riou
5+
-/
6+
import Mathlib.AlgebraicTopology.SimplexCategory.Basic
7+
import Mathlib.CategoryTheory.MorphismProperty.Composition
8+
9+
/-!
10+
# Properties of morphisms in the simplex category
11+
12+
In this file, we show that morphisms in the simplex category
13+
are generated by faces and degeneracies. This is stated by
14+
saying that if `W : MorphismProperty SimplexCategory` is
15+
multiplicative, and contains faces and degeneracies, then `W = ⊤`.
16+
This statement is deduced from a similar statement for
17+
the category `SimplexCategory.Truncated d`.
18+
19+
-/
20+
21+
open CategoryTheory
22+
23+
namespace SimplexCategory
24+
25+
lemma Truncated.morphismProperty_eq_top
26+
{d : ℕ} (W : MorphismProperty (Truncated d)) [W.IsMultiplicative]
27+
(δ_mem : ∀ (n : ℕ) (hn : n < d) (i : Fin (n + 2)),
28+
W (SimplexCategory.δ (n := n) i : ⟨.mk n, by dsimp; omega⟩ ⟶
29+
⟨.mk (n + 1), by dsimp; omega⟩))
30+
(σ_mem : ∀ (n : ℕ) (hn : n < d) (i : Fin (n + 1)),
31+
W (SimplexCategory.σ (n := n) i : ⟨.mk (n + 1), by dsimp; omega⟩ ⟶
32+
⟨.mk n, by dsimp; omega⟩)) :
33+
W = ⊤ := by
34+
ext ⟨a, ha⟩ ⟨b, hb⟩ f
35+
simp only [MorphismProperty.top_apply, iff_true]
36+
induction' a using SimplexCategory.rec with a
37+
induction' b using SimplexCategory.rec with b
38+
dsimp at ha hb
39+
generalize h : a + b = c
40+
induction c generalizing a b with
41+
| zero =>
42+
obtain rfl : a = 0 := by omega
43+
obtain rfl : b = 0 := by omega
44+
obtain rfl : f = 𝟙 _ := by
45+
ext i : 3
46+
apply Subsingleton.elim (α := Fin 1)
47+
apply MorphismProperty.id_mem
48+
| succ c hc =>
49+
let f' : mk a ⟶ mk b := f
50+
by_cases h₁ : Function.Surjective f'.toOrderHom; swap
51+
· obtain _ | b := b
52+
· exact (h₁ (fun _ ↦ ⟨0, Subsingleton.elim (α := Fin 1) _ _⟩)).elim
53+
· obtain ⟨i, g', hf'⟩ := eq_comp_δ_of_not_surjective _ h₁
54+
obtain rfl : f = (g' : _ ⟶ ⟨mk b, by dsimp; omega⟩) ≫ δ i := hf'
55+
exact W.comp_mem _ _ (hc _ _ _ _ _ (by omega))
56+
(δ_mem _ (by omega) _)
57+
by_cases h₂ : Function.Injective f'.toOrderHom; swap
58+
· obtain _ | a := a
59+
· exact (h₂ (Function.injective_of_subsingleton (α := Fin 1) _)).elim
60+
· obtain ⟨i, g', hf'⟩ := eq_σ_comp_of_not_injective _ h₂
61+
obtain rfl : f = (by exact σ i) ≫ (g' : ⟨mk a, by dsimp; omega⟩ ⟶ _) := hf'
62+
exact W.comp_mem _ _ (σ_mem _ (by omega) _) (hc _ _ _ _ _ (by omega))
63+
rw [← epi_iff_surjective] at h₁
64+
rw [← mono_iff_injective] at h₂
65+
obtain rfl : a = b := le_antisymm (len_le_of_mono h₂) (len_le_of_epi h₁)
66+
obtain rfl : f = 𝟙 _ := eq_id_of_mono f'
67+
apply W.id_mem
68+
69+
lemma morphismProperty_eq_top
70+
(W : MorphismProperty SimplexCategory) [W.IsMultiplicative]
71+
(δ_mem : ∀ {n : ℕ} (i : Fin (n + 2)), W (SimplexCategory.δ i))
72+
(σ_mem : ∀ {n : ℕ} (i : Fin (n + 1)), W (SimplexCategory.σ i)) :
73+
W = ⊤ := by
74+
have hW (d : ℕ) : W.inverseImage (Truncated.inclusion d) = ⊤ :=
75+
Truncated.morphismProperty_eq_top _ (fun _ _ i ↦ δ_mem i)
76+
(fun _ _ i ↦ σ_mem i)
77+
ext a b f
78+
simp only [MorphismProperty.top_apply, iff_true]
79+
change W.inverseImage (Truncated.inclusion _)
80+
(f : ⟨a, Nat.le_max_left _ _⟩ ⟶ ⟨b, Nat.le_max_right _ _⟩)
81+
simp only [hW, MorphismProperty.top_apply]
82+
83+
end SimplexCategory

Mathlib/CategoryTheory/MorphismProperty/Basic.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ lemma ext (W W' : MorphismProperty C) (h : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), W f
6161
lemma top_apply {X Y : C} (f : X ⟶ Y) : (⊤ : MorphismProperty C) f := by
6262
simp only [top_eq]
6363

64+
lemma of_eq_top {P : MorphismProperty C} (h : P = ⊤) {X Y : C} (f : X ⟶ Y) : P f := by
65+
simp [h]
66+
6467
@[simp]
6568
lemma sSup_iff (S : Set (MorphismProperty C)) {X Y : C} (f : X ⟶ Y) :
6669
sSup S f ↔ ∃ (W : S), W.1 f := by

Mathlib/CategoryTheory/MorphismProperty/Composition.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,10 @@ instance {P : MorphismProperty D} [P.IsMultiplicative] (F : C ⥤ D) :
202202
instance inf {P Q : MorphismProperty C} [P.IsMultiplicative] [Q.IsMultiplicative] :
203203
(P ⊓ Q).IsMultiplicative where
204204

205+
instance naturalityProperty {F₁ F₂ : C ⥤ D} (app : ∀ X, F₁.obj X ⟶ F₂.obj X) :
206+
(naturalityProperty app).IsMultiplicative where
207+
id_mem _ := by simp
208+
205209
end IsMultiplicative
206210

207211
/-- A class of morphisms `W` has the of-postcomp property wrt. `W'` if whenever

0 commit comments

Comments
 (0)