Documentation

Mathlib.NumberTheory.MahlerMeasure

Mahler measure of integer polynomials #

The main purpose of this file is to prove some facts about the Mahler measure of integer polynomials, in particular Northcott's Theorem for the Mahler measure.

Main results #

theorem Polynomial.card_eq_of_natDegree_le_of_coeff_le {n : } {B₁ B₂ : Fin (n + 1)} :
{p : Polynomial | p.natDegree n ∀ (i : Fin (n + 1)), B₁ i (p.coeff i) (p.coeff i) B₂ i}.ncard = i : Fin (n + 1), (B₂ i - B₁ i + 1).toNat

Northcott's Theorem: the set of integer polynomials of degree at most n and Mahler measure at most B is finite.

An upper bound on the number of integer polynomials of degree at most n and Mahler measure at most B.

The Mahler measure of a cyclotomic polynomial is 1.

If an integer polynomial has Mahler measure equal to 1, then all its complex roots are integral over ℤ.

If an integer polynomial has Mahler measure equal to 1, then all its complex roots have norm at most 1.

theorem Polynomial.pow_eq_one_of_mahlerMeasure_eq_one {p : Polynomial } (h : (map (Int.castRingHom ) p).mahlerMeasure = 1) {z : } (hz₀ : z 0) (hz : z p.aroots ) :
∃ (n : ), 0 < n z ^ n = 1

If an integer polynomial has Mahler measure equal to 1, then all its complex nonzero roots are roots of unity.

theorem Polynomial.isPrimitiveRoot_of_mahlerMeasure_eq_one {p : Polynomial } (h : (map (Int.castRingHom ) p).mahlerMeasure = 1) {z : } (hz₀ : z 0) (hz : z p.aroots ) :
∃ (n : ), 0 < n IsPrimitiveRoot z n

If an integer polynomial has Mahler measure equal to 1, then all its complex nonzero roots are roots of unity.

If an integer non-constant polynomial has Mahler measure equal to 1 and is not a multiple of X, then it is divisible by a cyclotomic polynomial.