awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.Page (goal)
Goal:
C : Type u_1
ι : Type u_2
inst : Category.{v_1, u_1} C
inst_1 : Category.{v_2, u_2} ι
inst_2 : Abelian.{v_1, u_1} C
X : SpectralObject.{u_1, u_2, v_1, v_2} C ι
i₀ i₁ i₂ i₃ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₁₂ : i₀ ⟶ i₂
h₁₂ : f₁ ≫ f₂ = f₁₂
i₀' i₁' i₂' i₃' : ι
f₁' : i₀' ⟶ i₁'
f₂' : i₁' ⟶ i₂'
f₃' : i₂' ⟶ i₃'
f₁₂' : i₀' ⟶ i₂'
h₁₂' : f₁' ≫ f₂' = f₁₂'
α : mk₃ f₁ f₂ f₃ ⟶ mk₃ f₁' f₂' f₃'
β : mk₂ f₁₂ f₃ ⟶ mk₂ f₁₂' f₃'
n₀ n₁ n₂ : ℤ
h₀ : Eq (α := (mk₂ f₁₂ f₃).obj 0 ⟶ (mk₂ f₁₂' f₃').obj 0) (β.app 0) (α.app 0)
h₁ : Eq (α := (mk₂ f₁₂ f₃).obj 1 ⟶ (mk₂ f₁₂' f₃').obj 1) (β.app 1) (α.app 2)
hn₁ : n₀ + 1 = n₁
hn₂ : n₁ + 1 = n₂
⊢ X.opcyclesToE f₁ f₂ f₃ f₁₂ h₁₂ n₀ n₁ n₂ hn₁ hn₂ ≫ X.map f₁ f₂ f₃ f₁' f₂' f₃' α n₀ n₁ n₂ ⋯ ⋯ =
    X.opcyclesMap f₁₂ f₃ f₁₂' f₃' β n₁ ≫ X.opcyclesToE f₁' f₂' f₃' f₁₂' h₁₂' n₀ n₁ n₂ hn₁ hn₂
have rw : (X.H n₁).map
      (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
        homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 1)
          (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 2) sorry) ≫
    X.pOpcycles f₂' f₃' n₁ =
  (X.H n₁).map
      (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) sorry)
        (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) sorry)) ≫
    X.pOpcycles f₂' f₃' n₁
Tactic: rw [← cancel_mono (X.ιE ..), Category.assoc, Category.assoc, opcyclesToE_ιE ..,
    ← cancel_epi (X.pOpcycles ..), p_opcyclesToE_assoc ..,
    X.πE_map_assoc _ _ _ _ _ _ _
      (homMk₂ (α.app 0) (α.app 1) (α.app 2) (naturality' α 0 1) (naturality' α 1 2)) ..,
    πE_ιE .., X.cyclesMap_i_assoc .., toCycles_i_assoc,
    X.p_opcyclesMap_assoc .., X.p_opcyclesMap ..,
    ← Functor.map_comp_assoc, ← Functor.map_comp_assoc]
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.Page (goal)
Goal:
C : Type u_1
ι : Type u_2
inst : Category.{v_1, u_1} C
inst_1 : Category.{v_2, u_2} ι
inst_2 : Abelian.{v_1, u_1} C
X : SpectralObject.{u_1, u_2, v_1, v_2} C ι
i₀ i₁ i₂ i₃ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₁₂ : i₀ ⟶ i₂
h₁₂ : f₁ ≫ f₂ = f₁₂
i₀' i₁' i₂' i₃' : ι
f₁' : i₀' ⟶ i₁'
f₂' : i₁' ⟶ i₂'
f₃' : i₂' ⟶ i₃'
f₁₂' : i₀' ⟶ i₂'
h₁₂' : f₁' ≫ f₂' = f₁₂'
α : mk₃ f₁ f₂ f₃ ⟶ mk₃ f₁' f₂' f₃'
β : mk₂ f₁₂ f₃ ⟶ mk₂ f₁₂' f₃'
n₀ n₁ n₂ : ℤ
h₀ : Eq (α := (mk₂ f₁₂ f₃).obj 0 ⟶ (mk₂ f₁₂' f₃').obj 0) (β.app 0) (α.app 0)
h₁ : Eq (α := (mk₂ f₁₂ f₃).obj 1 ⟶ (mk₂ f₁₂' f₃').obj 1) (β.app 1) (α.app 2)
hn₁ : n₀ + 1 = n₁
hn₂ : n₁ + 1 = n₂
⊢ (X.H n₁).map
        (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
          homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 1)
            (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 2) ⋯) ≫
      X.pOpcycles f₂' f₃' n₁ =
    (X.H n₁).map
        (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) ⋯)
          (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) ⋯)) ≫
      X.pOpcycles f₂' f₃' n₁
have e_a : Eq (α := mk₁ f₁₂ ⟶ mk₁ f₂')
  (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
    homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 1)
      (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 2) sorry)
  (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) sorry)
    (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) sorry))
Tactic: congr 2
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.Page (goal)
Goal:
C : Type u_1
ι : Type u_2
inst : Category.{v_1, u_1} C
inst_1 : Category.{v_2, u_2} ι
inst_2 : Abelian.{v_1, u_1} C
X : SpectralObject.{u_1, u_2, v_1, v_2} C ι
i₀ i₁ i₂ i₃ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₁₂ : i₀ ⟶ i₂
h₁₂ : f₁ ≫ f₂ = f₁₂
i₀' i₁' i₂' i₃' : ι
f₁' : i₀' ⟶ i₁'
f₂' : i₁' ⟶ i₂'
f₃' : i₂' ⟶ i₃'
f₁₂' : i₀' ⟶ i₂'
h₁₂' : f₁' ≫ f₂' = f₁₂'
α : mk₃ f₁ f₂ f₃ ⟶ mk₃ f₁' f₂' f₃'
β : mk₂ f₁₂ f₃ ⟶ mk₂ f₁₂' f₃'
n₀ n₁ n₂ : ℤ
h₀ : Eq (α := (mk₂ f₁₂ f₃).obj 0 ⟶ (mk₂ f₁₂' f₃').obj 0) (β.app 0) (α.app 0)
h₁ : Eq (α := (mk₂ f₁₂ f₃).obj 1 ⟶ (mk₂ f₁₂' f₃').obj 1) (β.app 1) (α.app 2)
hn₁ : n₀ + 1 = n₁
hn₂ : n₁ + 1 = n₂
⊢ Eq (α := mk₁ f₁₂ ⟶ mk₁ f₂')
    (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
      homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 1)
        (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 2) ⋯)
    (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) ⋯)
      (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) ⋯))
have e_a : Eq (α := (mk₁ f₁₂).obj' 0 homMk₁._proof_4 ⟶ (mk₁ f₂').obj' 0 homMk₁._proof_4)
  (app'
    (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
      homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 1)
        (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 2) sorry)
    0 homMk₁._proof_4)
  (app'
    (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) sorry)
      (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) sorry))
    0 homMk₁._proof_4)
Tactic: ext
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.Page (goal)
Goal:
C : Type u_1
ι : Type u_2
inst : Category.{v_1, u_1} C
inst_1 : Category.{v_2, u_2} ι
inst_2 : Abelian.{v_1, u_1} C
X : SpectralObject.{u_1, u_2, v_1, v_2} C ι
i₀ i₁ i₂ i₃ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₁₂ : i₀ ⟶ i₂
h₁₂ : f₁ ≫ f₂ = f₁₂
i₀' i₁' i₂' i₃' : ι
f₁' : i₀' ⟶ i₁'
f₂' : i₁' ⟶ i₂'
f₃' : i₂' ⟶ i₃'
f₁₂' : i₀' ⟶ i₂'
h₁₂' : f₁' ≫ f₂' = f₁₂'
α : mk₃ f₁ f₂ f₃ ⟶ mk₃ f₁' f₂' f₃'
β : mk₂ f₁₂ f₃ ⟶ mk₂ f₁₂' f₃'
n₀ n₁ n₂ : ℤ
h₀ : Eq (α := (mk₂ f₁₂ f₃).obj 0 ⟶ (mk₂ f₁₂' f₃').obj 0) (β.app 0) (α.app 0)
h₁ : Eq (α := (mk₂ f₁₂ f₃).obj 1 ⟶ (mk₂ f₁₂' f₃').obj 1) (β.app 1) (α.app 2)
hn₁ : n₀ + 1 = n₁
hn₂ : n₁ + 1 = n₂
e_a :
  Eq (α := (mk₁ f₁₂).obj' 0 homMk₁._proof_4 ⟶ (mk₁ f₂').obj' 0 homMk₁._proof_4)
    (app'
      (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
        homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 1)
          (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 2) ⋯)
      0 homMk₁._proof_4)
    (app'
      (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) ⋯)
        (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) ⋯))
      0 homMk₁._proof_4)
⊢ Eq (α := mk₁ f₁₂ ⟶ mk₁ f₂')
    (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
      homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 1)
        (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) ⋯ ⋯) 2) ⋯)
    (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) ⋯)
      (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) ⋯))
have e_a₁ : Eq (α := (mk₁ f₁₂).obj' 1 homMk₁._proof_5 ⟶ (mk₁ f₂').obj' 1 homMk₁._proof_5)
  (app'
    (twoδ₁Toδ₀ f₁ f₂ f₁₂ h₁₂ ≫
      homMk₁ (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 1)
        (NatTrans.app (homMk₂ (α.app 0) (α.app 1) (α.app 2) sorry sorry) 2) sorry)
    1 homMk₁._proof_5)
  (app'
    (CategoryStruct.comp (Y := mk₁ f₁₂') (homMk₁ (β.app 0) (β.app 1) sorry)
      (homMk₁ ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 0) ((threeδ₁Toδ₀ f₁' f₂' f₃' f₁₂' h₁₂').app 1) sorry))
    1 homMk₁._proof_5)
Tactic: ext
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq : κ
i₀ i₁ i₂ i₃ : ι
h₀ : i₀ = data.i₀ r pq ⋯
h₁ : i₁ = data.i₁ pq
h₂ : i₂ = data.i₂ pq
h₃ : i₃ = data.i₃ r pq ⋯
n₀ n₁ n₂ : ℤ
h : n₁ = data.deg pq
hn₁ : n₀ + 1 = n₁
hn₂ : n₁ + 1 = n₂
⊢ pageX X data r pq hr = X.E (homOfLE ⋯) (homOfLE ⋯) (homOfLE ⋯) n₀ n₁ n₂ hn₁ hn₂
have obtain : ∀ (hn₁ : n₁ - 1 + 1 = n₁), pageX X data r pq hr = X.E (homOfLE sorry) (homOfLE sorry) (homOfLE sorry) (n₁ - 1) n₁ n₂ hn₁ hn₂
Tactic: obtain rfl : n₀ = n₁ - 1 := by lia
Cleared hypotheses: n₀, hn₁
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq : κ
i₀ i₁ i₂ i₃ : ι
h₀ : i₀ = data.i₀ r pq ⋯
h₁ : i₁ = data.i₁ pq
h₂ : i₂ = data.i₂ pq
h₃ : i₃ = data.i₃ r pq ⋯
n₁ n₂ : ℤ
h : n₁ = data.deg pq
hn₂ : n₁ + 1 = n₂
hn₁ : n₁ - 1 + 1 = n₁
⊢ pageX X data r pq hr = X.E (homOfLE ⋯) (homOfLE ⋯) (homOfLE ⋯) (n₁ - 1) n₁ n₂ hn₁ hn₂
have subst : ∀ (hn₁ : data.deg pq - 1 + 1 = data.deg pq),
  pageX X data r pq hr = X.E (homOfLE sorry) (homOfLE sorry) (homOfLE sorry) (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) hn₁ sorry
Tactic: subst h hn₂ h₀ h₁ h₂ h₃
Cleared hypotheses: i₀, i₁, i₂, i₃, h₀, h₁, h₂, h₃, n₁, n₂, h, hn₂, hn₁
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
i₀ i₁ i₂ i₃ i₄ i₅ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₄ : i₃ ⟶ i₄
f₅ : i₄ ⟶ i₅
h₀ : i₀ = data.i₀ r pq' ⋯
h₁ : i₁ = data.i₁ pq'
h₂ : i₂ = data.i₀ r pq ⋯
h₃ : i₃ = data.i₁ pq
h₄ : i₄ = data.i₂ pq
h₅ : i₅ = data.i₃ r pq ⋯
n₀ n₁ n₂ n₃ : ℤ
hn₁' : n₁ = data.deg pq
hn₁ : autoParam (n₀ + 1 = n₁) pageD_eq._auto_1
hn₂ : autoParam (n₁ + 1 = n₂) pageD_eq._auto_2
hn₃ : autoParam (n₂ + 1 = n₃) pageD_eq._auto_3
⊢ i₂ = data.i₂ pq'
have rw : data.i₀ r pq sorry = data.i₂ pq'
Tactic: rw [h₂, data.hc₀₂ r pq pq' hpq]
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
i₀ i₁ i₂ i₃ i₄ i₅ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₄ : i₃ ⟶ i₄
f₅ : i₄ ⟶ i₅
h₀ : i₀ = data.i₀ r pq' ⋯
h₁ : i₁ = data.i₁ pq'
h₂ : i₂ = data.i₀ r pq ⋯
h₃ : i₃ = data.i₁ pq
h₄ : i₄ = data.i₂ pq
h₅ : i₅ = data.i₃ r pq ⋯
n₀ n₁ n₂ n₃ : ℤ
hn₁' : n₁ = data.deg pq
hn₁ : autoParam (n₀ + 1 = n₁) pageD_eq._auto_1
hn₂ : autoParam (n₁ + 1 = n₂) pageD_eq._auto_2
hn₃ : autoParam (n₂ + 1 = n₃) pageD_eq._auto_3
rw : data.i₀ r pq ⋯ = data.i₂ pq'
⊢ i₂ = data.i₂ pq'
have rw₁ : data.i₂ pq' = data.i₂ pq'
Tactic: rw [h₂, data.hc₀₂ r pq pq' hpq]
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
i₀ i₁ i₂ i₃ i₄ i₅ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₄ : i₃ ⟶ i₄
f₅ : i₄ ⟶ i₅
h₀ : i₀ = data.i₀ r pq' ⋯
h₁ : i₁ = data.i₁ pq'
h₂ : i₂ = data.i₀ r pq ⋯
h₃ : i₃ = data.i₁ pq
h₄ : i₄ = data.i₂ pq
h₅ : i₅ = data.i₃ r pq ⋯
n₀ n₁ n₂ n₃ : ℤ
hn₁' : n₁ = data.deg pq
hn₁ : autoParam (n₀ + 1 = n₁) pageD_eq._auto_1
hn₂ : autoParam (n₁ + 1 = n₂) pageD_eq._auto_2
hn₃ : autoParam (n₂ + 1 = n₃) pageD_eq._auto_3
⊢ i₃ = data.i₃ r pq' ⋯
have rw : data.i₁ pq = data.i₃ r pq' sorry
Tactic: rw [h₃, data.hc₁₃ r pq pq' hpq]
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
i₀ i₁ i₂ i₃ i₄ i₅ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₄ : i₃ ⟶ i₄
f₅ : i₄ ⟶ i₅
h₀ : i₀ = data.i₀ r pq' ⋯
h₁ : i₁ = data.i₁ pq'
h₂ : i₂ = data.i₀ r pq ⋯
h₃ : i₃ = data.i₁ pq
h₄ : i₄ = data.i₂ pq
h₅ : i₅ = data.i₃ r pq ⋯
n₀ n₁ n₂ n₃ : ℤ
hn₁' : n₁ = data.deg pq
hn₁ : autoParam (n₀ + 1 = n₁) pageD_eq._auto_1
hn₂ : autoParam (n₁ + 1 = n₂) pageD_eq._auto_2
hn₃ : autoParam (n₂ + 1 = n₃) pageD_eq._auto_3
rw : data.i₁ pq = data.i₃ r pq' ⋯
⊢ i₃ = data.i₃ r pq' ⋯
have rw₁ : data.i₃ r pq' sorry = data.i₃ r pq' sorry
Tactic: rw [h₃, data.hc₁₃ r pq pq' hpq]
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
i₀ i₁ i₂ i₃ i₄ i₅ : ι
f₁ : i₀ ⟶ i₁
f₂ : i₁ ⟶ i₂
f₃ : i₂ ⟶ i₃
f₄ : i₃ ⟶ i₄
f₅ : i₄ ⟶ i₅
h₀ : i₀ = data.i₀ r pq' ⋯
h₁ : i₁ = data.i₁ pq'
h₂ : i₂ = data.i₀ r pq ⋯
h₃ : i₃ = data.i₁ pq
h₄ : i₄ = data.i₂ pq
h₅ : i₅ = data.i₃ r pq ⋯
n₀ n₁ n₂ n₃ : ℤ
hn₁' : n₁ = data.deg pq
hn₁ : n₀ + 1 = n₁
hn₂ : n₁ + 1 = n₂
hn₃ : n₂ + 1 = n₃
⊢ Eq (α := pageX X data r pq ⋯ ⟶ pageX X data r pq' ⋯) (pageD X data r pq pq' ⋯)
    (Iso.hom (pageXIso X data r ⋯ pq i₂ i₃ i₄ i₅ h₂ h₃ h₄ h₅ n₀ n₁ n₂ hn₁' hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ n₀ n₁ n₂ n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv (pageXIso X data r ⋯ pq' i₀ i₁ i₂ i₃ h₀ h₁ ⋯ ⋯ n₁ n₂ n₃ ⋯ hn₂ hn₃))
have subst : ∀ (hn₁ : n₀ + 1 = data.deg pq) (hn₂ : data.deg pq + 1 = n₂) (f₁ : data.i₀ r pq' sorry ⟶ data.i₁ pq')
  (f₂ : data.i₁ pq' ⟶ data.i₀ r pq sorry) (f₃ : data.i₀ r pq sorry ⟶ data.i₁ pq) (f₄ : data.i₁ pq ⟶ data.i₂ pq)
  (f₅ : data.i₂ pq ⟶ data.i₃ r pq sorry),
  Eq (α := pageX X data r pq sorry ⟶ pageX X data r pq' sorry) (pageD X data r pq pq' sorry)
    (Iso.hom
        (pageXIso X data r sorry pq (data.i₀ r pq sorry) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq sorry) sorry sorry sorry sorry n₀ (data.deg pq) n₂
          sorry hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ n₀ (data.deg pq) n₂ n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r sorry pq' (data.i₀ r pq' sorry) (data.i₁ pq') (data.i₀ r pq sorry) (data.i₁ pq) sorry sorry sorry sorry (data.deg pq)
            n₂ n₃ sorry hn₂ hn₃))
Tactic: subst hn₁' h₀ h₁ h₂ h₃ h₄ h₅
Cleared hypotheses: i₀, i₁, i₂, i₃, i₄, i₅, f₁, f₂, f₃, f₄, f₅, h₀, h₁, h₂, h₃, h₄, h₅, n₁, hn₁', hn₁, hn₂
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
n₀ n₂ n₃ : ℤ
hn₃ : n₂ + 1 = n₃
hn₁ : n₀ + 1 = data.deg pq
hn₂ : data.deg pq + 1 = n₂
f₁ : data.i₀ r pq' ⋯ ⟶ data.i₁ pq'
f₂ : data.i₁ pq' ⟶ data.i₀ r pq ⋯
f₃ : data.i₀ r pq ⋯ ⟶ data.i₁ pq
f₄ : data.i₁ pq ⟶ data.i₂ pq
f₅ : data.i₂ pq ⟶ data.i₃ r pq ⋯
⊢ Eq (α := pageX X data r pq ⋯ ⟶ pageX X data r pq' ⋯) (pageD X data r pq pq' ⋯)
    (Iso.hom
        (pageXIso X data r ⋯ pq (data.i₀ r pq ⋯) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq ⋯) ⋯ ⋯ ⋯ ⋯ n₀ (data.deg pq) n₂
          ⋯ hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ n₀ (data.deg pq) n₂ n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r ⋯ pq' (data.i₀ r pq' ⋯) (data.i₁ pq') (data.i₀ r pq ⋯) (data.i₁ pq) ⋯ ⋯ ⋯ ⋯ (data.deg pq)
            n₂ n₃ ⋯ hn₂ hn₃))
have obtain : ∀ (hn₁ : data.deg pq - 1 + 1 = data.deg pq),
  Eq (α := pageX X data r pq sorry ⟶ pageX X data r pq' sorry) (pageD X data r pq pq' sorry)
    (Iso.hom
        (pageXIso X data r sorry pq (data.i₀ r pq sorry) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq sorry) sorry sorry sorry sorry (data.deg pq - 1)
          (data.deg pq) n₂ sorry hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) n₂ n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r sorry pq' (data.i₀ r pq' sorry) (data.i₁ pq') (data.i₀ r pq sorry) (data.i₁ pq) sorry sorry sorry sorry (data.deg pq)
            n₂ n₃ sorry hn₂ hn₃))
Tactic: obtain rfl : n₀ = data.deg pq - 1 := by lia
Cleared hypotheses: n₀, hn₁
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
n₂ n₃ : ℤ
hn₃ : n₂ + 1 = n₃
hn₂ : data.deg pq + 1 = n₂
f₁ : data.i₀ r pq' ⋯ ⟶ data.i₁ pq'
f₂ : data.i₁ pq' ⟶ data.i₀ r pq ⋯
f₃ : data.i₀ r pq ⋯ ⟶ data.i₁ pq
f₄ : data.i₁ pq ⟶ data.i₂ pq
f₅ : data.i₂ pq ⟶ data.i₃ r pq ⋯
hn₁ : data.deg pq - 1 + 1 = data.deg pq
⊢ Eq (α := pageX X data r pq ⋯ ⟶ pageX X data r pq' ⋯) (pageD X data r pq pq' ⋯)
    (Iso.hom
        (pageXIso X data r ⋯ pq (data.i₀ r pq ⋯) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq ⋯) ⋯ ⋯ ⋯ ⋯ (data.deg pq - 1)
          (data.deg pq) n₂ ⋯ hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) n₂ n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r ⋯ pq' (data.i₀ r pq' ⋯) (data.i₁ pq') (data.i₀ r pq ⋯) (data.i₁ pq) ⋯ ⋯ ⋯ ⋯ (data.deg pq)
            n₂ n₃ ⋯ hn₂ hn₃))
have obtain : ∀ (hn₃ : data.deg pq + 1 + 1 = n₃) (hn₂ : data.deg pq + 1 = data.deg pq + 1),
  Eq (α := pageX X data r pq sorry ⟶ pageX X data r pq' sorry) (pageD X data r pq pq' sorry)
    (Iso.hom
        (pageXIso X data r sorry pq (data.i₀ r pq sorry) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq sorry) sorry sorry sorry sorry (data.deg pq - 1)
          (data.deg pq) (data.deg pq + 1) sorry hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r sorry pq' (data.i₀ r pq' sorry) (data.i₁ pq') (data.i₀ r pq sorry) (data.i₁ pq) sorry sorry sorry sorry (data.deg pq)
            (data.deg pq + 1) n₃ sorry hn₂ hn₃))
Tactic: obtain rfl : n₂ = data.deg pq + 1 := by lia
Cleared hypotheses: n₂, hn₃, hn₂
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
n₃ : ℤ
f₁ : data.i₀ r pq' ⋯ ⟶ data.i₁ pq'
f₂ : data.i₁ pq' ⟶ data.i₀ r pq ⋯
f₃ : data.i₀ r pq ⋯ ⟶ data.i₁ pq
f₄ : data.i₁ pq ⟶ data.i₂ pq
f₅ : data.i₂ pq ⟶ data.i₃ r pq ⋯
hn₁ : data.deg pq - 1 + 1 = data.deg pq
hn₃ : data.deg pq + 1 + 1 = n₃
hn₂ : data.deg pq + 1 = data.deg pq + 1
⊢ Eq (α := pageX X data r pq ⋯ ⟶ pageX X data r pq' ⋯) (pageD X data r pq pq' ⋯)
    (Iso.hom
        (pageXIso X data r ⋯ pq (data.i₀ r pq ⋯) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq ⋯) ⋯ ⋯ ⋯ ⋯ (data.deg pq - 1)
          (data.deg pq) (data.deg pq + 1) ⋯ hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) n₃ hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r ⋯ pq' (data.i₀ r pq' ⋯) (data.i₁ pq') (data.i₀ r pq ⋯) (data.i₁ pq) ⋯ ⋯ ⋯ ⋯ (data.deg pq)
            (data.deg pq + 1) n₃ ⋯ hn₂ hn₃))
have obtain : ∀ (hn₃ : data.deg pq + 1 + 1 = data.deg pq + 2),
  Eq (α := pageX X data r pq sorry ⟶ pageX X data r pq' sorry) (pageD X data r pq pq' sorry)
    (Iso.hom
        (pageXIso X data r sorry pq (data.i₀ r pq sorry) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq sorry) sorry sorry sorry sorry (data.deg pq - 1)
          (data.deg pq) (data.deg pq + 1) sorry hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) (data.deg pq + 2) hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r sorry pq' (data.i₀ r pq' sorry) (data.i₁ pq') (data.i₀ r pq sorry) (data.i₁ pq) sorry sorry sorry sorry (data.deg pq)
            (data.deg pq + 1) (data.deg pq + 2) sorry hn₂ hn₃))
Tactic: obtain rfl : n₃ = data.deg pq + 2 := by lia
Cleared hypotheses: n₃, hn₃
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' : κ
hpq : (c r).Rel pq pq'
f₁ : data.i₀ r pq' ⋯ ⟶ data.i₁ pq'
f₂ : data.i₁ pq' ⟶ data.i₀ r pq ⋯
f₃ : data.i₀ r pq ⋯ ⟶ data.i₁ pq
f₄ : data.i₁ pq ⟶ data.i₂ pq
f₅ : data.i₂ pq ⟶ data.i₃ r pq ⋯
hn₁ : data.deg pq - 1 + 1 = data.deg pq
hn₂ : data.deg pq + 1 = data.deg pq + 1
hn₃ : data.deg pq + 1 + 1 = data.deg pq + 2
⊢ Eq (α := pageX X data r pq ⋯ ⟶ pageX X data r pq' ⋯) (pageD X data r pq pq' ⋯)
    (Iso.hom
        (pageXIso X data r ⋯ pq (data.i₀ r pq ⋯) (data.i₁ pq) (data.i₂ pq) (data.i₃ r pq ⋯) ⋯ ⋯ ⋯ ⋯ (data.deg pq - 1)
          (data.deg pq) (data.deg pq + 1) ⋯ hn₁ hn₂) ≫
      X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) (data.deg pq + 2) hn₁ hn₂ hn₃ ≫
        Iso.inv
          (pageXIso X data r ⋯ pq' (data.i₀ r pq' ⋯) (data.i₁ pq') (data.i₀ r pq ⋯) (data.i₁ pq) ⋯ ⋯ ⋯ ⋯ (data.deg pq)
            (data.deg pq + 1) (data.deg pq + 2) ⋯ hn₂ hn₃))
have dsimp : Eq (α := pageX X data r pq sorry ⟶ pageX X data r pq' sorry)
  (if hpq : (c r).Rel pq pq' then
    CategoryStruct.comp (Y :=
      X.E (i := data.i₀ r pq' sorry) (k := data.i₀ r pq sorry) (homOfLE sorry : data.i₀ r pq' sorry ⟶ data.i₁ pq')
        (homOfLE sorry : data.i₁ pq' ⟶ data.i₀ r pq sorry) (homOfLE sorry : data.i₀ r pq sorry ⟶ data.i₁ pq) (data.deg pq)
        (data.deg pq + 1) (data.deg pq + 2) sorry sorry)
      (X.d (homOfLE sorry) (homOfLE sorry) (homOfLE sorry) (homOfLE sorry) (homOfLE sorry) (data.deg pq - 1) (data.deg pq) (data.deg pq + 1)
          (data.deg pq + 2) sorry sorry sorry :
        X.E (i := data.i₀ r pq sorry) (l := data.i₃ r pq sorry) (homOfLE sorry : data.i₀ r pq sorry ⟶ data.i₁ pq) (homOfLE sorry)
            (homOfLE sorry : data.i₂ pq ⟶ data.i₃ r pq sorry) (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) sorry sorry ⟶
          X.E (i := data.i₀ r pq' sorry) (k := data.i₀ r pq sorry) (homOfLE sorry : data.i₀ r pq' sorry ⟶ data.i₁ pq')
            (homOfLE sorry : data.i₁ pq' ⟶ data.i₀ r pq sorry) (homOfLE sorry : data.i₀ r pq sorry ⟶ data.i₁ pq) (data.deg pq)
            (data.deg pq + 1) (data.deg pq + 2) sorry sorry)
      (eqToHom sorry :
        X.E (i := data.i₀ r pq' sorry) (k := data.i₀ r pq sorry) (homOfLE sorry : data.i₀ r pq' sorry ⟶ data.i₁ pq')
            (homOfLE sorry : data.i₁ pq' ⟶ data.i₀ r pq sorry) (homOfLE sorry : data.i₀ r pq sorry ⟶ data.i₁ pq) (data.deg pq)
            (data.deg pq + 1) (data.deg pq + 2) sorry sorry ⟶
          pageX X data r pq' sorry)
  else 0)
  (𝟙 (pageX X data r pq sorry) ≫
    X.d f₁ f₂ f₃ f₄ f₅ (data.deg pq - 1) (data.deg pq) (data.deg pq + 1) (data.deg pq + 2) hn₁ hn₂ hn₃ ≫ eqToHom sorry)
Tactic: dsimp [pageD, pageXIso]
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' pq'' : κ
⊢ pageD X data r pq pq' hr ≫ pageD X data r pq' pq'' hr = 0
have pos : ∀ (hpq : (c r).Rel pq pq'), pageD X data r pq pq' hr ≫ pageD X data r pq' pq'' hr = 0
Tactic: by_cases hpq : (c r).Rel pq pq'
-- Lean 4 proof step from Mathlib.Algebra.Homology.SpectralObject.SpectralSequence (goal)
Goal:
C : Type u_1
ι : Type u_2
κ : Type u_3
inst : Category.{v_1, u_1} C
inst_1 : Abelian.{v_1, u_1} C
inst_2 : Preorder ι
X : SpectralObject.{u_1, u_2, v_1, u_2} C ι
c : ℤ → ComplexShape κ
r₀ : ℤ
data : SpectralSequenceDataCore ι c r₀
r : ℤ
hr : r₀ ≤ r
pq pq' pq'' : κ
pos : ∀ (hpq : (c r).Rel pq pq'), pageD X data r pq pq' hr ≫ pageD X data r pq' pq'' hr = 0
⊢ pageD X data r pq pq' hr ≫ pageD X data r pq' pq'' hr = 0
have neg : ∀ (hpq : ¬(c r).Rel pq pq'), pageD X data r pq pq' hr ≫ pageD X data r pq' pq'' hr = 0
Tactic: by_cases hpq : (c r).Rel pq pq'