Complements on ideals of a Dedekind domain #
This file collects general facts about ideals and height-one primes of a Dedekind domain,
complementing Mathlib/RingTheory/DedekindDomain/Ideal/Lemmas.lean. In particular, it develops
the predicate Ideal.IsPrimeTo I S, saying that I is nonzero and divisible by no prime in S,
together with its induction principle Ideal.IsPrimeTo.induction_on and its transport
Ideal.isPrimeTo_comap_iff along a ring isomorphism.
The predicate is closed under products (Ideal.isPrimeTo_mul_iff, its finite form
Ideal.isPrimeTo_prod_iff) and powers (Ideal.isPrimeTo_pow_iff), and forbidding one more
prime is Ideal.isPrimeTo_insert_iff. Complementing a set of primes
turns it into a support condition: IsPrimeTo I Sᶜ says that every prime factor of I lies in
S. The two extreme cases are Ideal.isPrimeTo_univ_iff (no prime factor at all, so I = ⊤) and
Ideal.isPrimeTo_compl_singleton_iff (a single allowed prime, so I is a prime power), and
Ideal.IsPrimeTo.exists_eq_pow_mul splits off one allowed prime at a time. The file also records
the prime-power factorization Ideal.exists_eq_prod_pow of an arbitrary nonzero ideal. Together
with the uniqueness statement Ideal.eq_and_eq_of_pow_mul_eq_pow_mul and the relative primality
Ideal.IsPrimeTo.isRelPrime of ideals supported on complementary sets, these are what turn a
finite set of primes into a finite Euler product in
TauCeti/NumberTheory/ArithmeticDirichletSeries/EulerProduct/Basic.lean.
The carrier IsDedekindDomain.HeightOneSpectrum.primeIdealPow represents prime powers as nonzero
ideals over any integral domain, with injectivity in the exponent over a Dedekind domain.
Ideal.eventually_isPrimeTo_compl records that a nonzero ideal is supported on every sufficiently
large finite set of primes. These constructions use only ideal arithmetic, independently of norms.
It also collects how an isomorphism e : R ≃+* R' moves ideals: Ideal.map e preserves
divisibility (Ideal.map_dvd_map_iff_of_ringEquiv, Ideal.map_pow_dvd_map_iff_of_ringEquiv,
stated over commutative semirings, since the proofs use only that Ideal.map e and
Ideal.map e.symm are mutually inverse) and factorisation multiplicities
(Ideal.count_factors_map_of_ringEquiv), and Mathlib's transport equivOfRingEquiv e of height
one primes is Ideal.map e on underlying ideals
(IsDedekindDomain.HeightOneSpectrum.asIdeal_equivOfRingEquiv). Those four are the ideal-level
input to the adic-valuation transport in
TauCeti/RingTheory/DedekindDomain/AdicValuation/Transport.lean; they are adapted from
AINTLIB (Apache-2.0), commit 513e83879e2f,
projects/HasseWeil/HasseWeil/WeilPairing/DivisorGalois.lean. The inverse transport
(equivOfRingEquiv e).symm is Ideal.comap e on underlying ideals
(IsDedekindDomain.HeightOneSpectrum.asIdeal_equivOfRingEquiv_symm).
In the context of arithmetic Dirichlet series, Ideal.IsPrimeTo I S expresses that a nonzero
ideal I avoids a set S of bad primes; nonzeroness is built into the predicate so that ⊥ is
prime to no set at all.
The file also identifies any height-one prime of a discrete valuation ring with its maximal ideal
(IsDedekindDomain.HeightOneSpectrum.eq_maximalIdeal), which is what lets a condition stated at
the height-one primes of such a ring be read as a condition on its valuation. It was split out of
material adapted from Michael Stoll's elliptic-curves formalisation
(EllipticCurves/Mathlib/AdicCompletionExtension.lean at the roadmap's pin 66889eada51a,
Apache 2.0, by Michael Stoll), where it is the step behind valuation_adicCompletion_algebraMap.
The theorem IsDedekindDomain.HeightOneSpectrum.exists_mem_notMem was split out of material
adapted from Michael Stoll's elliptic-curves formalisation
(github.com/MichaelStollBayreuth/EllipticCurves, EllipticCurves/Mathlib/SIntegers.lean 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.
IsDedekindDomain.HeightOneSpectrum.comapOfNeBot and its projection are likewise adapted from that
formalisation (github.com/MichaelStollBayreuth/EllipticCurves, EllipticCurves/Mathlib/Basic.lean
line 539, at the roadmap's pin 66889eada51a74c2f5dfb7fb5909b0b5a0a2d96e, Apache 2.0, by Michael
Stoll). The construction is the source's; what changed is the hypothesis — the source and this
version take the nonvanishing of the contraction as a hypothesis, where Mathlib's
HeightOneSpectrum.comap instead derives it from surjectivity of the map.
Ideal.ne_bot_of_comap_ne_bot plays the role of the source's
comap_ne_bot_of_comap_comap_ne_bot (EllipticCurves/Mathlib/Basic.lean line 270): it is what
discharges that nonvanishing hypothesis when a prime is contracted through an intermediate ring.
It is stated here in the general form — an arbitrary ideal and an injective ring homomorphism,
with the map producing the ideal dropped, since it plays no role — and proved from Mathlib's
Ideal.comap_bot_of_injective.
In a ring where irreducible elements are prime, such as a principal ideal domain, an irreducible
element q generates the height-one prime IsDedekindDomain.HeightOneSpectrum.ofIrreducible,
and two irreducible elements generate the same prime exactly when they are associated
(IsDedekindDomain.HeightOneSpectrum.ofIrreducible_eq_ofIrreducible_iff).
Divisibility of ideals is unchanged by pushing forward along a ring isomorphism: Ideal.map e
and Ideal.map e.symm are mutually inverse homomorphisms of the semirings of ideals.
Multiplicities in the factorisation of an ideal are unchanged by pushing forward along a ring
isomorphism: the number of times Ideal.map e p divides Ideal.map e I is the number of times
p divides I.
Distinct nonzero primes have zero multiplicity in one another. In a Dedekind domain a
nonzero prime is maximal, so Q ∣ P would force Q = P.
This is the coefficient-level form of "a prime power is supported at one prime": in a weighted sum over the primes above a fixed ideal, every term but the matching one vanishes.
A prime factor of an ideal of a Dedekind domain is a maximal ideal.
If the contraction of J along an injective ring homomorphism is nonzero, so is J itself.
This is the eliminator that discharges the nonvanishing hypothesis of
IsDedekindDomain.HeightOneSpectrum.comapOfNeBot when a prime is contracted through an
intermediate ring: contract all the way down to a base where nonvanishing is already known, and
read the intermediate step off from that. Only injectivity of the lower map is needed; the map
producing J plays no role, so it does not appear.
The e-th power of a height-one prime, as a nonzero ideal.
Instances For
A prime power, as a nonzero ideal, has the expected underlying ideal.
The zeroth power of a height-one prime is the unit ideal in the nonzero-ideal carrier.
Distinct primes give distinct first powers.
Distinct exponents give distinct powers of a height-one prime of a Dedekind domain.
The height-one prime of B obtained by contracting a height-one prime of C along a ring
homomorphism ψ : B →+* C, given that the contraction is nonzero.
Mathlib's IsDedekindDomain.HeightOneSpectrum.comap is the same construction, but it asks for ψ
to be surjective and derives the ne_bot field from that. comapOfNeBot generalises it:
the surjective case is recovered by supplying (Ideal.eq_bot_of_comap_eq_bot' hf).mt w.ne_bot, and
only the converse fails.
The generality is needed because the maps contracted along here are embeddings into completions —
R → v.adicCompletionIntegers K — which are neither surjective, so Mathlib's comap does not
apply, nor integral Algebra maps, so HeightOneSpectrum.under does not either. (ℤ → ℤ_p is
flat, not integral.) The ne_bot hypothesis has to be supplied by hand.
Adapted from Michael Stoll's EllipticCurves (EllipticCurves/Mathlib/Basic.lean line 539, Apache
2.0, at the roadmap's pin 66889eada51a74c2f5dfb7fb5909b0b5a0a2d96e); the ne_bot-as-hypothesis
formulation is the source's.
Instances For
The underlying ideal of comapOfNeBot is the contracted ideal.
Mathlib's transport equivOfRingEquiv e of height one primes along a ring isomorphism e
pushes the underlying ideal forward: (equivOfRingEquiv e v).asIdeal = Ideal.map e v.asIdeal.
The inverse transport (equivOfRingEquiv e).symm pulls the underlying ideal back along e:
((equivOfRingEquiv e).symm w).asIdeal = Ideal.comap e w.asIdeal.
The height-one prime (q) generated by an irreducible element q of a ring in which
irreducible elements are prime, such as a principal ideal domain. For R = K[X] and q = X this
is Mathlib's Polynomial.idealX.
Instances For
Two irreducible elements generate the same height-one prime exactly when they are associated.
Distinct height one primes are incomparable: a height one prime is not contained in any other one, since both are maximal.
An ideal of a Dedekind domain is prime to a set S of height-one primes when it is
nonzero and no prime of S divides it. Nonzeroness is part of the definition, so ⊥ is prime
to no set at all — not even to ∅.
Instances For
The zero ideal is prime to no set of primes, not even to the empty set.
Enlarging the set of forbidden primes by one. An ideal is prime to insert 𝔭 S exactly
when it is prime to S and not divisible by 𝔭.
Being prime to a set of primes transports along a ring isomorphism. An ideal pulled back
along e : R ≃+* A is prime to T exactly when the ideal itself is prime to the image of T
under the induced bijection of height-one spectra.
Every nonzero ideal is eventually supported: a sufficiently large finite set of height-one primes contains all its finitely many prime divisors.
Being prime to S is multiplicative. A product of ideals is prime to S exactly when
both factors are: neither factor may vanish, and a prime of S divides the product exactly when
it divides one of the factors.
A height-one prime ideal is prime to S exactly when its spectrum point is not in S.
Induction on ideals prime to S. Such an ideal is a finite product of height-one
primes outside S, so a property holding at ⊤ and stable under multiplication by a
height-one prime outside S holds for all of them.
Powers of an ideal prime to S are again prime to S.
A nonzero power of an ideal is prime to S exactly when the ideal is.
Being prime to S passes to finite products. A finite product of ideals is prime to S
exactly when every factor is; the empty product is ⊤, which is prime to everything.
Ideals supported on complementary sets of primes are relatively prime.
Every nonzero ideal is a finite product of prime powers. This produces the prime-power
factorizations consumed by multiplicativity statements such as
TauCeti.IdealArithmeticFunction.IsMultiplicative.map_prod_pow.
Splitting off one allowed prime. An ideal all of whose prime factors lie in insert 𝔭 S
is a power of 𝔭 times an ideal all of whose prime factors lie in S.
Uniqueness of the splitting. The exponent and the prime-to-p cofactor of a nonzero
ideal are determined by it. Only nonzeroness of p is used, not primality.
The maximal ideal is the only height-one prime of a discrete valuation ring.
Mathlib has IsDiscreteValuationRing.maximalIdeal as a HeightOneSpectrum and
IsLocalRing.eq_maximalIdeal for ideals, but not that the two agree at the level of
HeightOneSpectrum. That identification is what lets a statement about the height-one primes of a
discrete valuation ring be read as a statement about its valuation.