files / problems / hilbert16-limit-cycles / compute / q1 / e-bezout-bautin / LINE.md

4.7 KB · on GitHub

Line E — Bézout ceiling and Bautin L1

Status: (1) kept, (2) L1 kept and L2 kept as V2, full Bautin ideal dropped. H(n) moved? no.

Replay:

problems/hilbert16-limit-cycles/compute/q1/e-bezout-bautin/run.sh

Python derives the identities; Rust expands L1, the constructed preimage counts, and two pullback degrees again. The two dumps are diffed. Lean 4.32.0 checks T2, the 2×2 adjugate identity, and that (±1, ±1) lie on both u²+v²=2 and u²−v²=0, without mathlib.

Opened this session: arXiv:2604.12883v1 and its HTML (Remark 4); Llibre–Valls, EJDE 2025 no. 36 and the PDF (Theorem 2.2); Yu–Zhang visualization preprint for the unperturbed Shi coefficients.

Kept — Bézout ceiling (answers Remark 4 at one step)

A real polynomial map Φ = (p, q) with deg p, deg q at most m has at most m² regular real preimages of any point.

Two plane curves of degree at most m that share no component meet in at most m² isolated points in the affine plane (Bézout, over C, hence over R). A regular preimage of a point (a, b) is an isolated solution of p = a, q = b with det DΦ ≠ 0. If p − a and q − b share a factor f of positive degree, then along {f = 0} the gradients are parallel, so det DΦ vanishes on that component. Regular preimages therefore cannot lie on a common component, and there are at most m² of them.

The checker bezout_preimages.py draws random degree-m maps, counts regular real preimages of random integer values by resultant plus Newton, and refuses any count above m². Separable Chebyshev Φ(u, v) = (T_m(u), T_m(v)) attains m² regular real preimages of a generic point of (−1, 1)² (samples m = 2, 3, 4). The non-separable examples (complex squaring; (u^m + v, v^m + u)) stay at or below the same ceiling.

The polynomial pullback of Remark 4 is Y = adj(DΦ) (X ∘ Φ), so DΦ · Y = (det DΦ) (X ∘ Φ). The 2×2 cofactors have degree at most m − 1 and X ∘ Φ has degree at most n m, hence

deg Y ≤ n m + (m − 1).

pullback_degree.py checks the identity and the degree bound on random maps and on two exact families (Chebyshev; u^m + v). Rust re-expands the n = 2, m = 3 cases and gets degree 8.

Chebyshev already uses m² regular sheets at this degree budget. A non-separable degree-m map cannot produce more than m² regular sheets, so the factor m² is optimal among all polynomial maps of degree m, not only the separable ones.

Remark 4 also asked whether iterated non-separable coverings could change the growth rate. That question is not answered here. One step cannot beat m².

Kept — Bautin L1, and L2 as V2

In the normal form

dx/dt = −y + a20 x² + a11 x y + a02 y²
dy/dt =  x + b20 x² + b11 x y + b02 y²

the first Lyapunov quantity is the primitive integer polynomial

L1 = (a20 + a02) a11 − (b20 + b02) b11 − 2 a20 b20 + 2 a02 b02.

Two independent derivations in l1_focal.py give the same polynomial, not a guessed coefficient. Polar averaging of dr/dθ produces the cubic displacement a3(2π) = (π/4) L1. The Poincaré–Lyapunov function F = r²/2 + F3 + F4 + ⋯ with dF/dt = V1 r⁴ + V2 r⁶ + ⋯ produces V1 = L1/8. The same L1 equals w1 = A α − B β in Llibre–Valls Theorem 2.2 (their display drops the y on a11 x y, but the combinations A = a20+a02, α = a11+2 b02, B = b20+b02, β = b11+2 a20 expand to L1).

L1 vanishes on Hamiltonian quadratics (divergence free), on the y-axis reversible family (a11 = b20 = b02 = 0), on the holomorphic family ẋ + iẏ = i z + α z², and on the unperturbed Shi field of Yu–Zhang (a20, a11, a02, b20, b11, b02) = (−10, 5, 1, 1, −25, 0). It equals −2 on the first-order focus ẋ = −y + x², ẏ = x + x². Rust evaluates the same polynomial on the same tuples.

V2 is computed from the same Poincaré function (gauge: the x⁴ coefficient of F4 and the x⁶ coefficient of F6 vanish). It is zero on every listed center family and on unperturbed Shi. This is L2 as a concrete polynomial V2, not a claim that the Bautin ideal is generated by L1, L2, L3, and not a proof that L1 = L2 = L3 = 0 implies a center.

Dropped

The full Bautin calculation L1 = L2 = L3 = 0 ⇒ center. That is a famous finite computation; this line stops after L1 (and V2).

What this is not

Not a bound on H(n). Not a new seed. Not a proof that H(n) is finite. The Chebyshev arithmetic of 2604.12883 is not replayed here (that is line C). The lemmas are reusable: a stranger can run run.sh and read L1 and the sheet ceiling off the JSON.