Lemma MappingConeIn2Eq (C : Complex A) : # (ComplexHomotFunctor A) (MappingConeIn2 A (@identity (ComplexPreCat_Additive A) C)) = # (ComplexHomotFunctor A) (ZeroArrow (Additive.to_Zero (ComplexPreCat_Additive A)) _ _). Proof. use ComplexHomotFunctor_rel_mor'. - exact (MappingConeIn2Homot C). - rewrite to_inv_zero. rewrite to_runax''. use MorphismEq. intros i. cbn. unfold MappingConeIn2Homot. unfold MappingConeDiff. unfold MappingConeDiff1, MappingConeDiff2, MappingConeDiff3. cbn. set (DS1 := to_BinDirectSums A (C (i + 1)) (C i)). set (DS2 := to_BinDirectSums A (C (i - 1 + 1)) (C (i - 1))). set (DS3 := to_BinDirectSums A (C (i - 1 + 1 + 1)) (C (i - 1 + 1))). set (DS4 := to_BinDirectSums A (C (i + 1 - 1 + 1)) (C (i + 1 - 1))). rewrite id_left. rewrite to_premor_linear'. rewrite to_premor_linear'. rewrite assoc. rewrite assoc. rewrite assoc. rewrite assoc. rewrite <- transport_source_precompose. rewrite (to_IdIn1 DS2). rewrite <- transport_source_precompose. rewrite id_left. rewrite <- transport_source_precompose. rewrite <- transport_source_precompose. rewrite id_left. rewrite <- transport_source_precompose. rewrite (to_Unel1' DS2). rewrite transport_source_ZeroArrow. rewrite ZeroArrow_comp_left. rewrite to_runax''. rewrite transport_source_to_binop. unfold DiffTranslationComplex. assert (e1 : (transportf (precategory_morphisms (C i)) (maponpaths (λ i0 : pr1 hz, BinDirectSumOb (to_BinDirectSums A (C (i0 + 1)) (C i0))) (hzrminusplus i 1)) (transportf (λ x' : A, A ⟦ x', DS3 ⟧) (maponpaths C (hzrminusplus i 1)) (to_binop (C (i - 1 + 1)) DS3 (to_inv (Diff C (i - 1 + 1)) · to_In1 DS3) (to_In2 DS3)))) = to_binop (C i) DS1 (to_inv (Diff C i) · to_In1 DS1) (to_In2 DS1)). { unfold DS1, DS2, DS3, DS4. set (tmp := transport_hz_double_section_source_target A C (λ (i0 : hz), to_BinDirectSums A (C (i0 + 1)) (C i0)) (λ (i0 : hz), to_binop (C i0) (to_BinDirectSums A (C (i0 + 1)) (C i0)) (to_inv (Diff C i0) · to_In1 (to_BinDirectSums A (C (i0 + 1)) (C i0))) (to_In2 (to_BinDirectSums A (C (i0 + 1)) (C i0)))) _ _ (hzrminusplus i 1)). cbn beta in tmp. use (pathscomp0 _ (! tmp)). clear tmp. apply idpath. } apply (maponpaths (λ gg : _, to_binop _ _ gg ((transportf (precategory_morphisms (C i)) (maponpaths (λ i0 : pr1 hz, BinDirectSumOb (to_BinDirectSums A (C (i0 + 1)) (C i0))) (hzrplusminus i 1)) (Diff C i · transportf (λ x' : A, A ⟦ x', DS4 ⟧) (maponpaths C (hzrminusplus (i + 1) 1)) (to_In1 DS4)))))) in e1. use (pathscomp0 _ (! e1)). clear e1. rewrite transport_target_postcompose. assert (e2 : transportf (precategory_morphisms (C (i + 1))) (maponpaths (λ i0 : pr1 hz, BinDirectSumOb (to_BinDirectSums A (C (i0 + 1)) (C i0))) (hzrplusminus i 1)) (transportf (λ x' : A, A ⟦ x', DS4 ⟧) (maponpaths C (hzrminusplus (i + 1) 1)) (to_In1 DS4)) = to_In1 DS1). { unfold DS1, DS2, DS3, DS4. set (tmp := transport_hz_double_section_source_target A (λ i0 : hz, C (i0 + 1)) (λ (i0 : hz), to_BinDirectSums A (C (i0 + 1)) (C i0)) (λ (i0 : hz), to_In1 (to_BinDirectSums A (C (i0 + 1)) (C i0))) _ _ (hzrplusminus i 1)). cbn beta in tmp. use (pathscomp0 _ (! tmp)). clear tmp. apply maponpaths. assert (e3 : (maponpaths C (hzrminusplus (i + 1) 1)) = (maponpaths (λ i0 : hz, C (i0 + 1)) (hzrplusminus i 1))). { assert (e4 : maponpaths (λ i0 : hz, C (i0 + 1)) (hzrplusminus i 1) = maponpaths C (maponpaths (λ i0 : hz, i0 + 1) (hzrplusminus i 1))). { induction (hzrplusminus i 1). apply idpath. } rewrite e4. clear e4. apply maponpaths. apply isasethz. } rewrite e3. apply idpath. } rewrite e2. clear e2. rewrite to_commax'. rewrite <- to_assoc. rewrite <- to_postmor_linear'. rewrite (@to_rinvax' A (Additive.to_Zero A)). rewrite ZeroArrow_comp_left. rewrite to_lunax''. apply idpath. Qed.
Require Import UniMath.Foundations.UnivalenceAxiom. Require Import UniMath.Foundations.PartD. Require Import UniMath.Foundations.Propositions. Require Import UniMath.Foundations.Sets. Require Import UniMath.Foundations.NaturalNumbers. Require Import UniMath.MoreFoundations.PartA. Require Import UniMath.Algebra.BinaryOperations. Require Import UniMath.Algebra.Monoids. Require Import UniMath.NumberSystems.Integers. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.TransportMorphisms. Require Import UniMath.CategoryTheory.Limits.Zero. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Limits.Equalizers. Require Import UniMath.CategoryTheory.Limits.Coequalizers. Require Import UniMath.CategoryTheory.Limits.Kernels. Require Import UniMath.CategoryTheory.Limits.Cokernels. Require Import UniMath.CategoryTheory.Limits.Pushouts. Require Import UniMath.CategoryTheory.Limits.Pullbacks. Require Import UniMath.CategoryTheory.Limits.BinDirectSums. Require Import UniMath.CategoryTheory.Monics. Require Import UniMath.CategoryTheory.Epis. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.CategoriesWithBinOps. Require Import UniMath.CategoryTheory.PrecategoriesWithAbgrops. Require Import UniMath.CategoryTheory.PreAdditive. Require Import UniMath.CategoryTheory.Additive. Require Import UniMath.CategoryTheory.Abelian. Require Import UniMath.CategoryTheory.AbelianToAdditive. Require Import UniMath.CategoryTheory.AdditiveFunctors. Require Import UniMath.HomologicalAlgebra.Complexes. Require Import UniMath.HomologicalAlgebra.KA. Require Import UniMath.HomologicalAlgebra.TranslationFunctors.