Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Norms of small values give small integer polynomials, from presentations whose degree in ω grows with T·a

Proved
FourExp.norm_to_polynomial_alg_column

by carlok · Sep 30, 2026 · Mathlib 0df444a (Lean v4.33.1)

diaz-modulus-leanexponential-polynomialsnumber-theorytranscendence

Let x1,x2,y1,y2,ω,ω1∈Cx_1, x_2, y_1, y_2, \omega, \omega_1 \in \mathbb{C}x1​,x2​,y1​,y2​,ω,ω1​∈C, and let Q∈Z[X][Y]Q \in \mathbb{Z}[X][Y]Q∈Z[X][Y] be monic in YYY with Q(ω,ω1)=0Q(\omega, \omega_1) = 0Q(ω,ω1​)=0 and minimal there: no non-zero A∈Z[X][Y]A \in \mathbb{Z}[X][Y]A∈Z[X][Y] of smaller YYY-degree vanishes at (ω,ω1)(\omega, \omega_1)(ω,ω1​). Suppose that the derivatives of the auxiliary function FqF_qFq​ have the reduced presentations in the conclusion of FourExp.exists_iteratedDeriv_reduced_presentation_column, and let κ,κ′>0\kappa, \kappa' > 0κ,κ′>0. Then there is k>0k > 0k>0 such that for every CCC and every large NNN the following holds, with

S=⌊N2/log⁡N⌋,t1=⌊N/log⁡N⌋,t2=⌊Nlog⁡N⌋.S = \lfloor N^{2}/\sqrt{\log N}\rfloor,\quad t_1 = \lfloor N/\sqrt{\log N}\rfloor,\quad t_2 = \lfloor N\sqrt{\log N}\rfloor.S=⌊N2/logN​⌋,t1​=⌊N/logN​⌋,t2​=⌊NlogN​⌋.

Let M≤κSM \le \kappa SM≤κS and let the integers qijkμνq_{ijk\mu\nu}qijkμν​ (i<Si < Si<S, j,k<2Nj, k < 2Nj,k<2N, μ<M\mu < Mμ<M, ν<deg⁡YQ\nu < \deg_Y Qν<degY​Q) satisfy ∣qijkμν∣≤eκN2log⁡N|q_{ijk\mu\nu}| \le e^{\kappa N^{2}\sqrt{\log N}}∣qijkμν​∣≤eκN2logN​. If a<14t1a < 14t_1a<14t1​, b<14t2b < 14t_2b<14t2​, s<S/2s < S/2s<S/2 and

0<∣Fq(s)(ay1+by2)∣≤e−N4log⁡N/κ′,0 < |F_q^{(s)}(ay_1 + by_2)| \le e^{-N^{4}\sqrt{\log N}/\kappa'},0<∣Fq(s)​(ay1​+by2​)∣≤e−N4logN​/κ′,

then there is a non-zero P∈Z[X]P \in \mathbb{Z}[X]P∈Z[X] with coefficients at most ekN2log⁡Ne^{kN^{2}\sqrt{\log N}}ekN2logN​, degree at most kN2/log⁡NkN^{2}/\sqrt{\log N}kN2/logN​ and ∣P(ω)∣<e−Ck2N4|P(\omega)| < e^{-Ck^{2}N^{4}}∣P(ω)∣<e−Ck2N4.

This is Lemme 7 of Waldschmidt (1973). FourExp.norm_to_polynomial_alg assumes all four exiyje^{x_iy_j}exi​yj​ algebraic and derives the presentation from them; here the presentation is the hypothesis, and the conclusion is the same. PPP is the norm of the reduced value down to Q(ω)\mathbb{Q}(\omega)Q(ω), from FourExp.exists_int_norm. Since a<14t1a < 14t_1a<14t1​ gives 2Na≤28N2/log⁡N2Na \le 28N^{2}/\sqrt{\log N}2Na≤28N2/logN​, the XXX-degree M+c(1+s+S+2Na)M + c(1+s+S+2Na)M+c(1+s+S+2Na) stays O(N2/log⁡N)O(N^{2}/\sqrt{\log N})O(N2/logN​), and only the constant kkk grows.

Preamble
import Mathlib
Formal statement
namespace FourExp

/-- A small non-zero derivative gives an integer polynomial that is small at `ω`, from a reduced
presentation of the derivatives whose `X`-degrees grow with `T a`.

Write `φ(P) = P(ω, ω₁)` for `P ∈ ℤ[X][Y]`, with `Q ∈ ℤ[X][Y]` monic in `Y`, `φ(Q) = 0`, and no
non-zero `A` of smaller `Y`-degree with `φ(A) = 0`. The hypothesis `hpres` is the conclusion of
`FourExp.exists_iteratedDeriv_reduced_presentation_column`. Let the integers `q_{ijkμν}` satisfy
`|q| ≤ e^(κ N² √(log N))` with `μ < M ≤ κ S`. If `F_q⁽ˢ⁾(a y₁ + b y₂)` is non-zero and at most
`e^(-N⁴ √(log N) / κ')` on the 14-fold grid (`a < 14 t₁`, `b < 14 t₂`, `s < S/2`), then its norm
down to `ℚ(ω)` is an integer polynomial `P ≠ 0` of height at most `e^(k N² √(log N))` and degree at
most `k N² / √(log N)` with `|P(ω)| < e^(-C (k N² √(log N)) (k N² / √(log N)))`.

The conclusion is that of `FourExp.norm_to_polynomial_alg`. Since `a < 14 t₁` gives
`T a ≤ 28 N² / √(log N)`, the `X`-degree `M + c (1 + s + S + T a)` is still `O(N² / √(log N))`;
only the constant `k` grows. -/
theorem norm_to_polynomial_alg_column
    (x₁ x₂ y₁ y₂ : ℂ) (ω ω₁ : ℂ) (Q : Polynomial (Polynomial ℤ)) (hQm : Q.Monic)
    (hQroot : Polynomial.eval₂ (Polynomial.eval₂RingHom (Int.castRingHom ℂ) ω) ω₁ Q = 0)
    (hQmin : ∀ A : Polynomial (Polynomial ℤ), A.natDegree < Q.natDegree → Polynomial.eval₂ (Polynomial.eval₂RingHom (Int.castRingHom ℂ) ω) ω₁ A = 0 → A = 0)
    (hpres : ∃ c : ℕ, ∀ S T M a b m : ℕ, ∃ Λ : ℂ, Λ ≠ 0 ∧
      ‖Λ‖ ≤ (c : ℝ) ^ (c * (1 + m + S + T * (a + b))) ∧
      ∃ R : Fin S → Fin T → Fin T → Fin M → Fin Q.natDegree → Polynomial (Polynomial ℤ),
        (∀ i j k μ ν, (R i j k μ ν).natDegree < Q.natDegree) ∧
        (∀ i j k μ ν, ∑ r ∈ (R i j k μ ν).support, ∑ h ∈ ((R i j k μ ν).coeff r).support,
            (((R i j k μ ν).coeff r).coeff h).natAbs ≤
          c ^ (c * (1 + m + S + T * (a + b))) * (1 + m + S + T + a + b) ^ (c * (1 + m + S))) ∧
        (∀ i j k μ ν r, ((R i j k μ ν).coeff r).natDegree ≤ M + c * (1 + m + S + T * a)) ∧
        ∀ q : Fin S → Fin T → Fin T → Fin M → Fin Q.natDegree → ℤ,
          Λ * iteratedDeriv m (fun z : ℂ => ∑ i : Fin S, ∑ j : Fin T, ∑ k : Fin T,
              (∑ μ : Fin M, ∑ ν : Fin Q.natDegree,
                ((q i j k μ ν : ℤ) : ℂ) * ω ^ (μ : ℕ) * ω₁ ^ (ν : ℕ)) * z ^ (i : ℕ) *
                Complex.exp ((((j : ℕ) : ℂ) * x₁ + ((k : ℕ) : ℂ) * x₂) * z))
            ((a : ℂ) * y₁ + (b : ℂ) * y₂) =
          Polynomial.eval₂ (Polynomial.eval₂RingHom (Int.castRingHom ℂ) ω) ω₁
            (∑ i : Fin S, ∑ j : Fin T, ∑ k : Fin T, ∑ μ : Fin M, ∑ ν : Fin Q.natDegree,
              Polynomial.C (Polynomial.C (q i j k μ ν)) * R i j k μ ν))
    (κ κ' : ℝ) (hκ : 0 < κ) (hκ' : 0 < κ') :
    ∃ k : ℝ, 0 < k ∧ ∀ C : ℝ, ∃ N₀ : ℕ, ∀ N : ℕ, N₀ < N →
      ∀ M : ℕ, (M : ℝ) ≤ κ * ⌊(N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ))⌋₊ →
      ∀ q : Fin ⌊(N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ))⌋₊ → Fin (2 * N) → Fin (2 * N) → Fin M → Fin Q.natDegree → ℤ,
      (∀ i j k' μ ν, |((q i j k' μ ν : ℤ) : ℝ)| ≤ Real.exp (κ * ((N : ℝ) ^ 2 * Real.sqrt (Real.log (N : ℝ))))) →
      ∀ a b s : ℕ, a < 14 * ⌊(N : ℝ) / Real.sqrt (Real.log (N : ℝ))⌋₊ → b < 14 * ⌊(N : ℝ) * Real.sqrt (Real.log (N : ℝ))⌋₊ → s < ⌊(N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ))⌋₊ / 2 →
      iteratedDeriv s (fun z : ℂ => ∑ i : Fin ⌊(N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ))⌋₊, ∑ j : Fin (2 * N), ∑ k' : Fin (2 * N),
              (fun i j k' => ∑ μ : Fin M, ∑ ν : Fin Q.natDegree, ((q i j k' μ ν : ℤ) : ℂ) * ω ^ (μ : ℕ) * ω₁ ^ (ν : ℕ)) i j k' * z ^ (i : ℕ) * Complex.exp ((((j : ℕ) : ℂ) * x₁ + ((k' : ℕ) : ℂ) * x₂) * z)) ((a : ℂ) * y₁ + (b : ℂ) * y₂) ≠ 0 →
      ‖iteratedDeriv s (fun z : ℂ => ∑ i : Fin ⌊(N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ))⌋₊, ∑ j : Fin (2 * N), ∑ k' : Fin (2 * N),
              (fun i j k' => ∑ μ : Fin M, ∑ ν : Fin Q.natDegree, ((q i j k' μ ν : ℤ) : ℂ) * ω ^ (μ : ℕ) * ω₁ ^ (ν : ℕ)) i j k' * z ^ (i : ℕ) * Complex.exp ((((j : ℕ) : ℂ) * x₁ + ((k' : ℕ) : ℂ) * x₂) * z)) ((a : ℂ) * y₁ + (b : ℂ) * y₂)‖
          ≤ Real.exp (-(((N : ℝ) ^ 4 * Real.sqrt (Real.log (N : ℝ))) / κ')) →
      ∃ P : Polynomial ℤ, P ≠ 0 ∧
        (∀ i : ℕ, |(P.coeff i : ℝ)| ≤ Real.exp (k * (if (N : ℝ) ≤ 3 then (N : ℝ) - 3 + 9 * Real.sqrt (Real.log 3) else (N : ℝ) ^ 2 * Real.sqrt (Real.log (N : ℝ))))) ∧
        (P.natDegree : ℝ) ≤ k * (if (N : ℝ) ≤ 3 then (N : ℝ) - 3 + 9 / Real.sqrt (Real.log 3) else (N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ))) ∧
        ‖Polynomial.aeval ω P‖ < Real.exp (-(C * (k * (if (N : ℝ) ≤ 3 then (N : ℝ) - 3 + 9 * Real.sqrt (Real.log 3) else (N : ℝ) ^ 2 * Real.sqrt (Real.log (N : ℝ)))) * (k * (if (N : ℝ) ≤ 3 then (N : ℝ) - 3 + 9 / Real.sqrt (Real.log 3) else (N : ℝ) ^ 2 / Real.sqrt (Real.log (N : ℝ)))))) := by
  sorry

end FourExp
Source
M. Waldschmidt, Solution du huitième problème de Schneider, J. Number Theory 5 (1973), 191–202, Lemme 7 (pp. 200–201). Formal proof: Diaz modulus mission, 30 September 2026 (C. Perassi).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me