Complements on Dedekind-domain factorization #
Facts about Associates.count and FractionalIdeal.count that Mathlib does not carry, together
with unit-level factorization of invertible fractional ideals.
Main results #
IsDedekindDomain.HeightOneSpectrum.le_count_associates_iff_le_pow: the multiplicity ofvin a nonzeroJis at leastkexactly whenv ^ kcontainsJ. The multiplicity here isAssociates.count, notFractionalIdeal.count— hence theassociatestoken, matching Mathlib'sIdeal.count_associates_factors_eqfor the same expression. Mathlib reads that multiplicity as divisibility ofAssociates; a consumer comparing two multiplicities across a ring extension wants a containment of ideals, and shows the two ideals contain the same prime powers.FractionalIdeal.count_div: the multiplicity ofI / Jis the difference of the multiplicities ofIandJ. Mathlib'scountAPI hascount_mul,count_inv,count_powandcount_zpowbut no division form, so every consumer that clears a denominator repeats the same rewrites.FractionalIdeal.count_spanSingleton_div: the same on principal fractional ideals. This is the one theS-integer class-group computation inTauCeti/RingTheory/DedekindDomain/SInteger/ClassGroup.leanuses, at bothRand𝒪_S— which is why the ring is a variable rather than fixed — advancingTauCetiRoadmap/EllipticCurves/README.md§Layer 6 (Mordell–Weil), whose weak-Mordell–Weil argument needs theS-class group to be finite. It is also the step that carriescount_toPrincipalIdeal_eq_neg_log_valuationbelow.count_divis its general form and has no consumer in this repository yet.FractionalIdeal.count_toPrincipalIdeal_eq_neg_log_valuation: the multiplicity atvof the principal fractional ideal of a nonzero rational functionu : Kˣis-WithZero.log (v.valuation K u). This is the passage between the two ways this library measures a principal ideal at a height one prime — Mathlib'scountand the adic valuation.Ideal.hasFiniteMulSupport_asIdeal_pow_of_le_count: a family of prime powers whose exponents are bounded by the multiplicities of a fixed nonzero ideal has finite multiplicative support. Mathlib'sIdeal.hasFiniteMulSupportis the case of the multiplicities themselves; a consumer defining an ideal as∏ᵥ 𝔭ᵥ ^ e vfor exponents it only knows to be dominated by an actual factorisation — as the minimal discriminant ideal of an elliptic curve is dominated by the discriminant of any integral model — needs the bounded form to see that the product is finite.IsDedekindDomain.HeightOneSpectrum.unitOfPrime: a height-one prime regarded as an invertible fractional ideal.FractionalIdeal.hasFiniteMulSupport_zpow_count: a family of powers indexed by the height one primes, with the multiplicities of a fixed fractional ideal as exponents, has finite multiplicative support. The bases are an arbitrary family in an arbitraryDivInvMonoid, since nothing but the vanishing of almost all exponents is at stake; the unit-level factorization below is the case of the primes themselves.FractionalIdeal.finprod_unitOfPrime_zpow_count: unique factorization of an invertible fractional ideal, transported alongUnits.coeHom.FractionalIdeal.mem_closure_unitOfPrime_of_count_eq_zero: an invertible fractional ideal whose multiplicities vanish outside a setTof height one primes lies in the subgroup generated by the primes ofT.
All these declarations are general facts about an arbitrary Dedekind domain, mentioning no particular ring extension.
le_count_associates_iff_le_pow is adapted from Michael Stoll's elliptic-curves formalisation
(github.com/MichaelStollBayreuth/EllipticCurves, EllipticCurves/Mathlib/Basic.lean:381 at the
roadmap's pin 66889eada51a, Apache 2.0, by Michael Stoll); following this repository's convention
for adapted material, the upstream authorship is credited here rather than in the copyright header.
count_div and count_spanSingleton_div are new here — they have no counterpart in that
source. count_toPrincipalIdeal_eq_neg_log_valuation is this repository's own, relocated here
from TauCeti/AlgebraicGeometry/WeilDivisor/Dedekind/Basic.lean: nothing in its statement or
proof mentions a Weil divisor, and stating it under TauCeti.AlgebraicGeometry put it out of
reach of the RingTheory consumers that need it, which is exactly the boundary
TauCeti/RingTheory/ClassGroup/HeightOneSpectrum.lean records in its module docstring.
The unit-level prime factorization FractionalIdeal.finprod_unitOfPrime_zpow_count is adapted
from Michael Stoll's EllipticCurves/Mathlib/FractionalIdeal.lean at commit 66889eada51a of the
MichaelStollBayreuth/EllipticCurves repository (Apache 2.0).
A height-one prime, regarded as an invertible fractional ideal.
Equations
- v.unitOfPrime K = Units.mk0 ↑v.asIdeal ⋯
Instances For
The fractional ideal underlying v.unitOfPrime K is v.asIdeal.
The multiplicity of v in a nonzero ideal J is at least k exactly when v ^ k contains
J.
A family of prime powers whose exponents are bounded by the multiplicities of a nonzero ideal has finite multiplicative support. This permits products of such prime powers to be handled as finite products.
A prime-indexed family of powers with the multiplicities of a fractional ideal as exponents
has finite multiplicative support. Only finitely many primes occur in a fractional ideal, so
only finitely many exponents are nonzero, whatever DivInvMonoid the bases live in.
Only finitely many factors in the unit-level prime factorization are nontrivial.
Unique factorization of an invertible fractional ideal as a product of prime powers.
An invertible fractional ideal whose multiplicities vanish outside T lies in the subgroup
generated by the primes of T.
The multiplicity of a quotient is the difference of the multiplicities. Mathlib's count
API has count_mul, count_inv, count_pow and count_zpow but no division form, so every
consumer that clears a denominator repeats the same rewrites.
The multiplicity of x / y is the difference of the multiplicities of x and y: count_div
read on principal fractional ideals, which is the form the S-integer class-group computation
uses.
The multiplicity of a principal fractional ideal is the sign-flipped logarithm of the
valuation. Stated at the multiplicative-units level u : Kˣ, matching Mathlib's
toPrincipalIdeal A K : Kˣ →* _.