-- Module: Mathlib.Algebra.Homology.DerivedCategory.Ext.ExactSequences
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : Abelian.{v, u} C
inst_2 : HasExt.{w, v, u} C
S : ShortComplex.{v, u} C
hS : S.ShortExact
Y : C
n₀ n₁ : ℕ
h : 1 + n₀ = n₁
this_1 : HasDerivedCategory C := HasDerivedCategory.standard C
this : failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)
comm₁₂ :
  (ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat) ↦ (↑x1 : Type (max u v)) →+ (↑x2 : Type (max u v))) (CC :=
          AddCommGrpCat.carrier)
          (ShortComplex.mk (X₁ :=
              Functor.obj (C := (DerivedCategory C)ᵒᵖ)
                (Functor.shift (Functor.obj preadditiveYoneda (Functor.obj (singleFunctor C 0) Y)) (M := ℤ) (↑n₀ : ℤ))
                (Triangle.obj₃
                  (Functor.obj (Equivalence.functor (triangleOpEquivalence (DerivedCategory C)))
                    (op hS.singleTriangle))))
              (Functor.homologySequenceδ (Functor.obj preadditiveYoneda (Functor.obj (singleFunctor C 0) Y))
                (Functor.obj (Equivalence.functor (triangleOpEquivalence (DerivedCategory C))) (op hS.singleTriangle))
                (↑n₀ : ℤ) (↑n₁ : ℤ) ⋯)
              (Functor.map
                (Functor.shift (Functor.obj preadditiveYoneda (Functor.obj (singleFunctor C 0) Y)) (M := ℤ) (↑n₁ : ℤ))
                (Triangle.mor₁
                  (Functor.obj (Equivalence.functor (triangleOpEquivalence (DerivedCategory C)))
                    (op hS.singleTriangle))))
              ⋯).f).comp
      (↑homAddEquiv :
        Ext S.X₁ Y n₀ →+ ShiftedHom ((singleFunctor C 0).obj S.X₁) ((singleFunctor C 0).obj Y) (↑n₀ : ℤ)) =
    AddMonoidHom.comp
      (↑homAddEquiv : Ext S.X₃ Y n₁ →+ ShiftedHom ((singleFunctor C 0).obj S.X₃) ((singleFunctor C 0).obj Y) (↑n₁ : ℤ))
      (ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{w}) ↦ (↑x1 : Type w) →+ (↑x2 : Type w)) (CC :=
        AddCommGrpCat.carrier)
        (ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
            (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).f)
comm₂₃ :
  (ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat) ↦ (↑x1 : Type (max u v)) →+ (↑x2 : Type (max u v))) (CC :=
          AddCommGrpCat.carrier)
          (ShortComplex.mk (X₁ :=
              Functor.obj (C := (DerivedCategory C)ᵒᵖ)
                (Functor.shift (Functor.obj preadditiveYoneda (Functor.obj (singleFunctor C 0) Y)) (M := ℤ) (↑n₀ : ℤ))
                (Triangle.obj₃
                  (Functor.obj (Equivalence.functor (triangleOpEquivalence (DerivedCategory C)))
                    (op hS.singleTriangle))))
              (Functor.homologySequenceδ (Functor.obj preadditiveYoneda (Functor.obj (singleFunctor C 0) Y))
                (Functor.obj (Equivalence.functor (triangleOpEquivalence (DerivedCategory C))) (op hS.singleTriangle))
                (↑n₀ : ℤ) (↑n₁ : ℤ) ⋯)
              (Functor.map
                (Functor.shift (Functor.obj preadditiveYoneda (Functor.obj (singleFunctor C 0) Y)) (M := ℤ) (↑n₁ : ℤ))
                (Triangle.mor₁
                  (Functor.obj (Equivalence.functor (triangleOpEquivalence (DerivedCategory C)))
                    (op hS.singleTriangle))))
              ⋯).g).comp
      (↑homAddEquiv :
        Ext S.X₃ Y n₁ →+ ShiftedHom ((singleFunctor C 0).obj S.X₃) ((singleFunctor C 0).obj Y) (↑n₁ : ℤ)) =
    AddMonoidHom.comp
      (↑homAddEquiv : Ext S.X₂ Y n₁ →+ ShiftedHom ((singleFunctor C 0).obj S.X₂) ((singleFunctor C 0).obj Y) (↑n₁ : ℤ))
      (ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{w}) ↦ (↑x1 : Type w) →+ (↑x2 : Type w)) (CC :=
        AddCommGrpCat.carrier)
        (ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
            (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).g)
⊢ Function.Exact (M :=
    (↑(ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
            (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).X₁ :
      Type w))
    (N :=
    (↑(ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
            (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).X₂ :
      Type w))
    (P :=
    (↑(ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
            (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).X₃ :
      Type w))
    (⇑(ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{w}) ↦ (↑x1 : Type w) →+ (↑x2 : Type w)) (CC :=
          AddCommGrpCat.carrier)
          (ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
              (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).f) :
      (a :
          (↑{ X₁ := AddCommGrpCat.of (Ext S.X₁ Y n₀), X₂ := AddCommGrpCat.of (Ext S.X₃ Y n₁),
                  X₃ := AddCommGrpCat.of (Ext S.X₂ Y n₁), f := AddCommGrpCat.ofHom (hS.extClass.precomp Y h),
                  g := AddCommGrpCat.ofHom ((mk₀ S.g).precomp Y ⋯), zero := ⋯ }.X₁ :
            Type w)) →
        (↑{ X₁ := AddCommGrpCat.of (Ext S.X₁ Y n₀), X₂ := AddCommGrpCat.of (Ext S.X₃ Y n₁),
                X₃ := AddCommGrpCat.of (Ext S.X₂ Y n₁), f := AddCommGrpCat.ofHom (hS.extClass.precomp Y h),
                g := AddCommGrpCat.ofHom ((mk₀ S.g).precomp Y ⋯), zero := ⋯ }.X₂ :
          Type w))
    (⇑(ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{w}) ↦ (↑x1 : Type w) →+ (↑x2 : Type w)) (CC :=
          AddCommGrpCat.carrier)
          (ShortComplex.mk (X₁ := AddCommGrpCat.of (Ext.{w, v, u} S.X₁ Y n₀))
              (AddCommGrpCat.ofHom (precomp hS.extClass Y h)) (AddCommGrpCat.ofHom (precomp (mk₀ S.g) Y ⋯)) ⋯).g) :
      (a :
          (↑{ X₁ := AddCommGrpCat.of (Ext S.X₁ Y n₀), X₂ := AddCommGrpCat.of (Ext S.X₃ Y n₁),
                  X₃ := AddCommGrpCat.of (Ext S.X₂ Y n₁), f := AddCommGrpCat.ofHom (hS.extClass.precomp Y h),
                  g := AddCommGrpCat.ofHom ((mk₀ S.g).precomp Y ⋯), zero := ⋯ }.X₂ :
            Type w)) →
        (↑{ X₁ := AddCommGrpCat.of (Ext S.X₁ Y n₀), X₂ := AddCommGrpCat.of (Ext S.X₃ Y n₁),
                X₃ := AddCommGrpCat.of (Ext S.X₂ Y n₁), f := AddCommGrpCat.ofHom (hS.extClass.precomp Y h),
                g := AddCommGrpCat.ofHom ((mk₀ S.g).precomp Y ⋯), zero := ⋯ }.X₃ :
          Type w))

Tactic:
apply Function.Exact.of_ladder_addEquiv_of_exact' (e₁ := Ext.homAddEquiv)
    (e₂ := Ext.homAddEquiv) (e₃ := Ext.homAddEquiv) (H := this)

Premises used: CategoryTheory.Abelian.Ext.homAddEquiv, Function.Exact.of_ladder_addEquiv_of_exact'