Theorem: PrimeSpectrum.image_comap_zeroLocus_eq_zeroLocus_comap
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: simp only [Set.ext_iff, Set.mem_image, mem_zeroLocus, SetLike.coe_subset_coe]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
⊢ ↑(comap f) '' zeroLocus ↑I = zeroLocus ↑(Ideal.comap f I)

tactic: refine' fun p => ⟨_, fun h_I_p => _⟩
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
⊢ ∀ (x : PrimeSpectrum R), (∃ x_1, I ≤ x_1.asIdeal ∧ ↑(comap f) x_1 = x) ↔ Ideal.comap f I ≤ x.asIdeal

tactic: rintro ⟨p, hp, rfl⟩ a ha
state_before: case refine'_1
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
⊢ (∃ x, I ≤ x.asIdeal ∧ ↑(comap f) x = p) → Ideal.comap f I ≤ p.asIdeal

tactic: exact hp ha
state_before: case refine'_1.intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum S
hp : I ≤ p.asIdeal
a : R
ha : a ∈ Ideal.comap f I
⊢ a ∈ (↑(comap f) p).asIdeal

tactic: have hp : ker f ≤ p.asIdeal := (Ideal.comap_mono bot_le).trans h_I_p
state_before: case refine'_2
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
⊢ ∃ x, I ≤ x.asIdeal ∧ ↑(comap f) x = p

tactic: refine' ⟨⟨p.asIdeal.map f, Ideal.map_isPrime_of_surjective hf hp⟩, fun x hx => _, _⟩
state_before: case refine'_2
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
⊢ ∃ x, I ≤ x.asIdeal ∧ ↑(comap f) x = p

tactic: obtain ⟨x', rfl⟩ := hf x
state_before: case refine'_2.refine'_1
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x : S
hx : x ∈ I
⊢ x ∈ { asIdeal := Ideal.map f p.asIdeal, IsPrime := (_ : Ideal.IsPrime (Ideal.map f p.asIdeal)) }.asIdeal

tactic: exact Ideal.mem_map_of_mem f (h_I_p hx)
state_before: case refine'_2.refine'_1.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x' : R
hx : ↑f x' ∈ I
⊢ ↑f x' ∈ { asIdeal := Ideal.map f p.asIdeal, IsPrime := (_ : Ideal.IsPrime (Ideal.map f p.asIdeal)) }.asIdeal

tactic: ext x
state_before: case refine'_2.refine'_2
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
⊢ ↑(comap f) { asIdeal := Ideal.map f p.asIdeal, IsPrime := (_ : Ideal.IsPrime (Ideal.map f p.asIdeal)) } = p

tactic: change f x ∈ p.asIdeal.map f ↔ _
state_before: case refine'_2.refine'_2.asIdeal.h
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x : R
⊢ x ∈
      (↑(comap f)
          { asIdeal := Ideal.map f p.asIdeal, IsPrime := (_ : Ideal.IsPrime (Ideal.map f p.asIdeal)) }).asIdeal ↔
    x ∈ p.asIdeal

tactic: rw [Ideal.mem_map_iff_of_surjective f hf]
state_before: case refine'_2.refine'_2.asIdeal.h
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x : R
⊢ ↑f x ∈ Ideal.map f p.asIdeal ↔ x ∈ p.asIdeal

tactic: refine' ⟨_, fun hx => ⟨x, hx, rfl⟩⟩
state_before: case refine'_2.refine'_2.asIdeal.h
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x : R
⊢ (∃ x_1, x_1 ∈ p.asIdeal ∧ ↑f x_1 = ↑f x) ↔ x ∈ p.asIdeal

tactic: rintro ⟨x', hx', heq⟩
state_before: case refine'_2.refine'_2.asIdeal.h
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x : R
⊢ (∃ x_1, x_1 ∈ p.asIdeal ∧ ↑f x_1 = ↑f x) → x ∈ p.asIdeal

tactic: rw [← sub_sub_cancel x' x]
state_before: case refine'_2.refine'_2.asIdeal.h.intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x x' : R
hx' : x' ∈ p.asIdeal
heq : ↑f x' = ↑f x
⊢ x ∈ p.asIdeal

tactic: refine' p.asIdeal.sub_mem hx' (hp _)
state_before: case refine'_2.refine'_2.asIdeal.h.intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x x' : R
hx' : x' ∈ p.asIdeal
heq : ↑f x' = ↑f x
⊢ x' - (x' - x) ∈ p.asIdeal

tactic: rwa [mem_ker, map_sub, sub_eq_zero]
state_before: case refine'_2.refine'_2.asIdeal.h.intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.338029
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
I : Ideal S
p : PrimeSpectrum R
h_I_p : Ideal.comap f I ≤ p.asIdeal
hp : ker f ≤ p.asIdeal
x x' : R
hx' : x' ∈ p.asIdeal
heq : ↑f x' = ↑f x
⊢ x' - x ∈ ker f