Theorem: Ideal.quotientMap_injective'
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

Proof steps:
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
⊢ Injective ⇑(quotientMap I f H)
state_after: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
a : R ⧸ J
ha : (quotientMap I f H) a = 0
⊢ a = 0
tactic: refine (injective_iff_map_eq_zero (quotientMap I f H)).2 fun a ha => ?_
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
a : R ⧸ J
ha : (quotientMap I f H) a = 0
⊢ a = 0
state_after: case intro
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
r : R
ha : (quotientMap I f H) ((Quotient.mk J) r) = 0
⊢ (Quotient.mk J) r = 0
tactic: obtain ⟨r, rfl⟩ := Quotient.mk_surjective a
state_before: case intro
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
r : R
ha : (quotientMap I f H) ((Quotient.mk J) r) = 0
⊢ (Quotient.mk J) r = 0
state_after: case intro
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
r : R
ha : f r ∈ I
⊢ (Quotient.mk J) r = 0
tactic: rw [quotientMap_mk, Quotient.eq_zero_iff_mem] at ha
state_before: case intro
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
J : Ideal R
I : Ideal S
f : R →+* S
H : J ≤ comap f I
h : comap f I ≤ J
r : R
ha : f r ∈ I
⊢ (Quotient.mk J) r = 0
state_after: no goals
tactic: exact Quotient.eq_zero_iff_mem.mpr (h ha)