The absolute height of a tuple of algebraic numbers #
Mathlib's Height.mulHeight is the height relative to the field it is computed over: over a
number field K it is the [K : ℚ]-th power of the classical absolute height. This file defines
the absolute height of a tuple of algebraic numbers,
absMulHeight x = mulHeight_F x ^ (1 / [F : ℚ]) with F = ℚ(x₀, x₁, …),
and proves that the field of definition does not matter: any number field containing the
coordinates computes the same number. It is the tuple analogue of Mathlib's
NumberField.absMulHeight₁, which handles a single element through ℚ⟮x⟯, and restricts to it.
Main definitions #
NumberField.absMulHeight xforx : ι → Kover a fieldKof characteristic zero, andNumberField.absLogHeight x, its logarithm. A tuple with a coordinate that is not algebraic gets the junk value1, asNumberField.absMulHeight₁does.Projectivization.absMulHeightandProjectivization.absLogHeight: the descent toProjectivization K (ι → K)over a field all of whose elements are algebraic.
Main results #
NumberField.absMulHeight_eq: over a number fieldK,absMulHeight xismulHeight x ^ (finrank ℚ K)⁻¹. WithNumberField.mulHeight_pow_finrankof Layer 0.3 this is the classical statement that the absolute height does not depend on the field of definition.NumberField.absMulHeight_eq_of_mem: the same, computed in an intermediate field containing the coordinates rather than inKitself. This is the form the other results consume.NumberField.absMulHeight_comp: invariance under an embedding of fields of characteristic zero — the absolute height belongs to the algebraic numbers themselves, not to any field holding them. It is what lets a value computed overℚbe read off inℝorℂ.NumberField.absMulHeight_eq_absMulHeight₁: the absolute height of![x, 1]is Mathlib's absolute height ofx, so the tuple definition extends the one-variable one. With it,NumberField.absMulHeight₁_comptransports Mathlib'sabsMulHeight₁along an embedding — an algebraic number and each of its conjugates have the same absolute height.NumberField.absMulHeight_smul_eq: scaling invariance, for an algebraic scalar.NumberField.absMulHeight_comp_le: reindexing does not raise the height, andNumberField.absMulHeight₁_le_absMulHeight, the bound on the coordinates of an affine chart that Northcott's theorem on projective space runs on.NumberField.absMulHeight_powandNumberField.absMulHeight₁_pow: the height of a coordinatewise power, together withNumberField.absMulHeight₁_zeroandNumberField.absMulHeight₁_one. Kronecker's theorem of Layer 1.4 runs on these.
Implementation notes #
⚠ The algebraicity hypothesis on the scalar in absMulHeight_smul_eq is not decorative. For c
transcendental and x a nonzero algebraic tuple, c • x has a transcendental coordinate, so its
absolute height is the junk value 1 while that of x need not be; absMulHeight is then not
constant on the line through x. This is refuted among the examples at the end of the file. The
descent to Projectivization K (ι → K) is therefore stated over a field with
[Algebra.IsAlgebraic ℚ K] — a number field, or AlgebraicClosure ℚ — and not over a general
field of characteristic zero, even though absMulHeight itself is defined there.
Two facts about Height.mulHeight do the work. Passing from the field ℚ(x₀, x₁, …) generated by
the coordinates to a larger number field is NumberField.mulHeight_pow_finrank of Layer 0.3, and
the normalizing exponent is what cancels the degree it introduces. Passing between two isomorphic
number fields is the degree-one case of the same theorem, recorded here as
NumberField.mulHeight_comp_ringEquiv; it is what absMulHeight_comp needs, since an embedding
carries ℚ(x₀, x₁, …) to the field generated by the image coordinates, not into a fixed field.
The index type carries Finite, as Height.mulHeight does, where the roadmap's pinned signature
has Fintype; nothing here sums over ι.
References #
E. Bombieri and W. Gubler, Heights in Diophantine Geometry, Cambridge University Press (2006),
§1.5. Their h(P) is Definition 1.5.4, the absolute logarithmic height; the independence of the
field of definition is Lemma 1.5.2, the invariance under coordinate scaling that makes the height
projective is Lemma 1.5.3, and the affine case — the height of (x₁, …, xₙ) read as the height of
(1 : x₁ : ⋯ : xₙ) — is 1.5.6. NumberField.absMulHeight_comp generalizes their Proposition
1.5.17, which states the same invariance for an element of the absolute Galois group of ℚ.
This is Layer 0.4 of the ArithmeticHeights roadmap.
The definition #
The absolute height is computed over IntermediateField.adjoin ℚ (Set.range x), the field the
coordinates generate, and normalized by the inverse of its degree.
The absolute multiplicative height of a tuple of algebraic numbers: the height relative to
the field the coordinates generate, taken to the power 1 / [ℚ(x₀, x₁, …) : ℚ]. A tuple with a
coordinate that is not algebraic gets the junk value 1.
This is the tuple analogue of Mathlib's NumberField.absMulHeight₁, which takes this route
through ℚ⟮x⟯; absMulHeight_eq_absMulHeight₁ says the two agree where both apply.
Equations
- NumberField.absMulHeight x = if hx : ∀ (i : ι), IsIntegral ℚ (x i) then (Height.mulHeight fun (i : ι) => ⟨x i, ⋯⟩) ^ (↑(Module.finrank ℚ ↥(IntermediateField.adjoin ℚ (Set.range x))))⁻¹ else 1
Instances For
The junk value: a tuple with a coordinate that is not algebraic has absolute height 1.
Heights of isomorphic number fields #
NumberField.mulHeight_pow_finrank at degree one: an isomorphism of number fields preserves the
relative height. This is the second ingredient of absMulHeight_comp, where the two fields
generated by a tuple and by its image are isomorphic but not equal.
The relative height is invariant under an isomorphism of number fields, being the degree-one
case of NumberField.mulHeight_pow_finrank.
The field of definition does not matter #
The two statements of the layer. Both come from NumberField.mulHeight_pow_finrank: passing from
ℚ(x₀, x₁, …) to a larger field raises the relative height to the degree of the step, which the
normalizing exponent divides out again.
The absolute height computed in a field of definition. Any number field between
ℚ(x₀, x₁, …) and K gives the same value.
The absolute height over a number field is the relative height normalized by the degree.
With NumberField.mulHeight_pow_finrank, this says that the absolute height does not depend on
the field the coordinates are read in.
The logarithmic form: the absolute logarithmic height is the relative one divided by the degree.
Invariance under an embedding #
The absolute height is attached to the algebraic numbers themselves: an embedding of fields of
characteristic zero leaves it unchanged. This is what makes a value computed over ℚ readable
inside ℝ or ℂ, where absMulHeight_eq does not apply because the ambient field is not a
number field.
The absolute height is invariant under an embedding. The height of x is a property of
the algebraic numbers x i, not of the field they are read in.
The absolute Arakelov height is invariant under an embedding #
The Arakelov normalization has no absolute form of its own in this development — it is written
arakelovMulHeight x ^ (finrank ℚ K : ℝ)⁻¹ wherever it is needed — so the statement is that that
expression does not change along a homomorphism of number fields. It is
NumberField.arakelovMulHeight_pow_finrank of Layer 0.3 read through the degree, and it is what
lets a conjugate of a tuple be compared with the tuple itself.
The absolute Arakelov height is invariant under an embedding of number fields. Every ring
homomorphism between fields of characteristic zero is a ℚ-algebra map, so no compatibility
hypothesis is needed; the degree of the extension it exhibits is exactly what the normalizing
exponent divides out.
Basic API, the affine case, and scaling #
On a subsingleton index type every tuple has absolute height 1: the height is computed in
the field the single coordinate generates, where Height.mulHeight_eq_one_of_subsingleton is the
product formula.
The absolute height does not increase under reindexing. Dropping or repeating coordinates
of an algebraic tuple cannot raise its height; this is Height.mulHeight_comp_le read in the
field the coordinates generate.
⚠ The algebraicity hypothesis is not decorative. Without it the statement is false: if some
coordinate of x is transcendental then absMulHeight x is the junk value 1, while x ∘ f
may omit that coordinate and have a larger height.
The logarithmic form of NumberField.absMulHeight_comp_le.
The absolute height is invariant under re-indexing. Unlike
NumberField.absMulHeight_comp_le, of which it is the two-sided form, this needs no algebraicity
hypothesis: an equivalence permutes the transcendental coordinates rather than dropping them, so
the two sides take the junk value together.
The logarithmic form of NumberField.absMulHeight_comp_equiv.
The absolute height of a coordinatewise power. Raising every coordinate of an algebraic
tuple to the n-th power raises the height to the n-th power. This is Height.mulHeight_pow
read in the field the coordinates generate, which the power does not enlarge, so the normalizing
exponent is the same on both sides.
The logarithmic form of NumberField.absMulHeight_pow.
The tuple definition extends Mathlib's one-variable one. Both sides take the junk value
1 when x is not algebraic.
The logarithmic form of NumberField.absMulHeight_eq_absMulHeight₁.
Mathlib's absolute height of an element is at least 1, the junk value included.
The logarithmic form of NumberField.one_le_absMulHeight₁.
Mathlib's absolute height of a power: the one-variable form of
NumberField.absMulHeight_pow. It is what makes the easy half of Kronecker's theorem immediate —
a root of unity has a power of height 1, hence height 1.
The logarithmic form of NumberField.absMulHeight₁_pow.
Zero has absolute height 1, the value Mathlib's Height.mulHeight₁_zero gives for the
relative height. Both this and NumberField.absMulHeight₁_one come from absMulHeight₁_pow:
0 and 1 are the idempotents of K, and a real number at least 1 that is its own square
is 1.
The logarithmic form of NumberField.absMulHeight₁_zero.
One has absolute height 1; see NumberField.absMulHeight₁_zero.
The logarithmic form of NumberField.absMulHeight₁_one.
In an affine chart, every coordinate has absolute height at most that of the tuple. A
tuple with a coordinate equal to 1 is the affine normalization of the projective point it
represents, and this is the bound its coordinates then satisfy.
It is the absolute counterpart of Height.mulHeight₁_div_le_mulHeight, and the one arithmetic
step in Northcott's theorem on projective space.
The logarithmic form of NumberField.absMulHeight₁_le_absMulHeight.
Mathlib's absolute height of an element is invariant under an embedding. This is the
one-variable form of NumberField.absMulHeight_comp, obtained from it through
absMulHeight_eq_absMulHeight₁; it is the statement that an algebraic number and each of its
conjugates have the same absolute height.
Scaling invariance, for an algebraic scalar. ⚠ The algebraicity hypothesis is not
decorative: for c transcendental and x a nonzero algebraic tuple, c • x has a transcendental
coordinate and absMulHeight (c • x) is the junk value 1. See the examples at the end of the
file.
The logarithmic form of NumberField.absMulHeight_smul_eq.
The descent to projective space #
Scaling invariance makes the absolute height a well-defined function on
Projectivization K (ι → K) — but only over a field all of whose elements are algebraic, since
that is where NumberField.absMulHeight_smul_eq applies to every scalar.
The absolute multiplicative height of a point of projective space over a field of algebraic numbers.
Equations
- x.absMulHeight = Projectivization.lift (fun (r : { v : ι → K // v ≠ 0 }) => NumberField.absMulHeight ↑r) ⋯ x
Instances For
The absolute logarithmic height of a point of projective space over a field of algebraic numbers.
Equations
- x.absLogHeight = Projectivization.lift (fun (r : { v : ι → K // v ≠ 0 }) => NumberField.absLogHeight ↑r) ⋯ x
Instances For
On a subsingleton index type every point of projective space has absolute height 1;
the projective form of NumberField.absMulHeight_eq_one_of_subsingleton.
Over a number field the projective absolute height is the projective relative height normalized by the degree, as it is for tuples.
positivity extensions #
The absolute heights are positive (multiplicative) resp. nonnegative (logarithmic), exactly as
their relative counterparts in Mathlib.NumberTheory.Height.Basic.
Extension for the positivity tactic: NumberField.absMulHeight is always positive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: NumberField.absLogHeight is always nonnegative.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: Projectivization.absMulHeight is always positive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extension for the positivity tactic: Projectivization.absLogHeight is always
nonnegative.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Worked examples #
The layer's acceptance test is that one number has one absolute height, whichever field it is read in; the rejection test is that the scaling invariance really does need its algebraicity hypothesis.