Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(ring_theory): define integrally closed domains (#8893)
In this follow-up to #8882, we define the notion of an integrally closed domain `R`, which contains all integral elements of `Frac(R)`. We show the equivalence to `is_integral_closure R R K` for a field of fractions `K`. We provide instances for `is_dedekind_domain`s, `unique_fractorization_monoid`s, and to the integers of a valuation. In particular, the rational root theorem provides a proof that `ℤ` is integrally closed. Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com> Co-authored-by: Vierkantor <vierkantor@vierkantor.com>
- Loading branch information
1 parent
c4cf4c2
commit 2eaec05
Showing
6 changed files
with
151 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/- | ||
Copyright (c) 2021 Anne Baanen. All rights reserved. | ||
Released under Apache 2.0 license as described in the file LICENSE. | ||
Authors: Anne Baanen | ||
-/ | ||
import ring_theory.integral_closure | ||
import ring_theory.localization | ||
|
||
/-! | ||
# Integrally closed rings | ||
An integrally closed domain `R` contains all the elements of `Frac(R)` that are | ||
integral over `R`. A special case of integrally closed domains are the Dedekind domains. | ||
## Main definitions | ||
* `is_integrally_closed R` states `R` contains all integral elements of `Frac(R)` | ||
## Main results | ||
* `is_integrally_closed_iff K`, where `K` is a fraction field of `R`, states `R` | ||
is integrally closed iff it is the integral closure of `R` in `K` | ||
-/ | ||
|
||
open_locale non_zero_divisors | ||
|
||
/-- `R` is integrally closed if all integral elements of `Frac(R)` are also elements of `R`. | ||
This definition uses `fraction_ring R` to denote `Frac(R)`. See `is_integrally_closed_iff` | ||
if you want to choose another field of fractions for `R`. | ||
-/ | ||
class is_integrally_closed (R : Type*) [integral_domain R] : Prop := | ||
(algebra_map_eq_of_integral : | ||
∀ {x : fraction_ring R}, is_integral R x → ∃ y, algebra_map R (fraction_ring R) y = x) | ||
|
||
section iff | ||
|
||
variables {R : Type*} [integral_domain R] (K : Type*) [field K] [algebra R K] [is_fraction_ring R K] | ||
|
||
/-- `R` is integrally closed iff all integral elements of its fraction field `K` | ||
are also elements of `R`. -/ | ||
theorem is_integrally_closed_iff : | ||
is_integrally_closed R ↔ ∀ {x : K}, is_integral R x → ∃ y, algebra_map R K y = x := | ||
begin | ||
let e : K ≃ₐ[R] fraction_ring R := is_localization.alg_equiv R⁰_ _, | ||
split, | ||
{ rintros ⟨cl⟩, | ||
refine λ x hx, _, | ||
obtain ⟨y, hy⟩ := cl ((is_integral_alg_equiv e).mpr hx), | ||
exact ⟨y, e.algebra_map_eq_apply.mp hy⟩ }, | ||
{ rintros cl, | ||
refine ⟨λ x hx, _⟩, | ||
obtain ⟨y, hy⟩ := cl ((is_integral_alg_equiv e.symm).mpr hx), | ||
exact ⟨y, e.symm.algebra_map_eq_apply.mp hy⟩ }, | ||
end | ||
|
||
/-- `R` is integrally closed iff it is the integral closure of itself in its field of fractions. -/ | ||
theorem is_integrally_closed_iff_is_integral_closure : | ||
is_integrally_closed R ↔ is_integral_closure R R K := | ||
(is_integrally_closed_iff K).trans $ | ||
begin | ||
let e : K ≃ₐ[R] fraction_ring R := is_localization.alg_equiv R⁰_ _, | ||
split, | ||
{ intros cl, | ||
refine ⟨is_fraction_ring.injective _ _, λ x, ⟨cl, _⟩⟩, | ||
rintros ⟨y, y_eq⟩, | ||
rw ← y_eq, | ||
exact is_integral_algebra_map }, | ||
{ rintros ⟨-, cl⟩ x hx, | ||
exact cl.mp hx } | ||
end | ||
|
||
end iff | ||
|
||
namespace is_integrally_closed | ||
|
||
variables {R : Type*} [integral_domain R] [iic : is_integrally_closed R] | ||
variables {K : Type*} [field K] [algebra R K] [is_fraction_ring R K] | ||
|
||
instance : is_integral_closure R R K := | ||
(is_integrally_closed_iff_is_integral_closure K).mp iic | ||
|
||
include iic | ||
|
||
lemma is_integral_iff {x : K} : is_integral R x ↔ ∃ y, algebra_map R K y = x := | ||
is_integral_closure.is_integral_iff | ||
|
||
omit iic | ||
variables {R} (K) | ||
lemma integral_closure_eq_bot_iff : | ||
integral_closure R K = ⊥ ↔ is_integrally_closed R := | ||
begin | ||
refine eq_bot_iff.trans _, | ||
split, | ||
{ rw is_integrally_closed_iff K, | ||
intros h x hx, | ||
exact set.mem_range.mp (algebra.mem_bot.mp (h hx)), | ||
assumption }, | ||
{ intros h x hx, | ||
rw [algebra.mem_bot, set.mem_range], | ||
exactI is_integral_iff.mp hx }, | ||
end | ||
|
||
include iic | ||
variables (R K) | ||
@[simp] lemma integral_closure_eq_bot : integral_closure R K = ⊥ := | ||
(integral_closure_eq_bot_iff K).mpr ‹_› | ||
|
||
end is_integrally_closed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters