Fractional ideals #
This file defines fractional ideals of an integral domain and proves basic facts about them.
Main definitions #
Let S be a submonoid of an integral domain R, P the localization of R at S, and f the
natural ring hom from R to P.
is_fractionaldefines whichR-submodules ofPare fractional idealsfractional_ideal S Pis the type of fractional ideals inPhas_coe_t (ideal R) (fractional_ideal S P)instancecomm_semiring (fractional_ideal S P)instance: the typical ideal operations generalized to fractional idealslattice (fractional_ideal S P)instancemapis the pushforward of a fractional ideal along an algebra morphism
Let K be the localization of R at R⁰ = R \ {0} (i.e. the field of fractions).
fractional_ideal R⁰ Kis the type of fractional ideals in the field of fractionshas_div (fractional_ideal R⁰ K)instance: the ideal quotientI / J(typically written $I : J$, but a:operator cannot be defined)
Main statements #
mul_left_monoandmul_right_monostate that ideal multiplication is monotoneprod_one_self_div_eqstates that1 / Iis the inverse ofIif one existsis_noetherianstates that every fractional ideal of a noetherian integral domain is noetherian
Implementation notes #
Fractional ideals are considered equal when they contain the same elements,
independent of the denominator a : R such that a I ⊆ R.
Thus, we define fractional_ideal to be the subtype of the predicate is_fractional,
instead of having fractional_ideal be a structure of which a is a field.
Most definitions in this file specialize operations from submodules to fractional ideals,
proving that the result of this operation is fractional if the input is fractional.
Exceptions to this rule are defining (+) := (⊔) and ⊥ := 0,
in order to re-use their respective proof terms.
We can still use simp to show ↑I + ↑J = ↑(I + J) and ↑⊥ = ↑0.
Many results in fact do not need that P is a localization, only that P is an
R-algebra. We omit the is_localization parameter whenever this is practical.
Similarly, we don't assume that the localization is a field until we need it to
define ideal quotients. When this assumption is needed, we replace S with R⁰,
making the localization a field.
References #
Tags #
fractional ideal, fractional ideals, invertible ideal
A submodule I is a fractional ideal if a I ⊆ R for some a ≠ 0.
Equations
- is_fractional S I = ∃ (a : R) (H : a ∈ S), ∀ (b : P), b ∈ I → is_localization.is_integer R (a • b)
The fractional ideals of a domain R are ideals of R divided by some a ∈ R.
More precisely, let P be a localization of R at some submonoid S,
then a fractional ideal I ⊆ P is an R-submodule of P,
such that there is a nonzero a : R with a I ⊆ R.
Equations
- fractional_ideal S P = {I // is_fractional S I}
Map a fractional ideal I to a submodule by forgetting that ∃ a, a I ⊆ R.
This coercion is typically called coe_to_submodule in lemma names
(or coe when the coercion is clear from the context),
not to be confused with is_localization.coe_submodule : ideal R → submodule R P
(which we use to define coe : ideal R → fractional_ideal S P,
referred to as coe_ideal in theorem names).
Equations
- fractional_ideal.submodule.has_coe = {coe := λ (I : fractional_ideal S P), I.val}
Equations
- fractional_ideal.set_like = {coe := λ (I : fractional_ideal S P), ↑↑I, coe_injective' := _}
Copy of a fractional_ideal with a new underlying set equal to the old one.
Useful to fix definitional equalities.
Map an ideal I to a fractional ideal by forgetting I is integral.
This is a bundled version of is_localization.coe_submodule : ideal R → submodule R P,
which is not to be confused with the coe : fractional_ideal S P → submodule R P,
also called coe_to_submodule in theorem names.
This map is available as a ring hom, called fractional_ideal.coe_ideal_hom.
Equations
- fractional_ideal.coe_to_fractional_ideal = {coe := λ (I : ideal R), ⟨is_localization.coe_submodule P I, _⟩}
Equations
- fractional_ideal.has_zero S = {zero := ↑0}
Equations
(1 : fractional_ideal S P) is defined as the R-submodule f(R) ≤ P.
However, this is not definitionally equal to 1 : submodule R P,
which is proved in the actual simp lemma coe_one.
lattice section #
Defines the order on fractional ideals as inclusion of their underlying sets, and ports the lattice structure on submodules to fractional ideals.
Equations
- fractional_ideal.order_bot = {bot := 0, bot_le := _}
Equations
- fractional_ideal.has_inf = {inf := λ (I J : fractional_ideal S P), ⟨↑I ⊓ ↑J, _⟩}
Equations
- fractional_ideal.has_sup = {sup := λ (I J : fractional_ideal S P), ⟨↑I ⊔ ↑J, _⟩}
Equations
- fractional_ideal.lattice = function.injective.lattice coe fractional_ideal.lattice._proof_1 fractional_ideal.coe_sup fractional_ideal.coe_inf
Equations
- fractional_ideal.semilattice_sup = {sup := lattice.sup fractional_ideal.lattice, le := lattice.le fractional_ideal.lattice, lt := lattice.lt fractional_ideal.lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _}
Equations
Equations
- fractional_ideal.has_scalar = {smul := λ (n : ℕ) (I : fractional_ideal S P), ⟨n • ↑I, _⟩}
fractional_ideal.mul is the product of two fractional ideals,
used to define the has_mul instance.
This is only an auxiliary definition: the preferred way of writing I.mul J is I * J.
Elaborated terms involving fractional_ideal tend to grow quite large,
so by making definitions irreducible, we hope to avoid deep unfolds.
Equations
- fractional_ideal.has_mul = {mul := λ (I J : fractional_ideal S P), I.mul J}
Equations
- fractional_ideal.nat.has_pow = {pow := λ (I : fractional_ideal S P) (n : ℕ), ⟨↑I ^ n, _⟩}
Equations
- fractional_ideal.comm_semiring = function.injective.comm_semiring coe fractional_ideal.comm_semiring._proof_1 fractional_ideal.coe_zero fractional_ideal.coe_one fractional_ideal.coe_add fractional_ideal.coe_mul fractional_ideal.comm_semiring._proof_2 fractional_ideal.coe_pow
coe_ideal_hom (S : submonoid R) P is coe : ideal R → fractional_ideal S P as a ring hom
Equations
- fractional_ideal.coe_ideal_hom S P = {to_fun := coe coe_to_lift, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
I.map g is the pushforward of the fractional ideal I along the algebra morphism g
Equations
- fractional_ideal.map g = λ (I : fractional_ideal S P), ⟨submodule.map g.to_linear_map ↑I, _⟩
If g is an equivalence, map g is an isomorphism
Equations
- fractional_ideal.map_equiv g = {to_fun := fractional_ideal.map ↑g, inv_fun := fractional_ideal.map ↑(g.symm), left_inv := _, right_inv := _, map_mul' := _, map_add' := _}
canonical_equiv f f' is the canonical equivalence between the fractional
ideals in P and in P'
Equations
- fractional_ideal.canonical_equiv S P P' = fractional_ideal.map_equiv {to_fun := (is_localization.ring_equiv_of_ring_equiv P P' (ring_equiv.refl R) _).to_fun, inv_fun := (is_localization.ring_equiv_of_ring_equiv P P' (ring_equiv.refl R) _).inv_fun, left_inv := _, right_inv := _, map_mul' := _, map_add' := _, commutes' := _}
is_fraction_ring section #
This section concerns fractional ideals in the field of fractions,
i.e. the type fractional_ideal R⁰ K where is_fraction_ring R K.
Nonzero fractional ideals contain a nonzero integer.
quotient section #
This section defines the ideal quotient of fractional ideals.
In this section we need that each non-zero y : R has an inverse in
the localization, i.e. that the localization is a field. We satisfy this
assumption by taking S = non_zero_divisors R, R's localization at which
is a field because R is a domain.
fractional_ideal.span_finset R₁ s f is the fractional ideal of R₁ generated by f '' s.
Equations
- fractional_ideal.span_finset R₁ s f = ⟨submodule.span R₁ (f '' ↑s), _⟩
span_singleton x is the fractional ideal generated by x if 0 ∉ S
Equations
- fractional_ideal.span_singleton S x = ⟨submodule.span R {x}, _⟩
Every fractional ideal of a noetherian integral domain is noetherian.
A[x] is a fractional ideal for every integral x.
fractional_ideal.adjoin_integral (S : submonoid R) x hx is R[x] as a fractional ideal,
where hx is a proof that x : P is integral over R.
Equations
- fractional_ideal.adjoin_integral S x hx = ⟨(algebra.adjoin R {x}).to_submodule, _⟩