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

tactic: constructor
state_before: R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
⊢ Inducing ↑(comap (algebraMap R S))

tactic: rw [topologicalSpace_eq_iff]
state_before: case induced
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
⊢ zariskiTopology = TopologicalSpace.induced (↑(comap (algebraMap R S))) zariskiTopology

tactic: intro U
state_before: case induced
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
⊢ ∀ (s : Set (PrimeSpectrum S)), IsOpen s ↔ IsOpen s

tactic: rw [← isClosed_compl_iff, ← @isClosed_compl_iff (α := PrimeSpectrum S) (s := U)]
state_before: case induced
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
⊢ IsOpen U ↔ IsOpen U

tactic: generalize Uᶜ = Z
state_before: case induced
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
⊢ IsClosed (Uᶜ) ↔ IsClosed (Uᶜ)

tactic: simp_rw [isClosed_induced_iff, isClosed_iff_zeroLocus]
state_before: case induced
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U Z : Set (PrimeSpectrum S)
⊢ IsClosed Z ↔ IsClosed Z

tactic: constructor
state_before: case induced
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U Z : Set (PrimeSpectrum S)
⊢ (∃ s, Z = zeroLocus s) ↔ ∃ t, (∃ s, t = zeroLocus s) ∧ ↑(comap (algebraMap R S)) ⁻¹' t = Z

tactic: rintro ⟨s, rfl⟩
state_before: case induced.mp
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U Z : Set (PrimeSpectrum S)
⊢ (∃ s, Z = zeroLocus s) → ∃ t, (∃ s, t = zeroLocus s) ∧ ↑(comap (algebraMap R S)) ⁻¹' t = Z

tactic: refine ⟨_, ⟨algebraMap R S ⁻¹' Ideal.span s, rfl⟩, ?_⟩
state_before: case induced.mp.intro
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
s : Set S
⊢ ∃ t, (∃ s, t = zeroLocus s) ∧ ↑(comap (algebraMap R S)) ⁻¹' t = zeroLocus s

tactic: rw [preimage_comap_zeroLocus, ← zeroLocus_span, ← zeroLocus_span s]
state_before: case induced.mp.intro
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
s : Set S
⊢ ↑(comap (algebraMap R S)) ⁻¹' zeroLocus (↑(algebraMap R S) ⁻¹' ↑(Ideal.span s)) = zeroLocus s

tactic: congr 2
state_before: case induced.mp.intro
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
s : Set S
⊢ zeroLocus ↑(Ideal.span (↑(algebraMap R S) '' (↑(algebraMap R S) ⁻¹' ↑(Ideal.span s)))) = zeroLocus ↑(Ideal.span s)

tactic: exact congr_arg (zeroLocus .) <| Submodule.carrier_inj.mpr
  (IsLocalization.map_comap M S (Ideal.span s))
state_before: case induced.mp.intro
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
s : Set S
⊢ zeroLocus ↑(Ideal.span (↑(algebraMap R S) '' (↑(algebraMap R S) ⁻¹' ↑(Ideal.span s)))) = zeroLocus ↑(Ideal.span s)

tactic: rintro ⟨_, ⟨t, rfl⟩, rfl⟩
state_before: case induced.mpr
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U Z : Set (PrimeSpectrum S)
⊢ (∃ t, (∃ s, t = zeroLocus s) ∧ ↑(comap (algebraMap R S)) ⁻¹' t = Z) → ∃ s, Z = zeroLocus s

tactic: rw [preimage_comap_zeroLocus]
state_before: case induced.mpr.intro.intro.intro
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
t : Set R
⊢ ∃ s, ↑(comap (algebraMap R S)) ⁻¹' zeroLocus t = zeroLocus s

tactic: exact ⟨_, rfl⟩
state_before: case induced.mpr.intro.intro.intro
R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S
S' : Type ?u.199045
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R S
M : Submonoid R
inst✝ : IsLocalization M S
U : Set (PrimeSpectrum S)
t : Set R
⊢ ∃ s, zeroLocus (↑(algebraMap R S) '' t) = zeroLocus s