Theorem: Ideal.comap_minimalPrimes_eq_of_surjective
File: Mathlib/RingTheory/Ideal/MinimalPrime.lean

tactic: ext J
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
⊢ (comap f I).minimalPrimes = comap f '' I.minimalPrimes
state_after: case h
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
⊢ J ∈ (comap f I).minimalPrimes ↔ J ∈ comap f '' I.minimalPrimes

tactic: constructor
state_before: case h
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
⊢ J ∈ (comap f I).minimalPrimes ↔ J ∈ comap f '' I.minimalPrimes
state_after: case h.mp
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
⊢ J ∈ (comap f I).minimalPrimes → J ∈ comap f '' I.minimalPrimes

case h.mpr
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
⊢ J ∈ comap f '' I.minimalPrimes → J ∈ (comap f I).minimalPrimes

tactic: intro H
state_before: case h.mp
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
⊢ J ∈ (comap f I).minimalPrimes → J ∈ comap f '' I.minimalPrimes
state_after: case h.mp
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
H : J ∈ (comap f I).minimalPrimes
⊢ J ∈ comap f '' I.minimalPrimes

tactic: obtain ⟨p, h, rfl⟩ := Ideal.exists_minimalPrimes_comap_eq f J H
state_before: case h.mp
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
H : J ∈ (comap f I).minimalPrimes
⊢ J ∈ comap f '' I.minimalPrimes
state_after: case h.mp.intro.intro
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I p : Ideal S
h : p ∈ I.minimalPrimes
H : comap f p ∈ (comap f I).minimalPrimes
⊢ comap f p ∈ comap f '' I.minimalPrimes

tactic: exact ⟨p, h, rfl⟩
state_before: case h.mp.intro.intro
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I p : Ideal S
h : p ∈ I.minimalPrimes
H : comap f p ∈ (comap f I).minimalPrimes
⊢ comap f p ∈ comap f '' I.minimalPrimes
state_after: no goals

tactic: rintro ⟨J, hJ, rfl⟩
state_before: case h.mpr
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I : Ideal S
J : Ideal R
⊢ J ∈ comap f '' I.minimalPrimes → J ∈ (comap f I).minimalPrimes
state_after: case h.mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I J : Ideal S
hJ : J ∈ I.minimalPrimes
⊢ comap f J ∈ (comap f I).minimalPrimes

tactic: exact Ideal.minimal_primes_comap_of_surjective hf hJ
state_before: case h.mpr.intro.intro
R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
I✝ J✝ : Ideal R
f : R →+* S
hf : Function.Surjective ⇑f
I J : Ideal S
hJ : J ∈ I.minimalPrimes
⊢ comap f J ∈ (comap f I).minimalPrimes
state_after: no goals