Documentation

LeanPool.LehmerE10.Main

the assembly: #

`Irreducible lehmerPolynomial`   and   `coxeterE10.charpoly = lehmerPolynomial`.

Route: (1) TRACE CENSUS: the trace quintic q (with L(x) = x⁵·q(x + 1/x), TraceQuintic) has EXACTLY the five IVT-located real roots y₁<y₂<y₃<y₄ ∈ (−2,2), y₅ ∈ (2,21/10): five distinct roots of a degree-5 polynomial exhaust its complex roots, and q = ∏(X − yᵢ) — so q'(y₅) = ∏_{i<5}(y₅ − yᵢ) ≠ 0: the Salem trace root is simple. (2) ROOT CLASSIFICATION: every complex root z of L has trace z + 1/z ∈ {y₁..y₅}; the four ball traces force ‖z‖ = 1 (norm_eq_one_of_trace_in_ball), the Salem trace forces z ∈ {μ, ν} with μν = 1, ν < 1 < μ (the off-circle Salem pair). (3) SALEM PAIR SIMPLE: a double root of L at t ∈ {μ,ν} would kill L' there; the derivative–trace identity z²·L'(z) = 5z⁶·q(y) + (z⁷ − z⁵)·q'(y) then forces q'(y₅) = 0 (since t ∉ {0, ±1}) — refuted by (1). count μ = count ν = 1 in L. (4) THE FACTOR ARGUMENT: L = F·G proper monic ⟹ F(0)·G(0) = L(0) = 1 ⟹ ‖F(0)‖ = 1; but ‖F(0)‖ = ∏‖roots F‖ = μ^a·ν^b with (a,b) ∈ {0,1}² by (3). (1,0) gives μ = 1, (0,1) gives ν = 1 — both refuted; (0,0) makes F all-on-circle, (1,1) makes G all-on-circle — both killed by no_unit_circle_factor (Kronecker + the uniform-1291 cyclotomic kill). No proper factor exists. (5) ASSEMBLY: lehmer_irreducible (ℤ, then ℚ by Gauss); the Coxeter element of E₁₀ is annihilated by L (kernel computation), so by charpoly_eq_lehmer_of_irreducible its characteristic polynomial is L — first over ℚ, then over ℤ by injectivity of the coefficient map. SCOPE: Lehmer's 1933 conjecture (a positive lower bound for Mahler measures > 1) is NOT claimed anywhere in this repository. Axiom footprint: propext, Classical.choice, Quot.sound only.

The five trace roots, pinned from the RHLehmerTrace IVT witnesses. #

noncomputable def LehmerE10.y1 :

The first trace root of the quintic q, in (−2, −1).

Equations
Instances For
    noncomputable def LehmerE10.y2 :

    The second trace root of the quintic q, in (−1, 0).

    Equations
    Instances For
      noncomputable def LehmerE10.y3 :

      The third trace root of the quintic q, in (0, 1).

      Equations
      Instances For
        noncomputable def LehmerE10.y4 :

        The fourth trace root of the quintic q, in (1, 2).

        Equations
        Instances For
          noncomputable def LehmerE10.y5 :

          The Salem trace root of the quintic q, in (2, 21/10) — the one root off [−2, 2], giving the reciprocal pair {μ, 1/μ}.

          Equations
          Instances For
            theorem LehmerE10.y1_mem :
            y1 Set.Ioo (-2) (-3 / 2)
            theorem LehmerE10.y2_mem :
            y2 Set.Ioo (-3 / 2) (-1)
            theorem LehmerE10.y5_mem :
            y5 Set.Ioo 2 (21 / 10)

            The trace quintic as a polynomial over ℂ, and its root census. #

            The trace quintic over ℂ: q(y) = y⁵ + y⁴ − 5y³ − 5y² + 4y + 3, with L(x) = x⁵·q(x + 1/x).

            Equations
            Instances For
              noncomputable def LehmerE10.T5 :

              The five trace roots as a multiset over ℂ.

              Equations
              Instances For
                theorem LehmerE10.trace_root_cases {w : } (hw : traceQC w = 0) :
                w = y1 w = y2 w = y3 w = y4 w = y5

                Trace exhaustion: every complex root of the trace quintic is one of the five.

                The spectral factorization of the trace quintic: q = ∏ (X − yᵢ).

                The derivative of the trace quintic; the Salem trace root is simple. #

                noncomputable def LehmerE10.dtraceQC (y : ) :

                The derivative of the trace quintic, evaluated over ℂ (used to show the trace roots are simple).

                Equations
                Instances For

                  THE SALEM TRACE ROOT IS SIMPLE: q'(y₅) = ∏_{i<5}(y₅ − yᵢ) ≠ 0.

                  Lehmer over ℂ: evaluation bridge, derivative, and the derivative–trace identity. #

                  noncomputable def LehmerE10.LC :

                  Lehmer's polynomial over ℂ.

                  Equations
                  Instances For
                    theorem LehmerE10.root_ne_zero {z : } (hz : z LC.roots) :
                    z 0
                    theorem LehmerE10.LC_derivative_eval (z : ) :
                    Polynomial.eval z (Polynomial.derivative LC) = 10 * z ^ 9 + 9 * z ^ 8 - 7 * z ^ 6 - 6 * z ^ 5 - 5 * z ^ 4 - 4 * z ^ 3 - 3 * z ^ 2 + 1
                    theorem LehmerE10.deriv_trace_identity {z : } (hz : z 0) :
                    z ^ 2 * Polynomial.eval z (Polynomial.derivative LC) = 5 * z ^ 6 * traceQC (z + 1 / z) + (z ^ 7 - z ^ 5) * dtraceQC (z + 1 / z)

                    THE DERIVATIVE–TRACE IDENTITY: differentiating L(z) = z⁵ q(z + 1/z) and clearing denominators: z²·L'(z) = 5z⁶·q(y) + (z⁷ − z⁵)·q'(y) at y = z + 1/z.

                    The off-circle Salem pair {μ, ν}, μν = 1, ν < 1 < μ. #

                    noncomputable def LehmerE10.s5 :

                    The square-root discriminant √(y₅² − 4) splitting the Salem trace root into the reciprocal pair.

                    Equations
                    Instances For
                      noncomputable def LehmerE10.mu :

                      Lehmer's number μ ≈ 1.17628: the larger root of x² − y₅·x + 1.

                      Equations
                      Instances For
                        noncomputable def LehmerE10.nu :

                        The reciprocal root 1/μ: the smaller root of x² − y₅·x + 1.

                        Equations
                        Instances For
                          theorem LehmerE10.s5_sq :
                          s5 ^ 2 = y5 ^ 2 - 4
                          theorem LehmerE10.muC_prod :
                          mu * nu = 1
                          theorem LehmerE10.muC_sum :
                          mu + nu = y5
                          theorem LehmerE10.mu_trace :
                          mu + 1 / mu = y5
                          theorem LehmerE10.nu_trace :
                          nu + 1 / nu = y5

                          Root classification: on the circle, or in the Salem pair. #

                          theorem LehmerE10.root_classification {z : } (hz : z LC.roots) :
                          z = 1 z = mu z = nu

                          ROOT CLASSIFICATION (proven): every complex root of Lehmer is on the unit circle or equals μ or ν — the trace lands on one of the five census roots; ball traces pin the circle, the Salem trace pins the pair.

                          The Salem pair is SIMPLE in L (multiplicity one). #

                          theorem LehmerE10.salem_count_le_one {t : } (ht0 : 0 < t) (ht1 : t 1) (htr : t + 1 / t = y5) :

                          A real positive trace-y₅ root of Lehmer other than 1 has multiplicity one: a double root kills L' there, and the derivative–trace identity then forces q'(y₅)·t⁵(t² − 1) = 0 — refuted by the simple Salem trace root and t ∉ {0, ±1}.

                          Norm products over classified root multisets. #

                          theorem LehmerE10.classified_prod (S : Multiset ) (hS : zS, z = 1 z = mu z = nu) :
                          (Multiset.map (fun (z : ) => z) S).prod = mu ^ Multiset.count (↑mu) S * nu ^ Multiset.count (↑nu) S

                          Norm of the constant term of a monic integer polynomial = product of root norms.

                          THE FACTOR KILL: no proper monic factor of Lehmer exists. #

                          theorem LehmerE10.lehmer_no_proper_factor {F : Polynomial } (hFm : F.Monic) (hd1 : 1 F.natDegree) (hd9 : F.natDegree 9) (hdvd : F lehmerPolynomial) :

                          STAGE 2, ASSEMBLED (proven): a monic factor of Lehmer of degree 1–9 is impossible. F(0)·G(0) = L(0) = 1 pins both constant terms at norm one; the classified norm product is μ^a·ν^b with the pair counts a, b ∈ {0,1} summing to one across the two factors; the split cases give μ = 1 or ν = 1 (refuted), and the non-split cases leave an all-on-circle factor — killed by no_unit_circle_factor (Kronecker + the uniform-1291 cyclotomic kill).

                          FIRE: irreducibility over ℤ and ℚ, and the unconditional charpoly. #

                          IRREDUCIBILITY OF LEHMER'S POLYNOMIAL (proven, over ℤ).

                          IRREDUCIBILITY OVER ℚ (Gauss: primitivity transfers it from ℤ).

                          The Coxeter element of E₁₀. #

                          theorem LehmerE10.coxeterE10_eq :
                          coxeterE10 = !![0, 0, 1, 0, 0, 0, 0, 0, -1, -1; 1, 0, 1, 0, 0, 0, 0, 0, -1, -1; 0, 1, 1, 0, 0, 0, 0, 0, -1, -1; 0, 0, 1, 0, 0, 0, 0, 0, -1, 0; 0, 0, 0, 1, 0, 0, 0, 0, -1, 0; 0, 0, 0, 0, 1, 0, 0, 0, -1, 0; 0, 0, 0, 0, 0, 1, 0, 0, -1, 0; 0, 0, 0, 0, 0, 0, 1, 0, -1, 0; 0, 0, 0, 0, 0, 0, 0, 1, -1, 0; 0, 0, 1, 0, 0, 0, 0, 0, 0, -1]

                          The Coxeter element s₀ s₁ ⋯ s₉, evaluated to an explicit matrix (kernel computation).

                          Lehmer's polynomial annihilates the Coxeter element (kernel computation).

                          The annihilation, restated through aeval.

                          The characteristic polynomial of the E₁₀ Coxeter element is Lehmer's polynomial, over ℚ.

                          The characteristic polynomial of a Coxeter element of E₁₀ is Lehmer's polynomial, over ℤ (McMullen, Coxeter groups, Salem numbers and the Hilbert metric, 2002 — here as a kernel-checked identity).