From 6a8c63704651c53020182de7f126c877441606b2 Mon Sep 17 00:00:00 2001 From: David Roe Date: Sun, 9 Aug 2026 16:24:44 -0400 Subject: [PATCH] =?UTF-8?q?Family:=20genus-zero-curve=20=E2=80=94=20Genus?= =?UTF-8?q?=200=20curve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One family: **Genus 0 curve** (`genus-zero-curve`) — P1, algorithmic. - Standard form: `C(x, y) = 0 irreducible of genus 0` - Parent: `general-curve` Contents: the registry entry, its `docs/FAMILIES.md` section and its rows in the classification corpus. References cited (the claim each one supports): - `PoulakisVoskos2000` — practical algorithms for genus-zero equations Independent of every other family PR: it needs only the registry backbone it is based on. Part of the series that splits #1 into reviewable pieces: 1. `01-bibliography` — packaging, docs, annotated bibliography 2. `02-parsing` — equation strings to a term model 3. `03-registry` — the YAML family registry (3 seed families) 4. `04-matchers` — shape recognizers 5. `05-classify` — the classification pipeline 6. `06-solvers` — solver framework, two seed solvers, and the CLI 7. `07..09-backbone` — the 23 parent families of the DAG, by depth 8. one PR per remaining family (38 of them, mutually independent) 9. `99-polish` — restore the full doctests and tighten the invariants --- .../data/families/genus-zero-curve.yaml | 22 +++++++++++++++++++ docs/FAMILIES.md | 9 ++++++++ tests/test_classify.py | 1 + 3 files changed, 32 insertions(+) create mode 100644 diophantine_classifier/data/families/genus-zero-curve.yaml diff --git a/diophantine_classifier/data/families/genus-zero-curve.yaml b/diophantine_classifier/data/families/genus-zero-curve.yaml new file mode 100644 index 0000000..7fd9157 --- /dev/null +++ b/diophantine_classifier/data/families/genus-zero-curve.yaml @@ -0,0 +1,22 @@ +# Family: Genus 0 curve +# Schema: see data/families/README.md; prose documentation in docs/FAMILIES.md. +# References are keys into data/references.bib, each with a 'why' annotation. +slug: genus-zero-curve +name: Genus 0 curve +priority: 1 +status: algorithmic +class: curve +form: C(x, y) = 0 irreducible of genus 0 +parents: +- general-curve +matcher: true +methods: +- conic reduction +- parametrization +- Pell-type analysis of integral points +software: + sage: Conic; Curve.parametrization + magma: Parametrization +references: +- key: PoulakisVoskos2000 + why: practical algorithms for genus-zero equations diff --git a/docs/FAMILIES.md b/docs/FAMILIES.md index 86434cf..70eba33 100644 --- a/docs/FAMILIES.md +++ b/docs/FAMILIES.md @@ -210,6 +210,15 @@ PARI `hyperellratpoints`, Magma `Chabauty`, `PointSearch`. **References.** Siegel 1929; Faltings 1983; Bombieri–Gubler, *Heights in Diophantine Geometry*; Stoll, "Rational points on curves" (survey, 2011). +### `genus-zero-curve` — Genus 0 curves — P1, algorithmic +**Form.** C(x, y) = 0 irreducible of genus 0. +**Status.** Rational points: none or a ℙ¹-parametrization (conic step: +Hasse principle + Cremona–Rusin/Simon); integral points on the affine model: +reduce along the parametrization to Pell-like/divisor conditions (finite iff ≥ 3 +points at infinity, Siegel; effective — Alvanos–Poulakis give complete algorithms). +**Software.** Sage: `Conic`, `parametrization`; Magma: `Conic`, `Parametrization`. +**References.** Hilbert–Hurwitz 1890; Poulakis 2002; Alvanos–Poulakis 2011. + ### `genus-one-curve` — Genus 1 curves (non-Weierstrass models) — P1, algorithmic* **Form.** C(x, y) = 0 irreducible of genus 1 (any plane model). **Status.** With a rational point: birational to an elliptic curve (Nagell/Riemann–Roch diff --git a/tests/test_classify.py b/tests/test_classify.py index e3d6386..565ca1a 100644 --- a/tests/test_classify.py +++ b/tests/test_classify.py @@ -31,6 +31,7 @@ ("y^3 = x^4 + 2", "", "superelliptic"), ("x^3*y + y^3*z + z^3*x = 0", "", "general-curve"), # Klein quartic ("x^2*y^2 = x^3 + 1", "", "genus-one-curve"), + ("y^2 = x^3", "", "genus-zero-curve"), # cuspidal # Fermat-type ("x^2 + y^4 = z^3", "", "generalized-fermat"), ("2*x^3 + 3*y^3 = 5*z^3", "", "generalized-fermat"),