Theorem: CategoryTheory.Abelian.Ext.biprod_ext
File: Mathlib/Algebra/Homology/DerivedCategory/Ext.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
h₁ : (mk₀ biprod.inl).comp α ⋯ = (mk₀ biprod.inl).comp β ⋯
h₂ : (mk₀ biprod.inr).comp α ⋯ = (mk₀ biprod.inr).comp β ⋯
⊢ α = β
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
h₁ : (mk₀ biprod.inl).comp α ⋯ = (mk₀ biprod.inl).comp β ⋯
h₂ : (mk₀ biprod.inr).comp α ⋯ = (mk₀ biprod.inr).comp β ⋯
this : HasDerivedCategory C := HasDerivedCategory.standard C
⊢ α = β
tactic: letI := HasDerivedCategory.standard C
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
h₁ : (mk₀ biprod.inl).comp α ⋯ = (mk₀ biprod.inl).comp β ⋯
h₂ : (mk₀ biprod.inr).comp α ⋯ = (mk₀ biprod.inr).comp β ⋯
this : HasDerivedCategory C := HasDerivedCategory.standard C
⊢ α = β
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₂ : ((mk₀ biprod.inr).comp α ⋯).hom = ((mk₀ biprod.inr).comp β ⋯).hom
h₁ : ((mk₀ biprod.inl).comp α ⋯).hom = ((mk₀ biprod.inl).comp β ⋯).hom
⊢ α.hom = β.hom
tactic: rw [Ext.ext_iff] at h₁ h₂ ⊢
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₂ : ((mk₀ biprod.inr).comp α ⋯).hom = ((mk₀ biprod.inr).comp β ⋯).hom
h₁ : ((mk₀ biprod.inl).comp α ⋯).hom = ((mk₀ biprod.inl).comp β ⋯).hom
⊢ α.hom = β.hom
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₁ :
  (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ β.hom
h₂ :
  (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ β.hom
⊢ α.hom = β.hom
tactic: simp only [comp_hom, mk₀_hom, ShiftedHom.mk₀_comp] at h₁ h₂
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₁ :
  (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ β.hom
h₂ :
  (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ β.hom
⊢ α.hom = β.hom
state_after: case h₁
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₁ :
  (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ β.hom
h₂ :
  (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ β.hom
⊢ BinaryCofan.inl ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      α.hom =
    BinaryCofan.inl ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      β.hom

case h₂
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₁ :
  (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ β.hom
h₂ :
  (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ β.hom
⊢ BinaryCofan.inr ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      α.hom =
    BinaryCofan.inr ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      β.hom
tactic: apply BinaryCofan.IsColimit.hom_ext
    (isBinaryBilimitOfPreserves (DerivedCategory.singleFunctor C 0)
      (BinaryBiproduct.isBilimit X₁ X₂)).isColimit
state_before: case h₁
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₁ :
  (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ β.hom
h₂ :
  (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ β.hom
⊢ BinaryCofan.inl ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      α.hom =
    BinaryCofan.inl ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      β.hom

case h₂
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
n : ℕ
inst✝ : HasDerivedCategory C
X₁ X₂ : C
α β : Ext (X₁ ⊞ X₂) Y n
this : HasDerivedCategory C := HasDerivedCategory.standard C
h₁ :
  (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inl ≫ β.hom
h₂ :
  (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ α.hom =
    (DerivedCategory.singleFunctor C 0).map biprod.inr ≫ β.hom
⊢ BinaryCofan.inr ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      α.hom =
    BinaryCofan.inr ((DerivedCategory.singleFunctor C 0).mapBinaryBicone (BinaryBiproduct.bicone X₁ X₂)).toCocone ≫
      β.hom
state_after: no goals
tactic: all_goals assumption