Module docstring
{"# Prime ideals
This file contains the definition of Ideal.IsPrime for prime ideals.
TODO
Support right ideals, and two-sided ideals over non-commutative rings. "}
{"# Prime ideals
This file contains the definition of Ideal.IsPrime for prime ideals.
Support right ideals, and two-sided ideals over non-commutative rings. "}
Ideal.IsPrime
structure
(I : Ideal α)
/-- An ideal `P` of a ring `R` is prime if `P ≠ R` and `xy ∈ P → x ∈ P ∨ y ∈ P` -/
class IsPrime (I : Ideal α) : Prop where
/-- The prime ideal is not the entire ring. -/
ne_top' : I ≠ ⊤
/-- If a product lies in the prime ideal, then at least one element lies in the prime ideal. -/
mem_or_mem' : ∀ {x y : α}, x * y ∈ I → x ∈ Ix ∈ I ∨ y ∈ I
Ideal.isPrime_iff
theorem
{I : Ideal α} : IsPrime I ↔ I ≠ ⊤ ∧ ∀ {x y : α}, x * y ∈ I → x ∈ I ∨ y ∈ I
theorem isPrime_iff {I : Ideal α} : IsPrimeIsPrime I ↔ I ≠ ⊤ ∧ ∀ {x y : α}, x * y ∈ I → x ∈ I ∨ y ∈ I :=
⟨fun h => ⟨h.1, h.2⟩, fun h => ⟨h.1, h.2⟩⟩
Ideal.IsPrime.ne_top
theorem
{I : Ideal α} (hI : I.IsPrime) : I ≠ ⊤
theorem IsPrime.ne_top {I : Ideal α} (hI : I.IsPrime) : I ≠ ⊤ :=
hI.1
Ideal.IsPrime.mem_or_mem
theorem
{I : Ideal α} (hI : I.IsPrime) {x y : α} : x * y ∈ I → x ∈ I ∨ y ∈ I
theorem IsPrime.mem_or_mem {I : Ideal α} (hI : I.IsPrime) {x y : α} : x * y ∈ I → x ∈ Ix ∈ I ∨ y ∈ I :=
hI.2
Ideal.IsPrime.mul_not_mem
theorem
{I : Ideal α} (hI : I.IsPrime) {x y : α} : x ∉ I → y ∉ I → x * y ∉ I
theorem IsPrime.mul_not_mem {I : Ideal α} (hI : I.IsPrime) {x y : α} :
x ∉ I → y ∉ I → x * y ∉ I := fun hx hy h ↦
hy ((hI.mem_or_mem h).resolve_left hx)
Ideal.IsPrime.mem_or_mem_of_mul_eq_zero
theorem
{I : Ideal α} (hI : I.IsPrime) {x y : α} (h : x * y = 0) : x ∈ I ∨ y ∈ I
theorem IsPrime.mem_or_mem_of_mul_eq_zero {I : Ideal α} (hI : I.IsPrime) {x y : α} (h : x * y = 0) :
x ∈ Ix ∈ I ∨ y ∈ I :=
hI.mem_or_mem (h.symm ▸ I.zero_mem)
Ideal.IsPrime.mem_of_pow_mem
theorem
{I : Ideal α} (hI : I.IsPrime) {r : α} (n : ℕ) (H : r ^ n ∈ I) : r ∈ I
theorem IsPrime.mem_of_pow_mem {I : Ideal α} (hI : I.IsPrime) {r : α} (n : ℕ) (H : r ^ n ∈ I) :
r ∈ I := by
induction n with
| zero =>
rw [pow_zero] at H
exact (mt (eq_top_iff_one _).2 hI.1).elim H
| succ n ih =>
rw [pow_succ] at H
exact Or.casesOn (hI.mem_or_mem H) ih id
Ideal.not_isPrime_iff
theorem
{I : Ideal α} : ¬I.IsPrime ↔ I = ⊤ ∨ ∃ (x : α) (_hx : x ∉ I) (y : α) (_hy : y ∉ I), x * y ∈ I
theorem not_isPrime_iff {I : Ideal α} :
¬I.IsPrime¬I.IsPrime ↔ I = ⊤ ∨ ∃ (x : α) (_hx : x ∉ I) (y : α) (_hy : y ∉ I), x * y ∈ I := by
simp_rw [Ideal.isPrime_iff, not_and_or, Ne, Classical.not_not, not_forall, not_or]
exact
or_congr Iff.rfl
⟨fun ⟨x, y, hxy, hx, hy⟩ => ⟨x, hx, y, hy, hxy⟩, fun ⟨x, hx, y, hy, hxy⟩ =>
⟨x, y, hxy, hx, hy⟩⟩
Ideal.bot_prime
theorem
[Nontrivial α] [NoZeroDivisors α] : (⊥ : Ideal α).IsPrime
Ideal.IsPrime.mul_mem_iff_mem_or_mem
theorem
{I : Ideal α} [I.IsTwoSided] (hI : I.IsPrime) : ∀ {x y : α}, x * y ∈ I ↔ x ∈ I ∨ y ∈ I
theorem IsPrime.mul_mem_iff_mem_or_mem {I : Ideal α} [I.IsTwoSided] (hI : I.IsPrime) :
∀ {x y : α}, x * y ∈ Ix * y ∈ I ↔ x ∈ I ∨ y ∈ I := @fun x y =>
⟨hI.mem_or_mem, by
rintro (h | h)
exacts [I.mul_mem_right y h, I.mul_mem_left x h]⟩
Ideal.IsPrime.pow_mem_iff_mem
theorem
{I : Ideal α} (hI : I.IsPrime) {r : α} (n : ℕ) (hn : 0 < n) : r ^ n ∈ I ↔ r ∈ I
theorem IsPrime.pow_mem_iff_mem {I : Ideal α} (hI : I.IsPrime) {r : α} (n : ℕ) (hn : 0 < n) :
r ^ n ∈ Ir ^ n ∈ I ↔ r ∈ I :=
⟨hI.mem_of_pow_mem n, fun hr => I.pow_mem_of_mem hr n hn⟩
Ideal.primeCompl
definition
(P : Ideal α) [hp : P.IsPrime] : Submonoid α
/-- The complement of a prime ideal `P ⊆ R` is a submonoid of `R`. -/
def primeCompl (P : Ideal α) [hp : P.IsPrime] : Submonoid α where
carrier := (Pᶜ : Set α)
one_mem' := by convert P.ne_top_iff_one.1 hp.1
mul_mem' {_ _} hnx hny hxy := Or.casesOn (hp.mem_or_mem hxy) hnx hny
IsDomain.of_bot_isPrime
theorem
(A : Type*) [Ring A] [hbp : (⊥ : Ideal A).IsPrime] : IsDomain A
theorem IsDomain.of_bot_isPrime (A : Type*) [Ring A] [hbp : (⊥ : Ideal A).IsPrime] : IsDomain A :=
@NoZeroDivisors.to_isDomain A _
⟨1, 0, fun h => hbp.ne_top ((Ideal.eq_top_iff_one ⊥).mpr h)⟩ ⟨fun h => hbp.2 h⟩