Theorem: Ideal.le_of_localization_maximal
File: Mathlib/RingTheory/LocalProperties.lean

tactic: intro x hx
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
⊢ I ≤ J
state_after: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ x ∈ J

tactic: suffices J.colon (Ideal.span {x}) = ⊤ by
  simpa using Submodule.mem_colon.mp
    (show (1 : R) ∈ J.colon (Ideal.span {x}) from this.symm ▸ Submodule.mem_top) x
    (Ideal.mem_span_singleton_self x)
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ x ∈ J
state_after: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ Submodule.colon J (span {x}) = ⊤

tactic: refine Not.imp_symm (J.colon (Ideal.span {x})).exists_le_maximal ?_
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ Submodule.colon J (span {x}) = ⊤
state_after: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ ¬∃ M, M.IsMaximal ∧ Submodule.colon J (span {x}) ≤ M

tactic: push_neg
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ ¬∃ M, M.IsMaximal ∧ Submodule.colon J (span {x}) ≤ M
state_after: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ ∀ (M : Ideal R), M.IsMaximal → ¬Submodule.colon J (span {x}) ≤ M

tactic: intro P hP le
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
⊢ ∀ (M : Ideal R), M.IsMaximal → ¬Submodule.colon J (span {x}) ≤ M
state_after: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
⊢ False

tactic: obtain ⟨⟨⟨a, ha⟩, ⟨s, hs⟩⟩, eq⟩ :=
  (IsLocalization.mem_map_algebraMap_iff P.primeCompl _).mp (h P hP (Ideal.mem_map_of_mem _ hx))
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
⊢ False
state_after: case intro.mk.mk.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq :
  (algebraMap R (Localization.AtPrime P)) x * (algebraMap R (Localization.AtPrime P)) ↑(⟨a, ha⟩, ⟨s, hs⟩).2 =
    (algebraMap R (Localization.AtPrime P)) ↑(⟨a, ha⟩, ⟨s, hs⟩).1
⊢ False

tactic: rw [← _root_.map_mul, ← sub_eq_zero, ← map_sub] at eq
state_before: case intro.mk.mk.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq :
  (algebraMap R (Localization.AtPrime P)) x * (algebraMap R (Localization.AtPrime P)) ↑(⟨a, ha⟩, ⟨s, hs⟩).2 =
    (algebraMap R (Localization.AtPrime P)) ↑(⟨a, ha⟩, ⟨s, hs⟩).1
⊢ False
state_after: case intro.mk.mk.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
⊢ False

tactic: obtain ⟨⟨m, hm⟩, eq⟩ := (IsLocalization.map_eq_zero_iff P.primeCompl _ _).mp eq
state_before: case intro.mk.mk.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
⊢ False
state_after: case intro.mk.mk.mk.intro.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq✝ : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
m : R
hm : m ∈ P.primeCompl
eq : ↑⟨m, hm⟩ * (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
⊢ False

tactic: refine hs ((hP.isPrime.mem_or_mem (le (Ideal.mem_colon_singleton.mpr ?_))).resolve_right hm)
state_before: case intro.mk.mk.mk.intro.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq✝ : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
m : R
hm : m ∈ P.primeCompl
eq : ↑⟨m, hm⟩ * (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
⊢ False
state_after: case intro.mk.mk.mk.intro.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq✝ : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
m : R
hm : m ∈ P.primeCompl
eq : ↑⟨m, hm⟩ * (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
⊢ s * m * x ∈ J

tactic: simp only [Subtype.coe_mk, mul_sub, sub_eq_zero, mul_comm x s, mul_left_comm] at eq
state_before: case intro.mk.mk.mk.intro.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq✝ : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
m : R
hm : m ∈ P.primeCompl
eq : ↑⟨m, hm⟩ * (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
⊢ s * m * x ∈ J
state_after: case intro.mk.mk.mk.intro.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq✝ : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
m : R
hm : m ∈ P.primeCompl
eq : s * (m * x) = m * a
⊢ s * m * x ∈ J

tactic: simpa only [mul_assoc, eq] using J.mul_mem_left m ha
state_before: case intro.mk.mk.mk.intro.mk
R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
P : Ideal R
hP : P.IsMaximal
le : Submodule.colon J (span {x}) ≤ P
a : R
ha : a ∈ J
s : R
hs : s ∈ P.primeCompl
eq✝ : (algebraMap R (Localization.AtPrime P)) (x * ↑(⟨a, ha⟩, ⟨s, hs⟩).2 - ↑(⟨a, ha⟩, ⟨s, hs⟩).1) = 0
m : R
hm : m ∈ P.primeCompl
eq : s * (m * x) = m * a
⊢ s * m * x ∈ J
state_after: no goals

tactic: simpa using Submodule.mem_colon.mp
  (show (1 : R) ∈ J.colon (Ideal.span {x}) from this.symm ▸ Submodule.mem_top) x
  (Ideal.mem_span_singleton_self x)
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
I J : Ideal R
h :
  ∀ (P : Ideal R) (hP : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) I ≤ map (algebraMap R (Localization.AtPrime P)) J
x : R
hx : x ∈ I
this : Submodule.colon J (span {x}) = ⊤
⊢ x ∈ J
state_after: no goals