Chain complexes supported in a single degree #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We define single V j c : V ⥤ homological_complex V c
,
which constructs complexes in V
of shape c
, supported in degree j
.
Similarly single₀ V : V ⥤ chain_complex V ℕ
is the special case for
ℕ
-indexed chain complexes, with the object supported in degree 0
,
but with better definitional properties.
In to_single₀_equiv
we characterize chain maps to a ℕ
-indexed complex concentrated in degree 0;
they are equivalent to { f : C.X 0 ⟶ X // C.d 1 0 ≫ f = 0 }
.
(This is useful translating between a projective resolution and
an augmented exact complex of projectives.)
The functor V ⥤ homological_complex V c
creating a chain complex supported in a single degree.
See also chain_complex.single₀ : V ⥤ chain_complex V ℕ
,
which has better definitional properties,
if you are working with ℕ
-indexed complexes.
Equations
- homological_complex.single V c j = {obj := λ (A : V), {X := λ (i : ι), ite (i = j) A 0, d := λ (i j_1 : ι), 0, shape' := _, d_comp_d' := _}, map := λ (A B : V) (f : A ⟶ B), {f := λ (i : ι), dite (i = j) (λ (h : i = j), category_theory.eq_to_hom _ ≫ f ≫ category_theory.eq_to_hom _) (λ (h : ¬i = j), 0), comm' := _}, map_id' := _, map_comp' := _}
Instances for homological_complex.single
The object in degree j
of (single V c h).obj A
is just A
.
Equations
Equations
- homological_complex.single.category_theory.full V c j = {preimage := λ (X Y : V) (f : (homological_complex.single V c j).obj X ⟶ (homological_complex.single V c j).obj Y), category_theory.eq_to_hom _ ≫ f.f j ≫ category_theory.eq_to_hom _, witness' := _}
chain_complex.single₀ V
is the embedding of V
into chain_complex V ℕ
as chain complexes supported in degree 0.
This is naturally isomorphic to single V _ 0
, but has better definitional properties.
Equations
- chain_complex.single₀ V = {obj := λ (X : V), {X := λ (n : ℕ), chain_complex.single₀._match_1 V X n, d := λ (i j : ℕ), 0, shape' := _, d_comp_d' := _}, map := λ (X Y : V) (f : X ⟶ Y), {f := λ (n : ℕ), chain_complex.single₀._match_2 V X Y f n, comm' := _}, map_id' := _, map_comp' := _}
- chain_complex.single₀._match_1 V X (n + 1) = 0
- chain_complex.single₀._match_1 V X 0 = X
- chain_complex.single₀._match_2 V X Y f (n + 1) = 0
- chain_complex.single₀._match_2 V X Y f 0 = f
Instances for chain_complex.single₀
Sending objects to chain complexes supported at 0
then taking 0
-th homology
is the same as doing nothing.
Equations
- chain_complex.homology_functor_0_single₀ V = category_theory.nat_iso.of_components (λ (X : V), homology.congr _ _ _ _ ≪≫ homology_zero_zero) _
Sending objects to chain complexes supported at 0
then taking (n+1)
-st homology
is the same as the zero functor.
Equations
- chain_complex.homology_functor_succ_single₀ V n = category_theory.nat_iso.of_components (λ (X : V), homology.congr _ _ _ _ ≪≫ homology_zero_zero ≪≫ _.iso_zero.symm) _
Morphisms from a ℕ
-indexed chain complex C
to a single object chain complex with X
concentrated in degree 0
are the same as morphisms f : C.X 0 ⟶ X
such that C.d 1 0 ≫ f = 0
.
Equations
- C.to_single₀_equiv X = {to_fun := λ (f : C ⟶ (chain_complex.single₀ V).obj X), ⟨f.f 0, _⟩, inv_fun := λ (f : {f // C.d 1 0 ≫ f = 0}), {f := λ (i : ℕ), chain_complex.to_single₀_equiv._match_1 C X f i, comm' := _}, left_inv := _, right_inv := _}
- chain_complex.to_single₀_equiv._match_1 C X f (n + 1) = 0
- chain_complex.to_single₀_equiv._match_1 C X f 0 = f.val
Morphisms from a single object chain complex with X
concentrated in degree 0
to a ℕ
-indexed chain complex C
are the same as morphisms f : X → C.X
.
Equations
- C.from_single₀_equiv X = {to_fun := λ (f : (chain_complex.single₀ V).obj X ⟶ C), f.f 0, inv_fun := λ (f : X ⟶ C.X 0), {f := λ (i : ℕ), chain_complex.from_single₀_equiv._match_1 C X f i, comm' := _}, left_inv := _, right_inv := _}
- chain_complex.from_single₀_equiv._match_1 C X f (n + 1) = 0
- chain_complex.from_single₀_equiv._match_1 C X f 0 = f
single₀
is the same as single V _ 0
.
Equations
- chain_complex.single₀_iso_single V = category_theory.nat_iso.of_components (λ (X : V), {hom := {f := λ (i : ℕ), i.cases_on (_.mpr (_.mp (𝟙 X))) (λ (i : ℕ), _.mpr (𝟙 0)), comm' := _}, inv := {f := λ (i : ℕ), i.cases_on (_.mpr (_.mp (𝟙 X))) (λ (i : ℕ), _.mpr (𝟙 0)), comm' := _}, hom_inv_id' := _, inv_hom_id' := _}) _
cochain_complex.single₀ V
is the embedding of V
into cochain_complex V ℕ
as cochain complexes supported in degree 0.
This is naturally isomorphic to single V _ 0
, but has better definitional properties.
Equations
- cochain_complex.single₀ V = {obj := λ (X : V), {X := λ (n : ℕ), cochain_complex.single₀._match_1 V X n, d := λ (i j : ℕ), 0, shape' := _, d_comp_d' := _}, map := λ (X Y : V) (f : X ⟶ Y), {f := λ (n : ℕ), cochain_complex.single₀._match_2 V X Y f n, comm' := _}, map_id' := _, map_comp' := _}
- cochain_complex.single₀._match_1 V X (n + 1) = 0
- cochain_complex.single₀._match_1 V X 0 = X
- cochain_complex.single₀._match_2 V X Y f (n + 1) = 0
- cochain_complex.single₀._match_2 V X Y f 0 = f
Instances for cochain_complex.single₀
Sending objects to cochain complexes supported at 0
then taking 0
-th homology
is the same as doing nothing.
Equations
- cochain_complex.homology_functor_0_single₀ V = category_theory.nat_iso.of_components (λ (X : V), homology.congr _ _ _ _ ≪≫ homology_zero_zero) _
Sending objects to cochain complexes supported at 0
then taking (n+1)
-st homology
is the same as the zero functor.
Equations
- cochain_complex.homology_functor_succ_single₀ V n = category_theory.nat_iso.of_components (λ (X : V), homology.congr _ _ _ _ ≪≫ homology_zero_zero ≪≫ _.iso_zero.symm) _
Morphisms from a single object cochain complex with X
concentrated in degree 0
to a ℕ
-indexed cochain complex C
are the same as morphisms f : X ⟶ C.X 0
such that f ≫ C.d 0 1 = 0
.
Equations
- C.from_single₀_equiv X = {to_fun := λ (f : (cochain_complex.single₀ V).obj X ⟶ C), ⟨f.f 0, _⟩, inv_fun := λ (f : {f // f ≫ C.d 0 1 = 0}), {f := λ (i : ℕ), cochain_complex.from_single₀_equiv._match_1 C X f i, comm' := _}, left_inv := _, right_inv := _}
- cochain_complex.from_single₀_equiv._match_1 C X f (n + 1) = 0
- cochain_complex.from_single₀_equiv._match_1 C X f 0 = f.val
single₀
is the same as single V _ 0
.
Equations
- cochain_complex.single₀_iso_single V = category_theory.nat_iso.of_components (λ (X : V), {hom := {f := λ (i : ℕ), i.cases_on (_.mpr (_.mp (𝟙 X))) (λ (i : ℕ), _.mpr (𝟙 0)), comm' := _}, inv := {f := λ (i : ℕ), i.cases_on (_.mpr (_.mp (𝟙 X))) (λ (i : ℕ), _.mpr (𝟙 0)), comm' := _}, hom_inv_id' := _, inv_hom_id' := _}) _