Theorem: CategoryTheory.Abelian.mono_of_epi_of_mono_of_mono
File: Mathlib/CategoryTheory/Abelian/DiagramLemmas/Four.lean

tactic: rw [← Pseudoelement.comp_apply, ← comm₃, Pseudoelement.comp_apply]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
⊢ pseudoApply δ (pseudoApply h c) = pseudoApply h' (pseudoApply γ c)

tactic: rw [hc]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
⊢ pseudoApply h' (pseudoApply γ c) = pseudoApply h' 0

tactic: rw [← Pseudoelement.comp_apply, comm₂, Pseudoelement.comp_apply]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
this : pseudoApply h c = 0
b : Pseudoelement B
hb : pseudoApply g b = c
⊢ pseudoApply g' (pseudoApply β b) = pseudoApply γ (pseudoApply g b)

tactic: rw [hb]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
this : pseudoApply h c = 0
b : Pseudoelement B
hb : pseudoApply g b = c
⊢ pseudoApply γ (pseudoApply g b) = pseudoApply γ c

tactic: rw [← Pseudoelement.comp_apply, ← comm₁, Pseudoelement.comp_apply]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
this✝ : pseudoApply h c = 0
b : Pseudoelement B
hb : pseudoApply g b = c
this : pseudoApply g' (pseudoApply β b) = 0
a' : Pseudoelement A'
ha' : pseudoApply f' a' = pseudoApply β b
a : Pseudoelement A
ha : pseudoApply α a = a'
⊢ pseudoApply β (pseudoApply f a) = pseudoApply f' (pseudoApply α a)

tactic: rw [ha]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
this✝ : pseudoApply h c = 0
b : Pseudoelement B
hb : pseudoApply g b = c
this : pseudoApply g' (pseudoApply β b) = 0
a' : Pseudoelement A'
ha' : pseudoApply f' a' = pseudoApply β b
a : Pseudoelement A
ha : pseudoApply α a = a'
⊢ pseudoApply f' (pseudoApply α a) = pseudoApply f' a'

tactic: rw [this]
state_before: V : Type u
inst✝¹ : Category V
inst✝ : Abelian V
A B C D A' B' C' D' : V
f : A ⟶ B
g : B ⟶ C
h : C ⟶ D
f' : A' ⟶ B'
g' : B' ⟶ C'
h' : C' ⟶ D'
α : A ⟶ A'
β : B ⟶ B'
γ : C ⟶ C'
δ : D ⟶ D'
comm₁ : α ≫ f' = f ≫ β
comm₂ : β ≫ g' = g ≫ γ
comm₃ : γ ≫ h' = h ≫ δ
hfg : Exact f g
hgh : Exact g h
hf'g' : Exact f' g'
hα : Epi α
hβ : Mono β
hδ : Mono δ
c : Pseudoelement C
hc : pseudoApply γ c = 0
this✝¹ : pseudoApply h c = 0
b : Pseudoelement B
hb : pseudoApply g b = c
this✝ : pseudoApply g' (pseudoApply β b) = 0
a' : Pseudoelement A'
ha' : pseudoApply f' a' = pseudoApply β b
a : Pseudoelement A
ha : pseudoApply α a = a'
this : pseudoApply f a = b
⊢ pseudoApply g b = pseudoApply g (pseudoApply f a)