The distinct-distances problem asks how few distinct distances a finite planar point set can determine. Guth and Katz proved the near-optimal bound in 2015. Their argument passes through incidence geometry: distances become incidences between points and curves, and the Elekes–Sharir framework converts the problem into an incidence bound for lines in three-space. Pach and de Zeeuw showed the same pipeline works for points on a fixed algebraic curve, replacing line incidences with curve incidences. The algebraic prerequisite for that replacement — that two bounded-degree real plane curves with no shared component meet in finitely many points, with an explicit degree-dependent bound — is what this mission formalizes.
A real plane curve here is the real zero set of a nonzero bivariate polynomial , written . Its total degree is the maximum over monomials with nonzero coefficient. A curve is irreducible when its polynomial is irreducible.
The paper says two curves have a common component when their polynomials
share a nonconstant factor. The Lean development uses a different, weaker
hypothesis, NoCommonCurveComponent: no infinite irreducible real curve lies
inside both sets. A shared factor whose real zero set is finite (for example
) violates the paper's hypothesis but satisfies the Lean one, so the
Lean theorem covers strictly more pairs of curves than the paper's statement.
Currying views as a univariate polynomial in one coordinate whose
coefficients are polynomials in the other. In the Lean code the polynomial
variable is coordinate and the coefficient (base) variable is coordinate ;
this description writes the base coordinate as and the fiber coordinate as
, so a line is called vertical. The resultant of two
curried polynomials is a polynomial in alone. The development uses one
direction of its defining property: if the two specializations at share a
real root, the resultant vanishes at . All Lean statements use
MvPolynomial (Fin 2) ℝ for plane polynomials and EuclideanSpace ℝ (Fin 2)
for points.
The mission's goal is a finite-intersection bound in the spirit of Theorem 2.1 of Pach–de Zeeuw (Bézout's inequality), but it is not that theorem. It differs in both directions:
The six milestones are the algebraic inputs: coefficient-root counting, the two
resultant-nonvanishing criteria, the fiber bound, and the two mixed
vertical/nonvertical pair bounds that carry the constant . The
nonvertical–nonvertical pair bound (primitive_nonvertical_pair_intersection_bound)
carries the cruder constant . Above the
milestones sit the irreducible-pair assembly with constant and
the factorized assembly with constant , from which the goal
follows.
The result is the algebraic input to the Pach–de Zeeuw distinct-distances theorem for points on curves: without a uniform finite-intersection bound, the incidence count that drives the distance bound cannot even be stated. The formalization pins down every constant and every non-degeneracy hypothesis (non-verticality, no shared infinite component, coprimality) that the argument consumes.
The proof composes four toolkits — univariate root counting, Sylvester-matrix
resultant degree bounds, normalized-factor decompositions, and a smooth
implicit-function nonsingularity argument — whose interfaces must agree
exactly. The resulting lemmas (resultant criteria, fiber bounds,
partial-derivative degree bounds) are reusable for other real-algebraic
incidence formalizations over MvPolynomial.
The central difficulty is elimination with explicit constants: the resultant converts a two-variable intersection problem into a one-variable root count, but every step (currying, specialization, factor-pair summation) must preserve a usable degree bound, and the degenerate configurations (vertical fibers, shared factors with finite real zero set, singular points) each need a separate finite bound.
The textbook route — Bézout's inequality over , then observing that real intersection points are complex ones — is not taken, for two reasons. Mathlib has no plane-curve Bézout theorem to invoke. And under the weaker Lean hypothesis the two polynomials may share an irreducible factor with finite real zero set, in which case the complex intersection is infinite and no complex count applies; that branch is closed by bounding the singular points of the shared factor instead.
Points are EuclideanSpace ℝ (Fin 2); curves are MvPolynomial (Fin 2) ℝ
zero sets; finiteness is Set.Finite with Set.ncard bounds. The development
commits to total degree (not weighted degrees) and to the currying order that
eliminates Lean coordinate ; variable-style implicit degree bounds
are explicit {d₁ d₂ : ℕ} binders on the platform. No statement is
vacuous: every intersection bound carries the non-degeneracy hypothesis
(non-associated irreducibles, non-divisibility, nonzero partials) that excludes
the infinite-intersection cases. Contributions welcome: the sharp
general bound (currently an existential constant), the paper's hypothesis form
(no common factor at all), and the incidence assembly that consumes this
mission's output.
PachDeZeeuw.AlgebraicPrelim and PachDeZeeuw.Bezout (mathlib-only,
axiom-clean).theorem PachDeZeeuw.Algebraic.bezout : BezoutFiniteIntersectionStatement := by sorry
There are no hypotheses: the theorem asserts the proposition BezoutFiniteIntersectionStatement, namely: for all degree bounds there exists a constant with such that for all sets satisfying , and ,
Here means that is the real zero set of some nonzero bivariate real polynomial of total degree at most , and means that there is no infinite irreducible real curve (the real zero set of an irreducible polynomial) contained in both and .
This is a weaker variant of Theorem 2.1 of Pach--de Zeeuw, in two respects. (a) The conclusion only asserts that some degree-dependent constant exists; the proof supplies the witness and does not give the sharp count . (b) The hypothesis is weaker than the paper's "no common factor": it only excludes a shared irreducible factor whose real zero set is infinite. A shared irreducible factor with a finite real zero set (for example , whose real zero set is the origin) is allowed by the Lean hypothesis but not by the paper's hypothesis. The explicit bounds are proved in factorized_bezout_bound and irreducible_pair_intersection_bound; this theorem only packages them into the existential form.
No open leaves. Every sub-goal is proved or awaiting decomposition.