Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 65e7646

Browse files
committed
feat(algebraic_topology): cosimplicial objects (#7614)
Dualize the existing API for `simplicial_object` to provide `cosimplicial_object`, and move the contents of LTE's `for_mathlib/simplicial/augmented.lean` to mathlib. Co-authored-by: Adam Topaz <github@adamtopaz.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent 14802d6 commit 65e7646

File tree

1 file changed

+152
-2
lines changed

1 file changed

+152
-2
lines changed

src/algebraic_topology/simplicial_object.lean

Lines changed: 152 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ import category_theory.comma
1414
# Simplicial objects in a category.
1515
1616
A simplicial object in a category `C` is a `C`-valued presheaf on `simplex_category`.
17+
(Similarly a cosimplicial object is functor `simplex_category ⥤ C`.)
1718
1819
Use the notation `X _[n]` in the `simplicial` locale to obtain the `n`-th term of a
19-
simplicial object `X`, where `n` is a natural number.
20+
(co)simplicial object `X`, where `n` is a natural number.
2021
2122
-/
2223

@@ -136,7 +137,7 @@ section skeleton
136137

137138
/-- The skeleton functor from simplicial objects to truncated simplicial objects. -/
138139
def sk (n : ℕ) : simplicial_object C ⥤ simplicial_object.truncated C n :=
139-
(whiskering_left _ _ _).obj (simplex_category.truncated.inclusion).op
140+
(whiskering_left _ _ _).obj simplex_category.truncated.inclusion.op
140141

141142
end skeleton
142143

@@ -151,6 +152,155 @@ def augmented := comma (𝟭 (simplicial_object C)) (const C)
151152

152153
variable {C}
153154

155+
namespace augmented
156+
157+
/-- Drop the augmentation. -/
158+
@[simps]
159+
def drop : augmented C ⥤ simplicial_object C := comma.fst _ _
160+
161+
/-- The point of the augmentation. -/
162+
@[simps]
163+
def point : augmented C ⥤ C := comma.snd _ _
164+
165+
end augmented
166+
154167
end simplicial_object
155168

169+
/-- Cosimplicial objects. -/
170+
@[derive category, nolint has_inhabited_instance]
171+
def cosimplicial_object := simplex_category.{v} ⥤ C
172+
173+
namespace cosimplicial_object
174+
175+
localized
176+
"notation X `_[`:1000 n `]` :=
177+
(X : category_theory.cosimplicial_object _).obj (simplex_category.mk n)"
178+
in simplicial
179+
180+
instance {J : Type v} [small_category J] [has_limits_of_shape J C] :
181+
has_limits_of_shape J (cosimplicial_object C) := by {dsimp [cosimplicial_object], apply_instance}
182+
183+
instance [has_limits C] : has_limits (cosimplicial_object C) := ⟨infer_instance⟩
184+
185+
instance {J : Type v} [small_category J] [has_colimits_of_shape J C] :
186+
has_colimits_of_shape J (cosimplicial_object C) :=
187+
by {dsimp [cosimplicial_object], apply_instance}
188+
189+
instance [has_colimits C] : has_colimits (cosimplicial_object C) := ⟨infer_instance⟩
190+
191+
variables {C} (X : cosimplicial_object C)
192+
193+
/-- Coface maps for a cosimplicial object. -/
194+
def δ {n} (i : fin (n+2)) : X _[n] ⟶ X _[n+1] :=
195+
X.map (simplex_category.δ i)
196+
197+
/-- Codegeneracy maps for a cosimplicial object. -/
198+
def σ {n} (i : fin (n+1)) : X _[n+1] ⟶ X _[n] :=
199+
X.map (simplex_category.σ i)
200+
201+
/-- Isomorphisms from identities in ℕ. -/
202+
def eq_to_iso {n m : ℕ} (h : n = m) : X _[n] ≅ X _[m] :=
203+
X.map_iso (eq_to_iso (by rw h))
204+
205+
@[simp] lemma eq_to_iso_refl {n : ℕ} (h : n = n) : X.eq_to_iso h = iso.refl _ :=
206+
by { ext, simp [eq_to_iso], }
207+
208+
209+
/-- The generic case of the first cosimplicial identity -/
210+
lemma δ_comp_δ {n} {i j : fin (n+2)} (H : i ≤ j) :
211+
X.δ i ≫ X.δ j.succ = X.δ j ≫ X.δ i.cast_succ :=
212+
by { dsimp [δ], simp only [←X.map_comp, simplex_category.δ_comp_δ H], }
213+
214+
/-- The special case of the first cosimplicial identity -/
215+
lemma δ_comp_δ_self {n} {i : fin (n+2)} : X.δ i ≫ X.δ i.cast_succ = X.δ i ≫ X.δ i.succ :=
216+
by { dsimp [δ], simp only [←X.map_comp, simplex_category.δ_comp_δ_self] }
217+
218+
/-- The second cosimplicial identity -/
219+
lemma δ_comp_σ_of_le {n} {i : fin (n+2)} {j : fin (n+1)} (H : i ≤ j.cast_succ) :
220+
X.δ i.cast_succ ≫ X.σ j.succ = X.σ j ≫ X.δ i :=
221+
by { dsimp [δ, σ], simp only [←X.map_comp, simplex_category.δ_comp_σ_of_le H] }
222+
223+
/-- The first part of the third cosimplicial identity -/
224+
lemma δ_comp_σ_self {n} {i : fin (n+1)} :
225+
X.δ i.cast_succ ≫ X.σ i = 𝟙 _ :=
226+
begin
227+
dsimp [δ, σ],
228+
simp only [←X.map_comp, simplex_category.δ_comp_σ_self, X.map_id],
229+
end
230+
231+
/-- The second part of the third cosimplicial identity -/
232+
lemma δ_comp_σ_succ {n} {i : fin (n+1)} :
233+
X.δ i.succ ≫ X.σ i = 𝟙 _ :=
234+
begin
235+
dsimp [δ, σ],
236+
simp only [←X.map_comp, simplex_category.δ_comp_σ_succ, X.map_id],
237+
end
238+
239+
/-- The fourth cosimplicial identity -/
240+
lemma δ_comp_σ_of_gt {n} {i : fin (n+2)} {j : fin (n+1)} (H : j.cast_succ < i) :
241+
X.δ i.succ ≫ X.σ j.cast_succ = X.σ j ≫ X.δ i :=
242+
by { dsimp [δ, σ], simp only [←X.map_comp, simplex_category.δ_comp_σ_of_gt H] }
243+
244+
/-- The fifth cosimplicial identity -/
245+
lemma σ_comp_σ {n} {i j : fin (n+1)} (H : i ≤ j) :
246+
X.σ i.cast_succ ≫ X.σ j = X.σ j.succ ≫ X.σ i :=
247+
by { dsimp [δ, σ], simp only [←X.map_comp, simplex_category.σ_comp_σ H] }
248+
249+
variable (C)
250+
251+
/-- Truncated cosimplicial objects. -/
252+
@[derive category, nolint has_inhabited_instance]
253+
def truncated (n : ℕ) := simplex_category.truncated.{v} n ⥤ C
254+
255+
variable {C}
256+
257+
namespace truncated
258+
259+
instance {n} {J : Type v} [small_category J] [has_limits_of_shape J C] :
260+
has_limits_of_shape J (cosimplicial_object.truncated C n) :=
261+
by {dsimp [truncated], apply_instance}
262+
263+
instance {n} [has_limits C] : has_limits (cosimplicial_object.truncated C n) := ⟨infer_instance⟩
264+
265+
instance {n} {J : Type v} [small_category J] [has_colimits_of_shape J C] :
266+
has_colimits_of_shape J (cosimplicial_object.truncated C n) :=
267+
by {dsimp [truncated], apply_instance}
268+
269+
instance {n} [has_colimits C] : has_colimits (cosimplicial_object.truncated C n) := ⟨infer_instance⟩
270+
271+
end truncated
272+
273+
section skeleton
274+
275+
/-- The skeleton functor from cosimplicial objects to truncated cosimplicial objects. -/
276+
def sk (n : ℕ) : cosimplicial_object C ⥤ cosimplicial_object.truncated C n :=
277+
(whiskering_left _ _ _).obj simplex_category.truncated.inclusion
278+
279+
end skeleton
280+
281+
variable (C)
282+
283+
/-- The constant cosimplicial object. -/
284+
abbreviation const : C ⥤ cosimplicial_object C := category_theory.functor.const _
285+
286+
/-- Augmented cosimplicial objects. -/
287+
@[derive category, nolint has_inhabited_instance]
288+
def augmented := comma (const C) (𝟭 (cosimplicial_object C))
289+
290+
variable {C}
291+
292+
namespace augmented
293+
294+
/-- Drop the augmentation. -/
295+
@[simps]
296+
def drop : augmented C ⥤ cosimplicial_object C := comma.snd _ _
297+
298+
/-- The point of the augmentation. -/
299+
@[simps]
300+
def point : augmented C ⥤ C := comma.fst _ _
301+
302+
end augmented
303+
304+
end cosimplicial_object
305+
156306
end category_theory

0 commit comments

Comments
 (0)