Skip to content

Commit 364d070

Browse files
committed
feat(Algebra/Homology): lemmas for diagram chasing in homological complexes (leanprover-community#35931)
1 parent 6d65385 commit 364d070

1 file changed

Lines changed: 66 additions & 1 deletion

File tree

Mathlib/Algebra/Homology/Refinements.lean

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,80 @@ public section
2323
open CategoryTheory
2424

2525
variable {C ι : Type*} [Category* C] [Abelian C] {c : ComplexShape ι}
26-
(K : HomologicalComplex C c)
26+
(K L : HomologicalComplex C c) (φ : K ⟶ L)
2727

2828
namespace HomologicalComplex
2929

30+
lemma exactAt_iff_exact_up_to_refinements (i j k : ι) (hi : c.prev j = i) (hk : c.next j = k) :
31+
K.ExactAt j ↔ ∀ ⦃A : C⦄ (x₂ : A ⟶ K.X j) (_ : x₂ ≫ K.d j k = 0),
32+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₁ : A' ⟶ K.X i), π ≫ x₂ = x₁ ≫ K.d i j := by
33+
rw [K.exactAt_iff' i j k hi hk]
34+
exact (K.sc' i j k).exact_iff_exact_up_to_refinements
35+
3036
lemma eq_liftCycles_homologyπ_up_to_refinements {A : C} {i : ι} (γ : A ⟶ K.homology i)
3137
(j : ι) (hj : c.next i = j) :
3238
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (z : A' ⟶ K.X i) (hz : z ≫ K.d i j = 0),
3339
π ≫ γ = K.liftCycles z j hj hz ≫ K.homologyπ i := by
3440
subst hj
3541
exact (K.sc i).eq_liftCycles_homologyπ_up_to_refinements γ
3642

43+
lemma liftCycles_comp_homologyπ_eq_zero_iff_up_to_refinements
44+
(i j k : ι) (hi : c.prev j = i) (hk : c.next j = k)
45+
{A : C} (x₂ : A ⟶ K.X j) (hx₂ : x₂ ≫ K.d j k = 0) :
46+
K.liftCycles x₂ k hk hx₂ ≫ K.homologyπ j = 0
47+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₁ : A' ⟶ K.X i), π ≫ x₂ = x₁ ≫ K.d i j := by
48+
subst hi hk
49+
exact (K.sc j).liftCycles_comp_homologyπ_eq_zero_iff_up_to_refinements x₂ hx₂
50+
51+
lemma liftCycles_comp_homologyπ_eq_iff_up_to_refinements
52+
(i j k : ι) (hi : c.prev j = i) (hk : c.next j = k)
53+
{A : C} (x₂ x₂' : A ⟶ K.X j) (hx₂ : x₂ ≫ K.d j k = 0) (hx₂' : x₂' ≫ K.d j k = 0) :
54+
K.liftCycles x₂ k hk hx₂ ≫ K.homologyπ j = K.liftCycles x₂' k hk hx₂' ≫ K.homologyπ j ↔
55+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₁ : A' ⟶ K.X i), π ≫ x₂ = π ≫ x₂' + x₁ ≫ K.d i j := by
56+
subst hi hk
57+
exact (K.sc j).liftCycles_comp_homologyπ_eq_iff_up_to_refinements x₂ x₂' hx₂ hx₂'
58+
59+
lemma comp_homologyπ_eq_zero_iff_up_to_refinements
60+
(i j : ι) (hi : c.prev j = i)
61+
{A : C} (z₂ : A ⟶ K.cycles j) : z₂ ≫ K.homologyπ j = 0
62+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₁ : A' ⟶ K.X i), π ≫ z₂ = x₁ ≫ K.toCycles i j := by
63+
subst hi
64+
exact (K.sc j).comp_homologyπ_eq_zero_iff_up_to_refinements z₂
65+
66+
lemma comp_homologyπ_eq_iff_up_to_refinements
67+
(i j : ι) (hi : c.prev j = i)
68+
{A : C} (z₂ z₂' : A ⟶ K.cycles j) : z₂ ≫ K.homologyπ j = z₂' ≫ K.homologyπ j ↔
69+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₁ : A' ⟶ K.X i),
70+
π ≫ z₂ = π ≫ z₂' + x₁ ≫ K.toCycles i j:= by
71+
subst hi
72+
exact (K.sc j).comp_homologyπ_eq_iff_up_to_refinements z₂ z₂'
73+
74+
lemma comp_pOpcycles_eq_zero_iff_up_to_refinements
75+
{A : C} {i : ι} (z : A ⟶ K.X i) (j : ι) (hj : c.prev i = j) :
76+
z ≫ K.pOpcycles i = 0
77+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x : A' ⟶ K.X j), π ≫ z = x ≫ K.d j i := by
78+
subst hj
79+
apply (K.sc i).comp_pOpcycles_eq_zero_iff_up_to_refinements
80+
81+
variable {K L}
82+
83+
lemma mono_homologyMap_iff_up_to_refinements
84+
(i j k : ι) (hi : c.prev j = i) (hk : c.next j = k) :
85+
Mono (homologyMap φ j) ↔
86+
∀ ⦃A : C⦄ (x₂ : A ⟶ K.X j) (_ : x₂ ≫ K.d j k = 0) (y₁ : A ⟶ L.X i)
87+
(_ : x₂ ≫ φ.f j = y₁ ≫ L.d i j),
88+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₁ : A' ⟶ K.X i),
89+
π ≫ x₂ = x₁ ≫ K.d i j := by
90+
subst hi hk
91+
apply ShortComplex.mono_homologyMap_iff_up_to_refinements
92+
93+
lemma epi_homologyMap_iff_up_to_refinements
94+
(i j k : ι) (hi : c.prev j = i) (hk : c.next j = k) :
95+
Epi (homologyMap φ j) ↔
96+
∀ ⦃A : C⦄ (y₂ : A ⟶ L.X j) (_ : y₂ ≫ L.d j k = 0),
97+
∃ (A' : C) (π : A' ⟶ A) (_ : Epi π) (x₂ : A' ⟶ K.X j) (_ : x₂ ≫ K.d j k = 0)
98+
(y₁ : A' ⟶ L.X i), π ≫ y₂ = x₂ ≫ φ.f j + y₁ ≫ L.d i j := by
99+
subst hi hk
100+
apply ShortComplex.epi_homologyMap_iff_up_to_refinements
101+
37102
end HomologicalComplex

0 commit comments

Comments
 (0)