Ideals over a ring #
This file defines ideal R
, the type of (left) ideals over a ring R
.
Note that over commutative rings, left ideals and two-sided ideals are equivalent.
Implementation notes #
ideal R
is implemented using submodule R R
, where •
is interpreted as *
.
TODO #
Support right ideals, and two-sided ideals over non-commutative rings.
The ideal generated by a subset of a ring
Equations
- ideal.span s = submodule.span α s
Instances for ideal.span
@[simp]
theorem
ideal.submodule_span_eq
{α : Type u}
[semiring α]
{s : set α} :
submodule.span α s = ideal.span s
theorem
ideal.span_union
{α : Type u}
[semiring α]
(s t : set α) :
ideal.span (s ∪ t) = ideal.span s ⊔ ideal.span t
theorem
ideal.span_Union
{α : Type u}
[semiring α]
{ι : Sort u_1}
(s : ι → set α) :
ideal.span (⋃ (i : ι), s i) = ⨆ (i : ι), ideal.span (s i)
theorem
ideal.span_le
{α : Type u}
[semiring α]
{s : set α}
{I : ideal α} :
ideal.span s ≤ I ↔ s ⊆ ↑I
theorem
ideal.span_mono
{α : Type u}
[semiring α]
{s t : set α} :
s ⊆ t → ideal.span s ≤ ideal.span t
theorem
ideal.mem_span_insert
{α : Type u}
[semiring α]
{s : set α}
{x y : α} :
x ∈ ideal.span (has_insert.insert y s) ↔ ∃ (a z : α) (H : z ∈ ideal.span s), x = a * y + z
theorem
ideal.mem_span_singleton'
{α : Type u}
[semiring α]
{x y : α} :
x ∈ ideal.span {y} ↔ ∃ (a : α), a * y = x
theorem
ideal.span_insert
{α : Type u}
[semiring α]
(x : α)
(s : set α) :
ideal.span (has_insert.insert x s) = ideal.span {x} ⊔ ideal.span s
@[simp]
The ideal generated by an arbitrary binary relation.
Equations
- ideal.of_rel r = submodule.span α {x : α | ∃ (a b : α) (h : r a b), x + b = a}
@[class]
An ideal P
of a ring R
is prime if P ≠ R
and xy ∈ P → x ∈ P ∨ y ∈ P
theorem
ideal.is_maximal.eq_of_le
{α : Type u}
[semiring α]
{I J : ideal α}
(hI : I.is_maximal)
(hJ : J ≠ ⊤)
(IJ : I ≤ J) :
I = J
@[protected, instance]
theorem
ideal.exists_le_maximal
{α : Type u}
[semiring α]
(I : ideal α)
(hI : I ≠ ⊤) :
∃ (M : ideal α), M.is_maximal ∧ I ≤ M
Krull's theorem: if I
is an ideal that is not the whole ring, then it is included in some
maximal ideal.
theorem
ideal.exists_maximal
(α : Type u)
[semiring α]
[nontrivial α] :
∃ (M : ideal α), M.is_maximal
Krull's theorem: a nontrivial ring has a maximal ideal.
@[protected, instance]
theorem
ideal.is_maximal.exists_inv
{α : Type u}
[semiring α]
{I : ideal α}
(hI : I.is_maximal)
{x : α}
(hx : x ∉ I) :
theorem
ideal.mem_Sup_of_mem
{R : Type u}
[semiring R]
{S : set (ideal R)}
{s : ideal R}
(hs : s ∈ S)
{x : R} :
x ∈ s → x ∈ has_Sup.Sup S
@[simp]
theorem
ideal.mul_unit_mem_iff_mem
{α : Type u}
[comm_semiring α]
(I : ideal α)
{x y : α}
(hy : is_unit y) :
theorem
ideal.mem_span_singleton
{α : Type u}
[comm_semiring α]
{x y : α} :
x ∈ ideal.span {y} ↔ y ∣ x
theorem
ideal.span_singleton_le_span_singleton
{α : Type u}
[comm_semiring α]
{x y : α} :
ideal.span {x} ≤ ideal.span {y} ↔ y ∣ x
theorem
ideal.span_singleton_eq_span_singleton
{α : Type u}
[comm_ring α]
[is_domain α]
{x y : α} :
ideal.span {x} = ideal.span {y} ↔ associated x y
theorem
ideal.span_singleton_mul_right_unit
{α : Type u}
[comm_semiring α]
{a : α}
(h2 : is_unit a)
(x : α) :
ideal.span {x * a} = ideal.span {x}
theorem
ideal.span_singleton_mul_left_unit
{α : Type u}
[comm_semiring α]
{a : α}
(h2 : is_unit a)
(x : α) :
ideal.span {a * x} = ideal.span {x}
theorem
ideal.span_singleton_eq_top
{α : Type u}
[comm_semiring α]
{x : α} :
ideal.span {x} = ⊤ ↔ is_unit x
theorem
ideal.span_singleton_prime
{α : Type u}
[comm_semiring α]
{p : α}
(hp : p ≠ 0) :
(ideal.span {p}).is_prime ↔ prime p
theorem
ideal.is_maximal.is_prime
{α : Type u}
[comm_semiring α]
{I : ideal α}
(H : I.is_maximal) :
I.is_prime
@[protected, instance]
def
ideal.is_maximal.is_prime'
{α : Type u}
[comm_semiring α]
(I : ideal α)
[H : I.is_maximal] :
I.is_prime
theorem
ideal.span_singleton_lt_span_singleton
{β : Type v}
[comm_ring β]
[is_domain β]
{x y : β} :
ideal.span {x} < ideal.span {y} ↔ dvd_not_unit y x
theorem
ideal.factors_decreasing
{β : Type v}
[comm_ring β]
[is_domain β]
(b₁ b₂ : β)
(h₁ : b₁ ≠ 0)
(h₂ : ¬is_unit b₂) :
ideal.span {b₁ * b₂} < ideal.span {b₁}
theorem
ideal.mul_mem_right
{α : Type u}
{a : α}
(b : α)
[comm_semiring α]
(I : ideal α)
(h : a ∈ I) :
theorem
ideal.pow_mem_of_mem
{α : Type u}
{a : α}
[comm_semiring α]
(I : ideal α)
(ha : a ∈ I)
(n : ℕ)
(hn : 0 < n) :
theorem
ideal.pow_multiset_sum_mem_span_pow
{α : Type u}
[comm_semiring α]
(s : multiset α)
(n : ℕ) :
s.sum ^ (⇑multiset.card s * n + 1) ∈ ideal.span ↑((multiset.map (λ (x : α), x ^ (n + 1)) s).to_finset)
theorem
ideal.span_pow_eq_top
{α : Type u}
[comm_semiring α]
(s : set α)
(hs : ideal.span s = ⊤)
(n : ℕ) :
ideal.span ((λ (x : α), x ^ n) '' s) = ⊤
theorem
ideal.mem_span_insert'
{α : Type u}
[ring α]
{s : set α}
{x y : α} :
x ∈ ideal.span (has_insert.insert y s) ↔ ∃ (a : α), x + a * y ∈ ideal.span s
All ideals in a division ring are trivial.
theorem
ring.exists_not_is_unit_of_not_is_field
{R : Type u_1}
[comm_ring R]
[nontrivial R]
(hf : ¬is_field R) :
theorem
ring.ne_bot_of_is_maximal_of_not_is_field
{R : Type u_1}
[comm_ring R]
[nontrivial R]
{M : ideal R}
(max : M.is_maximal)
(not_field : ¬is_field R) :
When a ring is not a field, the maximal ideals are nontrivial.
theorem
ideal.bot_lt_of_maximal
{R : Type u}
[comm_ring R]
[nontrivial R]
(M : ideal R)
[hm : M.is_maximal]
(non_field : ¬is_field R) :
theorem
exists_max_ideal_of_mem_nonunits
{α : Type u}
{a : α}
[comm_semiring α]
(h : a ∈ nonunits α) :
∃ (I : ideal α), I.is_maximal ∧ a ∈ I