Basic theory of heights #
This is an attempt at formalizing some basic properties of height functions.
We aim at a level of generality that allows to apply the theory to algebraic number fields and to function fields (and possibly beyond).
The general set-up for heights is the following. Let K be a field.
- We have a
Multisetof archimedean absolute values onK(with values inℝ). - We also have a
Setof non-archimedean (i.e.,|x+y| ≤ max |x| |y|) absolute values. - For a given
x ≠ 0inK,|x|ᵥ = 1for all but finitely many (non-archimedean)v. - We have the product formula
∏ v : arch, |x|ᵥ * ∏ v : nonarch, |x|ᵥ = 1for allx ≠ 0inK, where the first product is over the multiset of archimedean absolute values.
We realize this implementation via the class Height.AdmissibleAbsValues K.
Main definitions #
We define multiplicative heights and logarithmic heights (which are just defined to be the (real) logarithm of the corresponding multiplicative height). This leads to some duplication (in the definitions and statements; the proofs are reduced to those for the multiplicative height), which is justified, as both versions are frequently used.
We define the following variants.
Height.mulHeight₁ xandHeight.logHeight₁ xforx : K. This is the height of an element ofK.Height.mulHeight xandHeight.logHeight xforx : ι → Kwithιfinite. This is the height of a tuple of elements ofKrepresenting a point in projective space. Whenx = 0, we define the multiplicative height to be1(so the loarithmic height is0). It is invariant under scaling by nonzero elements ofK.Finsupp.mulHeight xandFinsupp.logHeight xforx : α →₀ K. This is the same as the height ofxrestricted to the support ofx.- (TODO)
Projectivization.mulHeightandProjectivization.logHeightonProjectivization K (ι → K)(with aFintype ι). This is the height of a point on projective space (with fixed basis).
Tags #
Height, absolute value
Families of admissible absolute values #
We define the class AdmissibleAbsValues K for a field K, which captures the notion of a
family of absolute values on K satisfying a product formula.
A type class capturing an admissible family of absolute values.
- archAbsVal : Multiset (AbsoluteValue K ℝ)
The archimedean absolute values as a multiset of
ℝ-valued absolute values onK. - nonarchAbsVal : Set (AbsoluteValue K ℝ)
The nonarchimedean absolute values as a set of
ℝ-valued absolute values onK. - isNonarchimedean (v : AbsoluteValue K ℝ) : v ∈ nonarchAbsVal → IsNonarchimedean ⇑v
The nonarchimedean absolute values are indeed nonarchimedean.
- mulSupport_finite {x : K} : x ≠ 0 → (Function.mulSupport fun (v : ↑nonarchAbsVal) => ↑v x).Finite
Only finitely many (nonarchimedean) absolute values are
≠ 1for any nonzerox : K. - product_formula {x : K} : x ≠ 0 → (Multiset.map (fun (x_1 : AbsoluteValue K ℝ) => x_1 x) archAbsVal).prod * ∏ᶠ (v : ↑nonarchAbsVal), ↑v x = 1
The product formula. The archimedean absolute values are taken with their multiplicity.
Instances
The totalWeight of a field with AdmissibleAbsValues is the sum of the multiplicities of
the archimedean places.
Instances For
Heights of field elements #
We use the subscipt ₁ to denote multiplicative and logarithmic heights of field elements
(this is because we are in the one-dimensional case of (affine) heights).
The multiplicative height of an element of K.
Equations
- Height.mulHeight₁ x = (Multiset.map (fun (v : AbsoluteValue K ℝ) => max (v x) 1) Height.AdmissibleAbsValues.archAbsVal).prod * ∏ᶠ (v : ↑Height.AdmissibleAbsValues.nonarchAbsVal), max (↑v x) 1
Instances For
The mutliplicative height of a field element is always at least 1.
The logarithmic height of an element of K.
Equations
Instances For
Heights of tuples and finitely supported maps #
We define the multiplicative height of a nonzero tuple x : ι → K as the product of the maxima
of v on x, as v runs through the relevant absolute values of K. As usual, the
logarithmic height is the logarithm of the multiplicative height.
When x = 0, we define the multiplicative height to be 1; this is a convenient "junk value",
which allows to avoid the condition x ≠ 0 in most of the results.
For a finitely supported function x : ι →₀ K, we define the height as the height of x
restricted to its support.
The multiplicative height of a tuple of elements of K.
For the zero tuple we take the junk value 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The logarithmic height of a tuple of elements of K.
Equations
Instances For
The multiplicative height of a finitely supported function.
Equations
- x.mulHeight = Height.mulHeight fun (i : ↥x.support) => x ↑i
Instances For
The logarithmic height of a finitely supported function.
Equations
- x.logHeight = Real.log (Height.mulHeight ⇑x)
Instances For
Properties of heights #
The multiplicative height of the inverse of a field element x
is the same as the multiplicative height of x.
The logarithmic height of the inverse of a field element x
is the same as the logarithmic height of x.
The multiplicative height of the nth power of a field element x (with n : ℕ)
is the nth power of the multiplicative height of x.
The logarithmic height of the nth power of a field element x (with n : ℕ)
is n times the logaritmic height of x.
The multiplicative height of the nth power of a field element x (with n : ℤ)
is the |n|th power of the multiplicative height of x.
The logarithmic height of the nth power of a field element x (with n : ℤ)
is |n| times the logarithmic height of x.