Theorem: FractionalIdeal.exists_ne_zero_mem_isInteger
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: obtain ⟨y : K, y_mem, y_not_mem⟩ :=
  SetLike.exists_of_lt (by simpa only using bot_lt_iff_ne_bot.mpr hI)
state_before: R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
⊢ ∃ x x_1, ↑(algebraMap R K) x ∈ I

tactic: have y_ne_zero : y ≠ 0 := by simpa using y_not_mem
state_before: case intro.intro
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ ?m.1074732
y_not_mem : ¬y ∈ ?m.1074731
⊢ ∃ x x_1, ↑(algebraMap R K) x ∈ I

tactic: obtain ⟨z, ⟨x, hx⟩⟩ := exists_integer_multiple R⁰ y
state_before: case intro.intro
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
y_ne_zero : y ≠ 0
⊢ ∃ x x_1, ↑(algebraMap R K) x ∈ I

tactic: refine' ⟨x, _, _⟩
state_before: case intro.intro.intro.intro
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
y_ne_zero : y ≠ 0
z : { x // x ∈ R⁰ }
x : R
hx : ↑(algebraMap R K) x = ↑z • y
⊢ ∃ x x_1, ↑(algebraMap R K) x ∈ I

tactic: simpa only using bot_lt_iff_ne_bot.mpr hI
state_before: R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
⊢ ?m.1074731 < ?m.1074732

tactic: simpa using y_not_mem
state_before: R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
⊢ y ≠ 0

tactic: rw [Ne.def, ← @IsFractionRing.to_map_eq_zero_iff R _ K, hx, Algebra.smul_def]
state_before: case intro.intro.intro.intro.refine'_1
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
y_ne_zero : y ≠ 0
z : { x // x ∈ R⁰ }
x : R
hx : ↑(algebraMap R K) x = ↑z • y
⊢ x ≠ 0

tactic: exact mul_ne_zero (IsFractionRing.to_map_ne_zero_of_mem_nonZeroDivisors z.2) y_ne_zero
state_before: case intro.intro.intro.intro.refine'_1
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
y_ne_zero : y ≠ 0
z : { x // x ∈ R⁰ }
x : R
hx : ↑(algebraMap R K) x = ↑z • y
⊢ ¬↑(algebraMap R K) ↑z * y = 0

tactic: rw [hx]
state_before: case intro.intro.intro.intro.refine'_2
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
y_ne_zero : y ≠ 0
z : { x // x ∈ R⁰ }
x : R
hx : ↑(algebraMap R K) x = ↑z • y
⊢ ↑(algebraMap R K) x ∈ I

tactic: exact smul_mem _ _ y_mem
state_before: case intro.intro.intro.intro.refine'_2
R : Type u_1
inst✝⁹ : CommRing R
S : Submonoid R
P : Type ?u.1050336
inst✝⁸ : CommRing P
inst✝⁷ : Algebra R P
loc : IsLocalization S P
K : Type u_2
K' : Type ?u.1050800
inst✝⁶ : Field K
inst✝⁵ : Field K'
inst✝⁴ : Algebra R K
inst✝³ : IsFractionRing R K
inst✝² : Algebra R K'
inst✝¹ : IsFractionRing R K'
I J : FractionalIdeal R⁰ K
h : K →ₐ[R] K'
inst✝ : Nontrivial R
hI : I ≠ 0
y : K
y_mem : y ∈ I
y_not_mem : ¬y ∈ ⊥
y_ne_zero : y ≠ 0
z : { x // x ∈ R⁰ }
x : R
hx : ↑(algebraMap R K) x = ↑z • y
⊢ ↑z • y ∈ I