Opposite categories of complexes #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. Given a preadditive category
V
, the opposite of its category of chain complexes is equivalent to the category of cochain complexes of objects inVᵒᵖ
. We define this equivalence, and another analagous equivalence (for a general category of homological complexes with a general complex shape).
We then show that when V
is abelian, if C
is a homological complex, then the homology of
op(C)
is isomorphic to op
of the homology of C
(and the analagous result for unop
).
Implementation notes #
It is convenient to define both op
and op_symm
; this is because given a complex shape c
,
c.symm.symm
is not defeq to c
.
Tags #
opposite, chain complex, cochain complex, homology, cohomology, homological complex
Given f, g
with f ≫ g = 0
, the homology of g.op, f.op
is the opposite of the homology of
f, g
.
Equations
- homology_op f g w = category_theory.limits.cokernel_iso_of_eq _ ≪≫ category_theory.limits.cokernel_epi_comp (category_theory.limits.image_subobject_iso g.op ≪≫ (category_theory.image_op_op g).symm).hom ((category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _).op ≫ (category_theory.limits.kernel_subobject_iso f.op ≪≫ category_theory.kernel_op_op f).inv) ≪≫ category_theory.limits.cokernel_comp_is_iso (category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _).op (category_theory.limits.kernel_subobject_iso f.op ≪≫ category_theory.kernel_op_op f).inv ≪≫ category_theory.cokernel_op_op (category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _) ≪≫ (homology_iso_kernel_desc f g w ≪≫ category_theory.limits.kernel_iso_of_eq _ ≪≫ category_theory.limits.kernel_comp_mono (category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _) (category_theory.limits.image.ι g)).op
Given morphisms f, g
in Vᵒᵖ
with f ≫ g = 0
, the homology of g.unop, f.unop
is the
opposite of the homology of f, g
.
Equations
- homology_unop f g w = category_theory.limits.cokernel_iso_of_eq _ ≪≫ category_theory.limits.cokernel_epi_comp (category_theory.limits.image_subobject_iso g.unop ≪≫ (category_theory.image_unop_unop g).symm).hom ((category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _).unop ≫ (category_theory.limits.kernel_subobject_iso f.unop ≪≫ category_theory.kernel_unop_unop f).inv) ≪≫ category_theory.limits.cokernel_comp_is_iso (category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _).unop (category_theory.limits.kernel_subobject_iso f.unop ≪≫ category_theory.kernel_unop_unop f).inv ≪≫ category_theory.cokernel_unop_unop (category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _) ≪≫ (homology_iso_kernel_desc f g w ≪≫ category_theory.limits.kernel_iso_of_eq _ ≪≫ category_theory.limits.kernel_comp_mono (category_theory.limits.cokernel.desc f (category_theory.limits.factor_thru_image g) _) (category_theory.limits.image.ι g)).unop
Sends a complex X
with objects in V
to the corresponding complex with objects in Vᵒᵖ
.
Sends a complex X
with objects in V
to the corresponding complex with objects in Vᵒᵖ
.
Sends a complex X
with objects in Vᵒᵖ
to the corresponding complex with objects in V
.
Sends a complex X
with objects in Vᵒᵖ
to the corresponding complex with objects in V
.
Auxilliary definition for op_equivalence
.
Equations
- homological_complex.op_functor V c = {obj := λ (X : (homological_complex V c)ᵒᵖ), (opposite.unop X).op, map := λ (X Y : (homological_complex V c)ᵒᵖ) (f : X ⟶ Y), {f := λ (i : ι), (f.unop.f i).op, comm' := _}, map_id' := _, map_comp' := _}
Instances for homological_complex.op_functor
Auxilliary definition for op_equivalence
.
Equations
- homological_complex.op_inverse V c = {obj := λ (X : homological_complex Vᵒᵖ c.symm), opposite.op X.unop_symm, map := λ (X Y : homological_complex Vᵒᵖ c.symm) (f : X ⟶ Y), quiver.hom.op {f := λ (i : ι), (f.f i).unop, comm' := _}, map_id' := _, map_comp' := _}
Auxilliary definition for op_equivalence
.
Equations
- homological_complex.op_unit_iso V c = category_theory.nat_iso.of_components (λ (X : (homological_complex V c)ᵒᵖ), (homological_complex.hom.iso_of_components (λ (i : ι), category_theory.iso.refl ((opposite.unop X).op.unop_symm.X i)) _).op) _
Auxilliary definition for op_equivalence
.
Equations
- homological_complex.op_counit_iso V c = category_theory.nat_iso.of_components (λ (X : homological_complex Vᵒᵖ c.symm), homological_complex.hom.iso_of_components (λ (i : ι), category_theory.iso.refl (((homological_complex.op_inverse V c ⋙ homological_complex.op_functor V c).obj X).X i)) _) _
Given a category of complexes with objects in V
, there is a natural equivalence between its
opposite category and a category of complexes with objects in Vᵒᵖ
.
Equations
- homological_complex.op_equivalence V c = {functor := homological_complex.op_functor V c _inst_2, inverse := homological_complex.op_inverse V c _inst_2, unit_iso := homological_complex.op_unit_iso V c _inst_2, counit_iso := homological_complex.op_counit_iso V c _inst_2, functor_unit_iso_comp' := _}
Auxilliary definition for unop_equivalence
.
Equations
Instances for homological_complex.unop_functor
Auxilliary definition for unop_equivalence
.
Equations
- homological_complex.unop_inverse V c = {obj := λ (X : homological_complex V c.symm), opposite.op X.op_symm, map := λ (X Y : homological_complex V c.symm) (f : X ⟶ Y), quiver.hom.op {f := λ (i : ι), (f.f i).op, comm' := _}, map_id' := _, map_comp' := _}
Auxilliary definition for unop_equivalence
.
Equations
- homological_complex.unop_unit_iso V c = category_theory.nat_iso.of_components (λ (X : (homological_complex Vᵒᵖ c)ᵒᵖ), (homological_complex.hom.iso_of_components (λ (i : ι), category_theory.iso.refl ((opposite.unop X).op.unop_symm.X i)) _).op) _
Auxilliary definition for unop_equivalence
.
Equations
- homological_complex.unop_counit_iso V c = category_theory.nat_iso.of_components (λ (X : homological_complex V c.symm), homological_complex.hom.iso_of_components (λ (i : ι), category_theory.iso.refl (((homological_complex.unop_inverse V c ⋙ homological_complex.unop_functor V c).obj X).X i)) _) _
Given a category of complexes with objects in Vᵒᵖ
, there is a natural equivalence between its
opposite category and a category of complexes with objects in V
.
Equations
- homological_complex.unop_equivalence V c = {functor := homological_complex.unop_functor V c _inst_2, inverse := homological_complex.unop_inverse V c _inst_2, unit_iso := homological_complex.unop_unit_iso V c _inst_2, counit_iso := homological_complex.unop_counit_iso V c _inst_2, functor_unit_iso_comp' := _}
Auxilliary tautological definition for homology_op
.
Equations
- C.homology_op_def i = category_theory.iso.refl (C.op.homology i)
Given a complex C
of objects in V
, the i
th homology of its 'opposite' complex (with
objects in Vᵒᵖ
) is the opposite of the i
th homology of C
.
Equations
- C.homology_op i = C.homology_op_def i ≪≫ homology_op (C.d_to i) (C.d_from i) _
Auxilliary tautological definition for homology_unop
.
Equations
Given a complex C
of objects in Vᵒᵖ
, the i
th homology of its 'opposite' complex (with
objects in V
) is the opposite of the i
th homology of C
.
Equations
- homological_complex.homology_unop i C = homological_complex.homology_unop_def i C ≪≫ homology_unop (C.d_to i) (C.d_from i) _