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.- (TODO)
Height.mulHeight xandHeight.logHeight xforx : ι → Kwithιfinite. This is the height of a tuple of elements ofKrepresenting a point in projective space. It is invariant under scaling by nonzero elements ofK(forx ≠ 0). - (TODO)
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.