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.