Skip to content

Commit 58f7089

Browse files
committed
feat(CategoryTheory/Abelian): five lemma variant for zero objects on the left resp. on the right (leanprover-community#36125)
1 parent fd3512c commit 58f7089

File tree

1 file changed

+45
-0
lines changed
  • Mathlib/CategoryTheory/Abelian/DiagramLemmas

1 file changed

+45
-0
lines changed

Mathlib/CategoryTheory/Abelian/DiagramLemmas/Four.lean

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,51 @@ theorem epi_of_epi_of_epi_of_epi (hR₂ : R₂.Exact) (hR₁' : Epi (R₁.map' 1
228228
rw [ShortComplex.exact_iff_epi _ (by simp)]
229229
exact hR₁'
230230

231+
open ZeroObject
232+
233+
set_option backward.isDefEq.respectTransparency false in
234+
lemma isIso_of_epi_of_isIso (hR₁ : R₁.Exact) (hR₂ : R₂.Exact) (hR₁' : Epi (R₁.map' 1 2))
235+
(hR₂' : Epi (R₂.map' 1 2)) (h₀ : Epi (app' φ 0)) (h₁ : IsIso (app' φ 1)) :
236+
IsIso (app' φ 2) := by
237+
let ψ : mk₄ (R₁.map' 0 1) (R₁.map' 1 2) (0 : _ ⟶ (0 : C)) (0 : _ ⟶ (0 : C)) ⟶
238+
mk₄ (R₂.map' 0 1) (R₂.map' 1 2) (0 : _ ⟶ (0 : C)) (0 : _ ⟶ (0 : C)) :=
239+
homMk₄ (app' φ 0) (app' φ 1) (app' φ 2) 0 0 (naturality' φ 0 1)
240+
(naturality' φ 1 2) (by simp) (by simp)
241+
refine isIso_of_epi_of_isIso_of_isIso_of_mono ?_ ?_ ψ h₀ h₁ inferInstance inferInstance
242+
· refine exact_of_δ₀ (hR₁.exact 0).exact_toComposableArrows (exact_of_δ₀ ?_ ?_)
243+
· refine exact₂_mk _ (by simp) ?_
244+
rwa [ShortComplex.exact_iff_epi _ (by simp)]
245+
· refine exact₂_mk _ (by simp) ?_
246+
rw [ShortComplex.exact_iff_epi _ (by simp)]
247+
infer_instance
248+
· refine exact_of_δ₀ (hR₂.exact 0).exact_toComposableArrows (exact_of_δ₀ ?_ ?_)
249+
· refine exact₂_mk _ (by simp) ?_
250+
rwa [ShortComplex.exact_iff_epi _ (by simp)]
251+
· refine exact₂_mk _ (by simp) ?_
252+
rw [ShortComplex.exact_iff_epi _ (by simp)]
253+
infer_instance
254+
255+
set_option backward.isDefEq.respectTransparency false in
256+
lemma isIso_of_isIso_of_mono (hR₁ : R₁.Exact) (hR₂ : R₂.Exact) (hR₁' : Mono (R₁.map' 0 1))
257+
(hR₂' : Mono (R₂.map' 0 1)) (h₁ : IsIso (app' φ 1)) (h₂ : Mono (app' φ 2)) :
258+
IsIso (app' φ 0) := by
259+
let ψ : mk₄ (0 : (0 : C) ⟶ (0 : C)) (0 : _ ⟶ _) (R₁.map' 0 1) (R₁.map' 1 2) ⟶
260+
mk₄ (0 : (0 : C) ⟶ (0 : C)) (0 : _ ⟶ _) (R₂.map' 0 1) (R₂.map' 1 2) :=
261+
homMk₄ 0 0 (app' φ 0) (app' φ 1) (app' φ 2) (by simp) (by simp) (naturality' φ 0 1)
262+
(naturality' φ 1 2)
263+
refine isIso_of_epi_of_isIso_of_isIso_of_mono ?_ ?_ ψ inferInstance inferInstance h₁ h₂
264+
· refine exact_of_δ₀ (exact₂_mk _ (by simp) ?_) (exact_of_δ₀ ?_ (exact₂_mk _ _ (hR₁.exact 0)))
265+
· rw [ShortComplex.exact_iff_mono _ (by simp)]
266+
infer_instance
267+
· refine exact₂_mk _ (by simp) ?_
268+
rwa [ShortComplex.exact_iff_mono _ (by simp)]
269+
· refine exact_of_δ₀ ?_ (exact_of_δ₀ ?_ (exact₂_mk _ _ (hR₂.exact 0)))
270+
· refine exact₂_mk _ (by simp) ?_
271+
rw [ShortComplex.exact_iff_mono _ (by simp)]
272+
infer_instance
273+
· refine exact₂_mk _ (by simp) ?_
274+
rwa [ShortComplex.exact_iff_mono _ (by simp)]
275+
231276
end Three
232277

233278
end Abelian

0 commit comments

Comments
 (0)