# mathlib3documentation

algebra.homology.augment

# Augmentation and truncation of ℕ-indexed (co)chain complexes. #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

@[simp]
theorem chain_complex.truncate_obj_X {V : Type u} (C : ) (i : ) :
i = C.X (i + 1)
@[simp]
theorem chain_complex.truncate_obj_d {V : Type u} (C : ) (i j : ) :
i j = C.d (i + 1) (j + 1)
@[simp]
theorem chain_complex.truncate_map_f {V : Type u} (C D : ) (f : C D) (i : ) :
i = f.f (i + 1)

The truncation of a ℕ-indexed chain complex, deleting the object at 0 and shifting everything else down.

Equations
noncomputable def chain_complex.truncate_to {V : Type u} (C : ) :
(C.X 0)

There is a canonical chain map from the truncation of a chain map C to the "single object" chain complex consisting of the truncated object C.X 0 in degree 0. The components of this chain map are C.d 1 0 in degree 0, and zero otherwise.

Equations
def chain_complex.augment {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) :

We can "augment" a chain complex by inserting an arbitrary object in degree zero (shifting everything else up), along with a suitable differential.

Equations
• C.augment f w = {X := λ (i : ), chain_complex.augment._match_1 C i, d := λ (i j : ), chain_complex.augment._match_2 C f i j, shape' := _, d_comp_d' := _}
• chain_complex.augment._match_1 C (i + 1) = C.X i
• chain_complex.augment._match_1 C 0 = X
• chain_complex.augment._match_2 C f (n.succ + 1) (j + 1) = C.d n.succ j
• chain_complex.augment._match_2 C f n.succ.succ 0 = 0
• chain_complex.augment._match_2 C f (0 + 1) (j + 1) = C.d 0 j
• chain_complex.augment._match_2 C f 1 0 = f
• chain_complex.augment._match_2 C f 0 _x = 0
@[simp]
theorem chain_complex.augment_X_zero {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) :
(C.augment f w).X 0 = X
@[simp]
theorem chain_complex.augment_X_succ {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) (i : ) :
(C.augment f w).X (i + 1) = C.X i
@[simp]
theorem chain_complex.augment_d_one_zero {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) :
(C.augment f w).d 1 0 = f
@[simp]
theorem chain_complex.augment_d_succ_succ {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) (i j : ) :
(C.augment f w).d (i + 1) (j + 1) = C.d i j
def chain_complex.truncate_augment {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) :

Truncating an augmented chain complex is isomorphic (with components the identity) to the original complex.

Equations
@[simp]
theorem chain_complex.truncate_augment_hom_f {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) (i : ) :
(C.truncate_augment f w).hom.f i = 𝟙 (C.X i)
@[simp]
theorem chain_complex.truncate_augment_inv_f {V : Type u} (C : ) {X : V} (f : C.X 0 X) (w : C.d 1 0 f = 0) (i : ) :
@[simp]
theorem chain_complex.chain_complex_d_succ_succ_zero {V : Type u} (C : ) (i : ) :
C.d (i + 2) 0 = 0
def chain_complex.augment_truncate {V : Type u} (C : ) :
(C.d 1 0) _ C

Augmenting a truncated complex with the original object and morphism is isomorphic (with components the identity) to the original complex.

Equations
@[simp]
@[simp]
theorem chain_complex.augment_truncate_hom_f_succ {V : Type u} (C : ) (i : ) :
C.augment_truncate.hom.f (i + 1) = 𝟙 (C.X (i + 1))
@[simp]
@[simp]
theorem chain_complex.augment_truncate_inv_f_succ {V : Type u} (C : ) (i : ) :
C.augment_truncate.inv.f (i + 1) = 𝟙 (C.X (i + 1))
noncomputable def chain_complex.to_single₀_as_complex {V : Type u} (C : ) (X : V) (f : C X) :

A chain map from a chain complex to a single object chain complex in degree zero can be reinterpreted as a chain complex.

Ths is the inverse construction of truncate_to.

Equations
@[simp]
theorem cochain_complex.truncate_obj_d {V : Type u} (C : ) (i j : ) :
i j = C.d (i + 1) (j + 1)

The truncation of a ℕ-indexed cochain complex, deleting the object at 0 and shifting everything else down.

Equations
@[simp]
theorem cochain_complex.truncate_map_f {V : Type u} (C D : ) (f : C D) (i : ) :
i = f.f (i + 1)
@[simp]
theorem cochain_complex.truncate_obj_X {V : Type u} (C : ) (i : ) :
i = C.X (i + 1)
noncomputable def cochain_complex.to_truncate {V : Type u} (C : ) :
(C.X 0)

There is a canonical chain map from the truncation of a cochain complex C to the "single object" cochain complex consisting of the truncated object C.X 0 in degree 0. The components of this chain map are C.d 0 1 in degree 0, and zero otherwise.

Equations
def cochain_complex.augment {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) :

We can "augment" a cochain complex by inserting an arbitrary object in degree zero (shifting everything else up), along with a suitable differential.

Equations
• C.augment f w = {X := λ (i : ), cochain_complex.augment._match_1 C i, d := λ (i j : ), cochain_complex.augment._match_2 C f i j, shape' := _, d_comp_d' := _}
• cochain_complex.augment._match_1 C (i + 1) = C.X i
• cochain_complex.augment._match_1 C 0 = X
• cochain_complex.augment._match_2 C f (i + 1) (j + 1) = C.d i j
• cochain_complex.augment._match_2 C f n.succ 0 = 0
• cochain_complex.augment._match_2 C f 0 n.succ.succ = 0
• cochain_complex.augment._match_2 C f 0 1 = f
• cochain_complex.augment._match_2 C f 0 0 = 0
@[simp]
theorem cochain_complex.augment_X_zero {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) :
(C.augment f w).X 0 = X
@[simp]
theorem cochain_complex.augment_X_succ {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) (i : ) :
(C.augment f w).X (i + 1) = C.X i
@[simp]
theorem cochain_complex.augment_d_zero_one {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) :
(C.augment f w).d 0 1 = f
@[simp]
theorem cochain_complex.augment_d_succ_succ {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) (i j : ) :
(C.augment f w).d (i + 1) (j + 1) = C.d i j
def cochain_complex.truncate_augment {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) :

Truncating an augmented cochain complex is isomorphic (with components the identity) to the original complex.

Equations
@[simp]
theorem cochain_complex.truncate_augment_hom_f {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) (i : ) :
(C.truncate_augment f w).hom.f i = 𝟙 (C.X i)
@[simp]
theorem cochain_complex.truncate_augment_inv_f {V : Type u} (C : ) {X : V} (f : X C.X 0) (w : f C.d 0 1 = 0) (i : ) :
@[simp]
theorem cochain_complex.cochain_complex_d_succ_succ_zero {V : Type u} (C : ) (i : ) :
C.d 0 (i + 2) = 0
def cochain_complex.augment_truncate {V : Type u} (C : ) :
(C.d 0 1) _ C

Augmenting a truncated complex with the original object and morphism is isomorphic (with components the identity) to the original complex.

Equations
@[simp]
theorem cochain_complex.augment_truncate_hom_f_succ {V : Type u} (C : ) (i : ) :
C.augment_truncate.hom.f (i + 1) = 𝟙 (C.X (i + 1))
@[simp]
theorem cochain_complex.augment_truncate_inv_f_succ {V : Type u} (C : ) (i : ) :
C.augment_truncate.inv.f (i + 1) = 𝟙 (C.X (i + 1))
noncomputable def cochain_complex.from_single₀_as_complex {V : Type u} (C : ) (X : V) (f : C) :

A chain map from a single object cochain complex in degree zero to a cochain complex can be reinterpreted as a cochain complex.

Ths is the inverse construction of to_truncate.

Equations