The Arakelov height over a number field #
Mathlib's Height.mulHeight measures a tuple by the sup norm at every place. In Arakelov
theory one instead uses the ℓ² norm at the archimedean places — the Fubini–Study metric on
O(1) — and keeps the sup norm at the finite places. The resulting height is the one in which
the constants of the Siegel-lemma literature (Bombieri–Vaaler, Schmidt) are stated.
This file defines that normalization over a number field K and proves its basic API — scaling
invariance and the descent to projective space, 1 ≤ H_Ar, invariance under reindexing, and the
affine case — together with the two-sided comparison with Height.mulHeight, which is what lets
a bound stated in either normalization be read in the other. Not all of
Mathlib.NumberTheory.Height.Basic transfers here — see the implementation notes.
Main definitions #
NumberField.arakelovMulHeight xforx : ι → K: the multiplicative Arakelov height∏_{v | ∞} (∑ i, v (x i)²)^{mult v / 2} · ∏ᶠ_{v ∤ ∞} ⨆ i, v (x i).NumberField.arakelovLogHeight x: its logarithm.NumberField.arakelovMulHeight₁ xandNumberField.arakelovLogHeight₁ xforx : K: the one-variable (affine) case, the height of the tuple![x, 1].Projectivization.arakelovMulHeightandProjectivization.arakelovLogHeight: the descent of the above toProjectivization K (ι → K), which the scaling invariance below justifies.
Main results #
NumberField.arakelovMulHeight_smul_eq: invariance under scaling by a nonzero element ofK, by the product formula. This is what makes the height projective.NumberField.one_le_arakelovMulHeight: the Arakelov height is at least1.NumberField.arakelovMulHeight_comp_equiv: invariance under reindexing.NumberField.arakelovMulHeight_oneandNumberField.arakelovMulHeight₁_one: the values#ι ^ (totalWeight K / 2)and2 ^ (totalWeight K / 2)on the all-ones tuple and at1, where the sup-norm height is1— the two normalizations genuinely differ.NumberField.arakelovLogHeight₁_eq: the local formula for the affine logarithmic height, withlog⁺ (v x)at the finite places.NumberField.mulHeight_le_arakelovMulHeightandNumberField.arakelovMulHeight_le_mulHeight: the two comparisons with Mathlib's sup-norm height, the second with the constant#ι ^ (totalWeight K / 2). These are what transport a constant stated for one normalization into the other, and the second is sharp: it is an equality at the all-ones tuple.NumberField.arakelovMulHeight₁_le_mulHeight₁: the affine case of the same, with constant2 ^ (totalWeight K / 2)— there is no equalityarakelovMulHeight₁ = mulHeight₁.Projectivization.mulHeight_le_arakelovMulHeightandProjectivization.arakelovMulHeight_le_mulHeight: the same two comparisons on projective space, where the heights of Layer 3 live. The first is what makes the Northcott property of Layer 1.1 carry over to the Arakelov normalization, since it bounds the sup-norm height by the Arakelov one with no constant at all.
Implementation notes #
As for Height.mulHeight, the zero tuple gets the junk value 1: the displayed product is 0
there, which would break 1 ≤ arakelovMulHeight and the comparison with Height.mulHeight.
NumberField.arakelovMulHeight_eq recovers the displayed formula for a nonzero tuple, and every
statement below holds unconditionally with this convention.
The index type carries Fintype rather than Finite because the archimedean local factor is a
Finset.sum over ι; the value does not depend on the instance.
Only the archimedean factor differs from NumberField.mulHeight_eq. Accordingly the proof of
scaling invariance does not redo the product-formula bookkeeping at the finite places: the
transformation law of the finite part is extracted from Mathlib's
Height.mulHeight_smul_eq_mulHeight, which is the only place where the two normalizations
interact here.
Not every lemma of Mathlib.NumberTheory.Height.Basic has an Arakelov analogue, and the two that
fail are not edge cases. Height.mulHeight_pow is false here — the ℓ² norm is not
multiplicative under coordinatewise powers — and with it mulHeight₁_pow and mulHeight₁_zpow.
Height.mulHeight_comp_le is false for a non-injective reindexing, since repeating a
coordinate raises the ℓ² norm at the archimedean places while no sup norm can see the repetition;
it is the injective case that its consumers use. Both are refuted among the examples at the end of
this file.
References #
E. Bombieri and W. Gubler, Heights in Diophantine Geometry, Cambridge University Press
(2006), Definition 2.8.1 and 2.8.2–2.8.3 for the local factors and the resulting projective
height. Their h_Ar is the absolute logarithmic height, with degree-normalized local weights.
Writing H_Ar = exp(h_Ar) for its absolute multiplicative form, arakelovMulHeight here is
H_Ar ^ [K : ℚ], relative to K and matching Mathlib's Height.mulHeight convention.
This is Layers 0.1 and 0.2 of the ArithmeticHeights roadmap: the normalization and its
comparison with Height.mulHeight.
The Arakelov height of a tuple of elements of a number field: the ℓ² norm at the
archimedean places, weighted by InfinitePlace.mult, and the sup norm at the finite places.
For the zero tuple we take the junk value 1, as Height.mulHeight does.
This is the normalization in which the constants of the Siegel-lemma literature are stated;
Height.mulHeight uses the sup norm at every place. Both live in the library and every bound
says which one it is in.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The logarithmic Arakelov height. As everywhere in this development, the logarithmic height is defined as the logarithm of the multiplicative one and never independently.
Equations
Instances For
Scaling invariance #
The archimedean local factor scales by v c ^ mult v and the finite one by v c, so the
product formula makes the height invariant. The finite half of that computation is already in
Mathlib, inside Height.mulHeight_smul_eq_mulHeight; we read it off rather than redo it.
The Arakelov height is invariant under scaling, by the product formula, so it descends to
projective space exactly as Height.mulHeight does.
Positivity and reindexing #
The Arakelov height of a tuple is always at least 1.
The Arakelov height does not change under re-indexing.
Swapping the two coordinates leaves the Arakelov height of a pair unchanged.
Special values #
Height.mulHeight (1 : ι → K) = 1 by the product formula, but the Arakelov height of the same
tuple is #ι ^ (totalWeight K / 2): these are the values that exhibit the difference between
the two normalizations without touching the junk value.
The Arakelov height of the all-ones tuple. Its sup-norm counterpart Height.mulHeight_one
has value 1.
On a subsingleton index type every tuple has Arakelov height 1, by the product formula.
This is the degenerate case in which the Arakelov and sup-norm normalizations agree.
The comparison with the sup-norm height #
‖·‖_∞ ≤ ‖·‖_2 ≤ √(#ι) · ‖·‖_∞ at each archimedean place, raised to the weight mult v and
multiplied over the places; the finite parts of the two heights are the same number and factor
out. This is Layer 0.2 of the roadmap: the pair of lemmas that transports a constant stated for
the Arakelov height into Mathlib's normalization and back, and so the reason a bound in either
normalization is a bound in the other.
The constant of the upper comparison cannot be improved: at the all-ones tuple it is an equality,
by arakelovMulHeight_one against Height.mulHeight_one.
The sup-norm height is at most the Arakelov height. The finite parts agree and the
archimedean ones compare place by place, since ‖·‖_∞ ≤ ‖·‖_2.
The Arakelov height is at most #ι ^ (totalWeight K / 2) times the sup-norm height —
the lemma that carries the constants of the Siegel-lemma literature into Mathlib's
normalization, from ‖·‖_2 ≤ √(#ι) · ‖·‖_∞ at each archimedean place.
ι must be nonempty: on the empty index type both heights take the junk value 1 while the
right-hand side is 0. The constant is sharp — arakelovMulHeight_one is the case of
equality.
On a subsingleton index type the two normalizations agree: both are 1, by the product
formula. This is the only index type on which they agree unconditionally.
The one-variable case #
arakelovMulHeight₁ x is the Arakelov height of the point (x : 1) of the projective line.
Unlike the sup-norm normalization, its archimedean local factor is ((v x) ^ 2 + 1) ^ (mult v / 2)
rather than max (v x) 1 ^ mult v, so it does not agree with Height.mulHeight₁.
The multiplicative Arakelov height of an element of a number field, i.e. of the point
(x : 1) of the projective line.
Equations
Instances For
The logarithmic Arakelov height of an element of a number field.
Equations
Instances For
The familiar formula for the Arakelov height of a single element.
The local formula for the affine logarithmic Arakelov height: the finite places contribute
log⁺ (v x), the positive part of the logarithm.
The value of the affine Arakelov height at 1: 2 ^ (totalWeight K / 2), not 1. This is
the positive form of the warning that arakelovMulHeight₁ is not Height.mulHeight₁; the two
one-variable heights are related only by the comparison lemmas of Layer 0.2.
The affine Arakelov height is invariant under inversion: H_Ar(x⁻¹ : 1) = H_Ar(x : 1),
since both are the height of the projective point (x : 1) = (1 : x⁻¹).
The comparison of Layer 0.2, applied to ![x, 1]. This is the only relation between the two
one-variable heights: arakelovMulHeight₁ = mulHeight₁ is false, already at x = 1.
The descent to projective space #
Scaling invariance makes the Arakelov height a well-defined function on
Projectivization K (ι → K), exactly as for Projectivization.mulHeight.
The multiplicative Arakelov height of a point of projective space over a number field.
Equations
- x.arakelovMulHeight = Projectivization.lift (fun (r : { v : ι → K // v ≠ 0 }) => NumberField.arakelovMulHeight ↑r) ⋯ x
Instances For
The logarithmic Arakelov height of a point of projective space over a number field.
Equations
- x.arakelovLogHeight = Projectivization.lift (fun (r : { v : ι → K // v ≠ 0 }) => NumberField.arakelovLogHeight ↑r) ⋯ x
Instances For
On a subsingleton index type every point of projective space has Arakelov height 1;
the projective form of NumberField.arakelovMulHeight_eq_one_of_subsingleton, and the degenerate
case in which the Arakelov and sup-norm normalizations agree.
Comparison of the two normalizations on projective space #
NumberField.mulHeight_le_arakelovMulHeight and NumberField.arakelovMulHeight_le_mulHeight read
on Projectivization K (ι → K). Both sides are computed on any representative, so the comparisons
descend to projective space with the same constant.
The projective sup-norm height is at most the projective Arakelov height.
The projective Arakelov height is at most #ι ^ (totalWeight K / 2) times the projective
sup-norm height, with the constant — sharp — of NumberField.arakelovMulHeight_le_mulHeight.
positivity extensions #
The Arakelov heights are positive (multiplicative) resp. nonnegative (logarithmic), exactly as
their sup-norm counterparts in Mathlib.NumberTheory.Height.Basic.
Extension for the positivity tactic: NumberField.arakelovMulHeight is always positive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: NumberField.arakelovLogHeight is always
nonnegative.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: NumberField.arakelovMulHeight₁ is always
positive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: NumberField.arakelovLogHeight₁ is always
nonnegative.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: Projectivization.arakelovMulHeight is always
positive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: Projectivization.arakelovLogHeight is always
nonnegative.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Worked examples #
Cheap checks that the definition means what it should. Over ℚ the two normalizations of the
height of the point (1 : 1) genuinely differ, so the √N factors in the Siegel-lemma
literature are not cosmetic and a proof that silently interchanges the two heights is wrong.
The third shows that the constant of arakelovMulHeight_le_mulHeight is attained, so it cannot be
improved. The last two are rejection tests: they refute the two lemmas of
Mathlib.NumberTheory.Height.Basic that a reader would expect to carry over to this normalization
and that do not.