Mahler measure of complex polynomials #
In this file we define the Mahler measure of a polynomial over ℂ[X] and prove some basic
properties.
Main definitions #
Polynomial.logMahlerMeasure p: the logarithmic Mahler measure of a polynomialpdefined as(2 * π)⁻¹ * ∫ x ∈ (0, 2 * π), log ‖p (e ^ (i * x))‖.Polynomial.mahlerMeasure p: the (exponential) Mahler measure of a polynomialp, which is equal toe ^ p.logMahlerMeasureifpis nonzero, and0otherwise.Polynomial.mapMahlerMeasure p v: the (exponential) Mahler measure of a polynomialpover a ringAwhose coefficients are mapped toℂviav : A →+* ℂ
Main results #
Polynomial.mahlerMeasure_mul: the Mahler measure of the product of two polynomials is the product of their Mahler measures.mahlerMeasure_eq_leadingCoeff_mul_prod_roots: the Mahler measure of a polynomial is the absolute value of its leading coefficient times the product of the absolute values of its roots lying outside the unit disk.mahlerMeasure_le_sqrt_sum_sq_norm_coeff: Landau's inequality — the Mahler measure is at most the ℓ² norm of the coefficient vector.norm_coeff_le_choose_mul_mahlerMeasure_of_one_le_mahlerMeasure: Mignotte's coefficient bound — iff = g * hwithM(h) ≥ 1, then‖g.coeff n‖ ≤ C(deg g, n) · M(f).
The logarithmic Mahler measure of a polynomial p defined as
(2 * π)⁻¹ * ∫ x ∈ (0, 2 * π), log ‖p (e ^ (i * x))‖
Equations
- p.logMahlerMeasure = Real.circleAverage (fun (x : ℂ) => Real.log ‖Polynomial.eval x p‖) 0 1
Instances For
The Mahler measure of a polynomial p defined as e ^ (logMahlerMeasure p) if p is nonzero
and 0 otherwise
Equations
- p.mahlerMeasure = if p ≠ 0 then Real.exp p.logMahlerMeasure else 0
Instances For
The Mahler measure of the product of two polynomials is the product of their Mahler measures
Alias of Polynomial.logMahlerMeasure_mul_eq_add_logMahlerMeasure.
The logarithmic Mahler measure of a polynomial is the log of the absolute value of its leading
coefficient plus the sum of the logs of the absolute values of its roots lying outside the unit
disk.
The Mahler measure of a polynomial is the absolute value of its leading coefficient times the product of the absolute values of its roots lying outside the unit disk.
Estimates for the Mahler measure #
Alias of Polynomial.leadingCoeff_le_mahlerMeasure.
If the leading coefficient of a polynomial has norm at least 1, then its Mahler measure is at least 1. This holds in particular for nonzero polynomials with integer coefficients, since their leading coefficient is a nonzero integer.
The Mahler measure of a polynomial is bounded above by the sum of the norms of its coefficients.
Landau's inequality: the Mahler measure of a polynomial is at most the ℓ² norm
of its coefficient vector, √(∑ ‖coeff i‖²).
This is the classical inequality due to Landau (1905). Combined with the multiplicativity of the
Mahler measure (mahlerMeasure_mul), it gives the Mignotte bound on coefficients of polynomial
factors.
TODO: restate using a dedicated polynomial ℓ² norm once one is defined (see the TODO in
Mathlib.Analysis.Polynomial.Norm).
The Mahler measure of a polynomial is at most the sup norm of the polynomial times the square root of its degree plus one.
The Mignotte bound #
Mignotte's coefficient bound: if f = g * h and h has Mahler measure at least 1
(which holds in particular when h has integer coefficients with nonzero leading coefficient),
then the coefficients of g are bounded by a binomial coefficient times the Mahler measure
of g * h.
Combined with mahlerMeasure_le_sqrt_sum_sq_norm_coeff (Landau's inequality), this gives
the classical Mignotte bound
‖g.coeff n‖ ≤ C(deg g, n) · √(∑ i ∈ f.support, ‖f.coeff i‖ ^ 2)
used in polynomial factorization algorithms (Berlekamp–Zassenhaus).
Mahler Measure on Other Rings #
While the Mahler measure is an inherently Complex concept, we often want to work with it for
polynomials with coefficients in subrings of ℂ. To do so, we introduce mapMahlerMeasure. This
takes a RingHom A ℂ which takes the polynomial from A[X] to ℂ[X].
Some lemmas require the RingHom to also preserve the norm on the base ring, e.g.,
leadingCoeff_le_mapMahlerMeasure. Those will come below.
The Mahler measure for polynomials on rings other than ℂ. Most theorems
will require A to be a NormedRing and v to be an isometry. See, e.g.,
mapMahlerMeasure_const
Equations
- p.mapMahlerMeasure v = (Polynomial.map v p).mahlerMeasure