case mp
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
⊢ ¬IsField R → ∃ I, ⊥ < I ∧ I < ⊤

case mpr
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
⊢ (∃ I, ⊥ < I ∧ I < ⊤) → ¬IsField R
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
⊢ ¬IsField R ↔ ∃ I, ⊥ < I ∧ I < ⊤
constructor
case mp
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
⊢ ∃ I, ⊥ < I ∧ I < ⊤
case mp
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
⊢ ¬IsField R → ∃ I, ⊥ < I ∧ I < ⊤
intro h
case mp.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
x : R
nz : x ≠ 0
nu : ¬IsUnit x
⊢ ∃ I, ⊥ < I ∧ I < ⊤
case mp
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
⊢ ∃ I, ⊥ < I ∧ I < ⊤
obtain ⟨x, nz, nu⟩ := exists_not_isUnit_of_not_isField h
case mp.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
x : R
nz : x ≠ 0
nu : ¬IsUnit x
⊢ ⊥ < Ideal.span {x} ∧ Ideal.span {x} < ⊤
case mp.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
x : R
nz : x ≠ 0
nu : ¬IsUnit x
⊢ ∃ I, ⊥ < I ∧ I < ⊤
use Ideal.span {x}
case mp.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
x : R
nz : x ≠ 0
nu : ¬IsUnit x
⊢ Ideal.span {x} ≠ ⊥ ∧ Ideal.span {x} ≠ ⊤
case mp.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
x : R
nz : x ≠ 0
nu : ¬IsUnit x
⊢ ⊥ < Ideal.span {x} ∧ Ideal.span {x} < ⊤
rw [bot_lt_iff_ne_bot, lt_top_iff_ne_top]
no goals
case mp.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
h : ¬IsField R
x : R
nz : x ≠ 0
nu : ¬IsUnit x
⊢ Ideal.span {x} ≠ ⊥ ∧ Ideal.span {x} ≠ ⊤
exact ⟨mt Ideal.span_singleton_eq_bot.mp nz, mt Ideal.span_singleton_eq_top.mp nu⟩
case mpr.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
⊢ False
case mpr
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
⊢ (∃ I, ⊥ < I ∧ I < ⊤) → ¬IsField R
rintro ⟨I, bot_lt, lt_top⟩ hf
case mpr.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x ∈ ⊥
⊢ False
case mpr.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
⊢ False
obtain ⟨x, mem, ne_zero⟩ := SetLike.exists_of_lt bot_lt
case mpr.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x = 0
⊢ False
case mpr.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x ∈ ⊥
⊢ False
rw [Submodule.mem_bot] at ne_zero
case mpr.intro.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x = 0
y : R
hy : x * y = 1
⊢ False
case mpr.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x = 0
⊢ False
obtain ⟨y, hy⟩ := hf.mul_inv_cancel ne_zero
case mpr.intro.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x = 0
y : R
lt_top : ¬x * y ∈ I
hy : x * y = 1
⊢ False
case mpr.intro.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
lt_top : I < ⊤
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x = 0
y : R
hy : x * y = 1
⊢ False
rw [lt_top_iff_ne_top, Ne.def, Ideal.eq_top_iff_one, ← hy] at lt_top
no goals
case mpr.intro.intro.intro.intro.intro
α : Type u
β : Type v
R : Type u_1
inst✝¹ : CommSemiring R
inst✝ : Nontrivial R
I : Ideal R
bot_lt : ⊥ < I
hf : IsField R
x : R
mem : x ∈ I
ne_zero : ¬x = 0
y : R
lt_top : ¬x * y ∈ I
hy : x * y = 1
⊢ False
exact lt_top (I.mul_mem_right _ mem)