Theorem: CategoryTheory.Abelian.tfae_mono
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: tfae_have 3 → 2
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE
state_after: case tfae_3_to_2
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact 0 f → kernel.ι f = 0

C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE

tactic: tfae_have 1 → 3
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE
state_after: case tfae_1_to_3
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
⊢ Mono f → Exact 0 f

C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE

tactic: tfae_have 2 → 1
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE
state_after: case tfae_2_to_1
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
⊢ kernel.ι f = 0 → Mono f

C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
tfae_2_to_1 : kernel.ι f = 0 → Mono f
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE

tactic: tfae_finish
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
tfae_2_to_1 : kernel.ι f = 0 → Mono f
⊢ [Mono f, kernel.ι f = 0, Exact 0 f].TFAE
state_after: no goals

tactic: exact kernel_ι_eq_zero_of_exact_zero_left Z
state_before: case tfae_3_to_2
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact 0 f → kernel.ι f = 0
state_after: no goals

tactic: intros
state_before: case tfae_1_to_3
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
⊢ Mono f → Exact 0 f
state_after: case tfae_1_to_3
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
a✝ : Mono f
⊢ Exact 0 f

tactic: exact exact_zero_left_of_mono Z
state_before: case tfae_1_to_3
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
a✝ : Mono f
⊢ Exact 0 f
state_after: no goals

tactic: exact mono_of_kernel_ι_eq_zero _
state_before: case tfae_2_to_1
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
tfae_3_to_2 : Exact 0 f → kernel.ι f = 0
tfae_1_to_3 : Mono f → Exact 0 f
⊢ kernel.ι f = 0 → Mono f
state_after: no goals