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

Commit 63721b2

Browse files
committed
feat(algebraic_topology/dold_kan): The Dold-Kan equivalence for pseudoabelian categories (#17925)
1 parent 3b52265 commit 63721b2

File tree

2 files changed

+126
-0
lines changed

2 files changed

+126
-0
lines changed
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/-
2+
Copyright (c) 2022 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+
7+
import algebraic_topology.dold_kan.equivalence_additive
8+
import algebraic_topology.dold_kan.compatibility
9+
import category_theory.idempotents.simplicial_object
10+
11+
/-!
12+
13+
# The Dold-Kan correspondence for pseudoabelian categories
14+
15+
In this file, for any idempotent complete additive category `C`,
16+
the Dold-Kan equivalence
17+
`idempotents.dold_kan.equivalence C : simplicial_object C ≌ chain_complex C ℕ`
18+
is obtained. It is deduced from the equivalence
19+
`preadditive.dold_kan.equivalence` between the respective idempotent
20+
completions of these categories using the fact that when `C` is idempotent complete,
21+
then both `simplicial_object C` and `chain_complex C ℕ` are idempotent complete.
22+
23+
The construction of `idempotents.dold_kan.equivalence` uses the tools
24+
introduced in the file `compatibility.lean`. Doing so, the functor
25+
`idempotents.dold_kan.N` of the equivalence is
26+
the composition of `N₁ : simplicial_object C ⥤ karoubi (chain_complex C ℕ)`
27+
(defined in `functor_n.lean`) and the inverse of the equivalence
28+
`chain_complex C ℕ ≌ karoubi (chain_complex C ℕ)`. The functor
29+
`idempotents.dold_kan.Γ` of the equivalence is by definition the functor
30+
`Γ₀` introduced in `functor_gamma.lean`.
31+
32+
-/
33+
34+
noncomputable theory
35+
36+
open category_theory category_theory.category category_theory.limits category_theory.idempotents
37+
38+
variables {C : Type*} [category C] [preadditive C] [is_idempotent_complete C]
39+
[has_finite_coproducts C]
40+
41+
namespace category_theory
42+
43+
namespace idempotents
44+
45+
namespace dold_kan
46+
47+
open algebraic_topology.dold_kan
48+
49+
/-- The functor `N` for the equivalence is obtained by composing
50+
`N' : simplicial_object C ⥤ karoubi (chain_complex C ℕ)` and the inverse
51+
of the equivalence `chain_complex C ℕ ≌ karoubi (chain_complex C ℕ)`. -/
52+
@[simps, nolint unused_arguments]
53+
def N : simplicial_object C ⥤ chain_complex C ℕ :=
54+
N₁ ⋙ (to_karoubi_equivalence _).inverse
55+
56+
/-- The functor `Γ` for the equivalence is `Γ'`. -/
57+
@[simps, nolint unused_arguments]
58+
def Γ : chain_complex C ℕ ⥤ simplicial_object C := Γ₀
59+
60+
lemma hN₁ : (to_karoubi_equivalence (simplicial_object C)).functor ⋙
61+
preadditive.dold_kan.equivalence.functor = N₁ :=
62+
functor.congr_obj (functor_extension₁_comp_whiskering_left_to_karoubi _ _) N₁
63+
64+
lemma hΓ₀ : (to_karoubi_equivalence (chain_complex C ℕ)).functor ⋙
65+
preadditive.dold_kan.equivalence.inverse = Γ ⋙ (to_karoubi_equivalence _).functor :=
66+
functor.congr_obj (functor_extension₂_comp_whiskering_left_to_karoubi _ _) Γ₀
67+
68+
/-- The Dold-Kan equivalence for pseudoabelian categories given
69+
by the functors `N` and `Γ`. It is obtained by applying the results in
70+
`compatibility.lean` to the equivalence `preadditive.dold_kan.equivalence`. -/
71+
def equivalence : simplicial_object C ≌ chain_complex C ℕ :=
72+
compatibility.equivalence (eq_to_iso hN₁) (eq_to_iso hΓ₀)
73+
74+
lemma equivalence_functor : (equivalence : simplicial_object C ≌ _).functor = N := rfl
75+
lemma equivalence_inverse : (equivalence : simplicial_object C ≌ _).inverse = Γ := rfl
76+
77+
/-- The natural isomorphism `NΓ' satisfies the compatibility that is needed
78+
for the construction of our counit isomorphism `η` -/
79+
lemma : compatibility.τ₀ =
80+
compatibility.τ₁ (eq_to_iso hN₁) (eq_to_iso hΓ₀)
81+
(N₁Γ₀ : Γ ⋙ N₁ ≅ (to_karoubi_equivalence (chain_complex C ℕ)).functor) :=
82+
begin
83+
ext K : 3,
84+
simpa only [compatibility.τ₀_hom_app, compatibility.τ₁_hom_app, eq_to_iso.hom,
85+
preadditive.dold_kan.equivalence_counit_iso, N₂Γ₂_to_karoubi_iso_hom, eq_to_hom_map,
86+
eq_to_hom_trans_assoc, eq_to_hom_app] using N₂Γ₂_compatible_with_N₁Γ₀ K,
87+
end
88+
89+
/-- The counit isomorphism induced by `N₁Γ₀` -/
90+
@[simps]
91+
def η : Γ ⋙ N ≅ 𝟭 (chain_complex C ℕ) := compatibility.equivalence_counit_iso
92+
(N₁Γ₀ : (Γ : chain_complex C ℕ ⥤ _ ) ⋙ N₁ ≅ (to_karoubi_equivalence _).functor)
93+
94+
lemma equivalence_counit_iso :
95+
dold_kan.equivalence.counit_iso = (η : Γ ⋙ N ≅ 𝟭 (chain_complex C ℕ)) :=
96+
compatibility.equivalence_counit_iso_eq hη
97+
98+
lemma : compatibility.υ (eq_to_iso hN₁) =
99+
(Γ₂N₁ : (to_karoubi_equivalence _).functor ≅ (N₁ : simplicial_object C ⥤ _) ⋙
100+
preadditive.dold_kan.equivalence.inverse) :=
101+
begin
102+
ext X : 4,
103+
erw [nat_trans.comp_app, compatibility_Γ₂N₁_Γ₂N₂_nat_trans],
104+
simp only [compatibility.υ_hom_app, compatibility_Γ₂N₁_Γ₂N₂,
105+
preadditive.dold_kan.equivalence_unit_iso, Γ₂N₂, iso.symm_hom, as_iso_inv, assoc],
106+
erw [← nat_trans.comp_app_assoc, is_iso.hom_inv_id],
107+
dsimp,
108+
simpa only [id_comp, eq_to_hom_app, eq_to_hom_map, eq_to_hom_trans],
109+
end
110+
111+
/-- The unit isomorphism induced by `Γ₂N₁`. -/
112+
def ε : 𝟭 (simplicial_object C) ≅ N ⋙ Γ :=
113+
compatibility.equivalence_unit_iso (eq_to_iso hΓ₀) Γ₂N₁
114+
115+
lemma equivalence_unit_iso : dold_kan.equivalence.unit_iso =
116+
(ε : 𝟭 (simplicial_object C) ≅ N ⋙ Γ) :=
117+
compatibility.equivalence_unit_iso_eq hε
118+
119+
end dold_kan
120+
121+
end idempotents
122+
123+
end category_theory

src/category_theory/functor/category.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ lemma congr_app {α β : F ⟶ G} (h : α = β) (X : C) : α.app X = β.app X :=
6060
@[simp] lemma id_app (F : C ⥤ D) (X : C) : (𝟙 F : F ⟶ F).app X = 𝟙 (F.obj X) := rfl
6161
@[simp] lemma comp_app {F G H : C ⥤ D} (α : F ⟶ G) (β : G ⟶ H) (X : C) :
6262
(α ≫ β).app X = α.app X ≫ β.app X := rfl
63+
lemma comp_app_assoc {F G H : C ⥤ D} (α : F ⟶ G) (β : G ⟶ H) (X : C) {X' : D}
64+
(f : H.obj X ⟶ X') :
65+
(α ≫ β).app X ≫ f = α.app X ≫ β.app X ≫ f := by rw [comp_app, assoc]
6366

6467
lemma app_naturality {F G : C ⥤ (D ⥤ E)} (T : F ⟶ G) (X : C) {Y Z : D} (f : Y ⟶ Z) :
6568
((F.obj X).map f) ≫ ((T.app X).app Z) = ((T.app X).app Y) ≫ ((G.obj X).map f) :=

0 commit comments

Comments
 (0)