Absolute height and Mahler measure
DefinitionPrimitive integral minimal polynomial#✓fully proved
Let \(K\) be a field that is an algebra over \(\mathbb{Q}\), let \(x \in K\), and let \(m_x \in \mathbb{Q}[X]\) be the minimal polynomial of \(x\) over \(\mathbb{Q}\), with \(m_x = 0\) when \(x\) is not algebraic over \(\mathbb{Q}\). Choose a nonzero integer \(b\) such that \(b\,m_x\) has integer coefficients. The primitive integral minimal polynomial \(P_x \in \mathbb{Z}[X]\) of \(x\) is the primitive part of \(b\,m_x\): when \(b\,m_x \neq 0\) it is \(b\,m_x\) divided by the nonnegative greatest common divisor of its coefficients, and when \(b\,m_x = 0\) it is \(1\).
Thus for algebraic \(x\), \(P_x\) is a primitive polynomial with integer coefficients that is a nonzero rational multiple of \(m_x\), determined up to sign, and for nonalgebraic \(x\), \(P_x = 1\). The sign is immaterial for applications to Mahler measure.
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
Used by 14
TheoremLogarithmic height from the roots of the minimal polynomial, for an integral element#✓fully proved
Let \(K\) be a field of characteristic zero and let \(x \in K\) be integral over \(\mathbb{Q}\). Let \(d\) be the degree of the minimal polynomial of \(x\) over \(\mathbb{Q}\), and let \(P_x \in \mathbb{Z}[X]\) be the primitive integral minimal polynomial of \(x\), with leading coefficient \(a\). Then the absolute logarithmic height of \(x\) is
where the sum runs over the complex roots \(z\) of \(P_x\), counted with multiplicity, and \(\log^+ t = \max(0, \log t)\).
public theorem absLogHeight₁_eq_log_leadingCoeff_add_sum_log_roots_of_isIntegral
{K : Type*} [Field K] [CharZero K] [Algebra ℚ K] (x : K) (hx : IsIntegral ℚ x) :
NumberField.absLogHeight₁ x =
(Real.log
‖((NumberField.primitiveIntMinpoly x).map (Int.castRingHom ℂ)).leadingCoeff‖ +
(((NumberField.primitiveIntMinpoly x).map (Int.castRingHom ℂ)).roots.map
(fun z => Real.posLog ‖z‖)).sum) /
((minpoly ℚ x).natDegree : ℝ)
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
TheoremLogarithmic height from the roots of the minimal polynomial, for an algebraic element#✓fully proved
Let \(K\) be a field of characteristic zero and let \(x \in K\) be algebraic over \(\mathbb{Q}\). Let \(d\) be the degree of the minimal polynomial of \(x\) over \(\mathbb{Q}\), and let \(P_x \in \mathbb{Z}[X]\) be the primitive integral minimal polynomial of \(x\), with leading coefficient \(a\). Then the absolute logarithmic height of \(x\) is
where the sum runs over the complex roots \(z\) of \(P_x\), counted with multiplicity, and \(\log^+ t = \max(0, \log t)\).
public theorem absLogHeight₁_eq_log_leadingCoeff_add_sum_log_roots_of_isAlgebraic
{K : Type*} [Field K] [CharZero K] [Algebra ℚ K] (x : K) (hx : IsAlgebraic ℚ x) :
NumberField.absLogHeight₁ x =
(Real.log
‖((NumberField.primitiveIntMinpoly x).map (Int.castRingHom ℂ)).leadingCoeff‖ +
(((NumberField.primitiveIntMinpoly x).map (Int.castRingHom ℂ)).roots.map
(fun z => Real.posLog ‖z‖)).sum) /
((minpoly ℚ x).natDegree : ℝ)
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Uses 2
TheoremLogarithmic height from the roots of the minimal polynomial#✓fully proved
Let \(K\) be a field of characteristic zero that is algebraic over \(\mathbb{Q}\), and let \(x \in K\). Let \(d\) be the degree of the minimal polynomial of \(x\) over \(\mathbb{Q}\), and let \(P_x \in \mathbb{Z}[X]\) be the primitive integral minimal polynomial of \(x\), with leading coefficient \(a\). Then the absolute logarithmic height of \(x\) is
where the sum runs over the complex roots \(z\) of \(P_x\), counted with multiplicity, and \(\log^+ t = \max(0, \log t)\).
public theorem absLogHeight₁_eq_log_leadingCoeff_add_sum_log_roots
{K : Type*} [Field K] [CharZero K] [Algebra ℚ K] [Algebra.IsAlgebraic ℚ K] (x : K) :
NumberField.absLogHeight₁ x =
(Real.log
‖((NumberField.primitiveIntMinpoly x).map (Int.castRingHom ℂ)).leadingCoeff‖ +
(((NumberField.primitiveIntMinpoly x).map (Int.castRingHom ℂ)).roots.map
(fun z => Real.posLog ‖z‖)).sum) /
((minpoly ℚ x).natDegree : ℝ)
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Sources
- arXiv:2608.15903; equivalent formulas occur in arXiv:2304.11607, 2309.11173, 2311.13047, 2311.14001, 2607.25168, 2608.04445, and 2608.20995.
Uses 2
TheoremMultiplicative height as a Mahler measure, for an integral element#✓fully proved
Let \(K\) be a field of characteristic zero and let \(x \in K\) be integral over \(\mathbb{Q}\). Let \(d\) be the degree of the minimal polynomial of \(x\) over \(\mathbb{Q}\), and let \(P_x \in \mathbb{Z}[X]\) be the primitive integral minimal polynomial of \(x\). Then the absolute multiplicative height of \(x\) is \(H(x) = M(P_x)^{1/d}\), where \(M(P_x)\) is the Mahler measure of \(P_x\) regarded as a polynomial with complex coefficients.
public theorem absMulHeight₁_eq_mapMahlerMeasure_of_isIntegral
{K : Type*} [Field K] [CharZero K] [Algebra ℚ K] (x : K) (hx : IsIntegral ℚ x) :
NumberField.absMulHeight₁ x =
(NumberField.primitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ) ^
((minpoly ℚ x).natDegree : ℝ)⁻¹
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Uses 1 · Used by 2
TheoremAbsolute multiplicative height as a Mahler measure#✓fully proved
Let \(K\) be a field of characteristic zero that is algebraic over \(\mathbb{Q}\), and let \(x \in K\). Let \(d\) be the degree of the minimal polynomial of \(x\) over \(\mathbb{Q}\), and let \(P_x \in \mathbb{Z}[X]\) be the primitive integral minimal polynomial of \(x\). Then the absolute multiplicative height of \(x\) is \(H(x) = M(P_x)^{1/d}\), where \(M(P_x)\) is the Mahler measure of \(P_x\) regarded as a polynomial with complex coefficients.
public theorem absMulHeight₁_eq_mapMahlerMeasure {K : Type*} [Field K] [CharZero K]
[Algebra ℚ K] [Algebra.IsAlgebraic ℚ K] (x : K) :
NumberField.absMulHeight₁ x =
(NumberField.primitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ) ^
((minpoly ℚ x).natDegree : ℝ)⁻¹
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Sources
- arXiv:2608.15891, lines 205–217; equivalent formulations also occur in arXiv:2306.11331, 2307.11849, 2307.14915, 2312.04354, 2607.28857, 2607.29208, and 2608.11904.
Uses 2
DefinitionPositive primitive integral minimal polynomial#✓fully proved
Let \(K\) be a field that is a \(\mathbb{Q}\)-algebra, let \(x \in K\), and let \(p\) be the canonical primitive integral minimal polynomial of \(x\). The positive primitive integral minimal polynomial of \(x\) is \(-p\) if the leading coefficient of \(p\) is negative, and \(p\) otherwise.
Since \(p\) is nonzero, the result has positive leading coefficient. When \(x\) is not algebraic over \(\mathbb{Q}\), \(p\) is the constant polynomial \(1\), and so is the result.
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Uses 1 · Used by 8
TheoremThe positive primitive integral minimal polynomial is primitive#✓fully proved
For every element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the positive primitive integral minimal polynomial of \(x\) is primitive: the greatest common divisor of its integer coefficients is \(1\).
theorem positivePrimitiveIntMinpoly_isPrimitive (x : K) :
(positivePrimitiveIntMinpoly x).IsPrimitive
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
Uses 2
TheoremThe positive primitive integral minimal polynomial is nonzero#✓fully proved
Let \(K\) be a field that is a \(\mathbb{Q}\)-algebra. For every \(x \in K\), the positive primitive integral minimal polynomial of \(x\) is not the zero polynomial.
theorem positivePrimitiveIntMinpoly_ne_zero (x : K) :
positivePrimitiveIntMinpoly x ≠ 0
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
Uses 2
TheoremThe positive primitive integral minimal polynomial has positive leading coefficient#✓fully proved
For every element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the leading coefficient of the positive primitive integral minimal polynomial of \(x\) is a strictly positive integer.
theorem positivePrimitiveIntMinpoly_leadingCoeff_pos (x : K) :
0 < (positivePrimitiveIntMinpoly x).leadingCoeff
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
Uses 2 · Used by 1
TheoremSign normalization preserves the degree#✓fully proved
For every element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the positive primitive integral minimal polynomial of \(x\) has the same degree as the primitive integral minimal polynomial of \(x\).
theorem positivePrimitiveIntMinpoly_natDegree (x : K) :
(positivePrimitiveIntMinpoly x).natDegree = (primitiveIntMinpoly x).natDegree
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Uses 2 · Used by 1
TheoremThe positive primitive integral minimal polynomial has the degree of the minimal polynomial#✓fully proved
The positive primitive integral minimal polynomial has the degree of the minimal polynomial. For every element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the positive primitive integral minimal polynomial of \(x\) has the same degree as the minimal polynomial of \(x\) over \(\mathbb{Q}\).
Degrees are natural numbers, the zero polynomial having degree \(0\); if \(x\) is not algebraic over \(\mathbb{Q}\), both degrees are \(0\).
theorem positivePrimitiveIntMinpoly_natDegree_eq (x : K) :
(positivePrimitiveIntMinpoly x).natDegree = (minpoly ℚ x).natDegree
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
Uses 3
TheoremAn algebraic element is a root of its positive primitive integral minimal polynomial#✓fully proved
Let \(K\) be a field of characteristic zero that is an algebra over \(\mathbb{Q}\), and let \(x \in K\) be algebraic over \(\mathbb{Q}\). Then the positive primitive integral minimal polynomial of \(x\), with its integer coefficients mapped into \(K\), vanishes at \(x\).
theorem positivePrimitiveIntMinpoly_eval₂_at [CharZero K] (x : K) (hx : IsAlgebraic ℚ x) :
Polynomial.eval₂ (Int.castRingHom K) x (positivePrimitiveIntMinpoly x) = 0
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
Uses 2
DefinitionAlgebraic Mahler measure#✓fully proved
For an element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the algebraic Mahler measure \(M(x)\) is the Mahler measure of the positive primitive integral minimal polynomial of \(x\), regarded as a polynomial with complex coefficients. If \(x\) is not algebraic over \(\mathbb{Q}\), this polynomial is the constant \(1\), so \(M(x) = 1\).
noncomputable def algebraicMahlerMeasure (x : K) : ℝ :=
(positivePrimitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ)
noncomputable def positivePrimitiveIntMinpoly (x : K) : Polynomial ℤ :=
let p := primitiveIntMinpoly x
if p.leadingCoeff < 0 then -p else p
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:30
Uses 1 · Used by 10
TheoremThe sign normalization does not change the Mahler measure#✓fully proved
For every element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the algebraic Mahler measure of \(x\), that is the Mahler measure of the positive primitive integral minimal polynomial of \(x\), equals the Mahler measure of the primitive integral minimal polynomial of \(x\), both polynomials being regarded as polynomials with complex coefficients.
theorem algebraicMahlerMeasure_eq (x : K) :
algebraicMahlerMeasure x = (primitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ)
noncomputable def algebraicMahlerMeasure (x : K) : ℝ :=
(positivePrimitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ)
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:95
noncomputable def primitiveIntMinpoly (x : K) : ℤ[X] :=
(IsLocalization.integerNormalization (nonZeroDivisors ℤ) (minpoly ℚ x)).primPart
MathlibExt/NumberTheory/Height/Absolute.lean:33
Uses 2 · Used by 1
TheoremThe algebraic Mahler measure is at least one#✓fully proved
For every element \(x\) of a field \(K\) that is an algebra over \(\mathbb{Q}\), the algebraic Mahler measure \(M(x)\) of \(x\) satisfies \(1 \le M(x)\).
This holds because the positive primitive integral minimal polynomial of \(x\) has a positive integer leading coefficient.
theorem one_le_algebraicMahlerMeasure (x : K) : 1 ≤ algebraicMahlerMeasure x
noncomputable def algebraicMahlerMeasure (x : K) : ℝ :=
(positivePrimitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ)
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:95
Uses 3 · Used by 2
TheoremAbsolute logarithmic height from the algebraic Mahler measure#✓fully proved
Let \(K\) be a field of characteristic zero that is an algebra over \(\mathbb{Q}\), and let \(x \in K\) be algebraic over \(\mathbb{Q}\). Let \(d\) be the degree of the minimal polynomial of \(x\) over \(\mathbb{Q}\), and let \(M(x)\) be the algebraic Mahler measure of \(x\), the Mahler measure of the positive primitive integral minimal polynomial of \(x\) regarded as a complex polynomial. Then the absolute logarithmic height of \(x\) equals \(\log M(x) / d\).
theorem absLogHeight₁_eq_log_algebraicMahlerMeasure [CharZero K]
(x : K) (hx : IsAlgebraic ℚ x) :
absLogHeight₁ x = Real.log (algebraicMahlerMeasure x) / (minpoly ℚ x).natDegree
noncomputable def algebraicMahlerMeasure (x : K) : ℝ :=
(positivePrimitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ)
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:95
TheoremOne plus the logarithm of a Mahler measure above one is below it#✓fully proved
Let \(x\) be an element of a field \(K\) that is an algebra over \(\mathbb{Q}\), and let \(M(x)\) be its algebraic Mahler measure. If \(M(x) > 1\), then \(1 + \log M(x) < M(x)\).
Voutier uses this elementary inequality to pass from lower bounds for \(\log M(x)\) to lower bounds for \(M(x)\).
theorem log_algebraicMahlerMeasure_add_one_lt (x : K) (hM : 1 < algebraicMahlerMeasure x) :
1 + Real.log (algebraicMahlerMeasure x) < algebraicMahlerMeasure x
noncomputable def algebraicMahlerMeasure (x : K) : ℝ :=
(positivePrimitiveIntMinpoly x).mapMahlerMeasure (Int.castRingHom ℂ)
MathlibExt/NumberTheory/Height/PrimitiveMahler.lean:95
Uses 1
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.