From 6a783c805f1f87774be3b9489862729494bb4c19 Mon Sep 17 00:00:00 2001 From: David Roe Date: Sun, 9 Aug 2026 16:24:30 -0400 Subject: [PATCH] =?UTF-8?q?Family:=20genus-two=20=E2=80=94=20Genus=202=20c?= =?UTF-8?q?urve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One family: **Genus 2 curve** (`genus-two`) — P1, effective. - Standard form: `y^2 = f(x), deg f in {5, 6}` - Parent: `hyperelliptic` - Examples: `y^2 = x^5 - x + 1` Contents: the registry entry, its `docs/FAMILIES.md` section and its rows in the classification corpus. References cited (the claim each one supports): - `Igusa1960` — the invariants identifying a genus-2 curve up to isomorphism (the classifier's genus-2 handle) - `CasselsFlynn1996` — explicit arithmetic of genus-2 Jacobians 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-two.yaml | 27 +++++++++++++++++++ docs/FAMILIES.md | 9 +++++++ tests/test_classify.py | 1 + 3 files changed, 37 insertions(+) create mode 100644 diophantine_classifier/data/families/genus-two.yaml diff --git a/diophantine_classifier/data/families/genus-two.yaml b/diophantine_classifier/data/families/genus-two.yaml new file mode 100644 index 0000000..54ef333 --- /dev/null +++ b/diophantine_classifier/data/families/genus-two.yaml @@ -0,0 +1,27 @@ +# Family: Genus 2 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-two +name: Genus 2 curve +priority: 1 +status: effective +class: curve +form: y^2 = f(x), deg f in {5, 6} +parents: +- hyperelliptic +matcher: true +lmfdb: g2c.q +methods: +- Igusa invariants for identification +- Chabauty machinery +software: + magma: full pipeline (Jacobian, RankBound, Chabauty) + sage: HyperellipticCurve; igusa_clebsch_invariants +examples: +- y^2 = x^5 - x + 1 +references: +- key: Igusa1960 + why: the invariants identifying a genus-2 curve up to isomorphism (the classifier's + genus-2 handle) +- key: CasselsFlynn1996 + why: explicit arithmetic of genus-2 Jacobians diff --git a/docs/FAMILIES.md b/docs/FAMILIES.md index 86434cf..c3bc567 100644 --- a/docs/FAMILIES.md +++ b/docs/FAMILIES.md @@ -189,6 +189,15 @@ PARI: `hyperellratpoints`. **References.** Baker 1969; Faltings 1983; Chabauty 1941, Coleman 1985; McCallum–Poonen survey 2012; Balakrishnan–Dogra–Müller–Tuitman–Vonk 2019. +### `genus-two` — Genus 2 curves — P1, as above with rich tooling +**Form.** y² = f(x), deg f ∈ {5, 6}. +**Status.** The best-supported genus ≥ 2 case: Igusa invariants identify the curve +up to ℚ̄-isomorphism (the classifier's identification handle in genus 2, per the +Library design), BSD-style databases exist (LMFDB), Chabauty machinery mature. +**Software.** Magma: full pipeline (`Jacobian`, `RankBound`, `Chabauty`); +Sage: `HyperellipticCurve`, `igusa_clebsch_invariants`; LMFDB genus 2 database. +**References.** Igusa 1960; Cassels–Flynn; Stoll's surveys. + ### `superelliptic` — Superelliptic curves — P1, effective (integral) **Form.** yᵐ = f(x), m ≥ 2, deg f ≥ 2 (genus ≥ 1 cases). **Status.** Integral points finite and effective (Baker); reduction to Thue diff --git a/tests/test_classify.py b/tests/test_classify.py index e3d6386..1e62d03 100644 --- a/tests/test_classify.py +++ b/tests/test_classify.py @@ -27,6 +27,7 @@ # higher-genus curves and binary forms ("x^3 + 2*y^3 = 11", "", "thue"), ("x^4 - 2*y^4 = 1", "", "thue"), + ("y^2 = x^5 - x + 1", "", "genus-two"), ("y^2 = x^7 + 3", "", "hyperelliptic"), ("y^3 = x^4 + 2", "", "superelliptic"), ("x^3*y + y^3*z + z^3*x = 0", "", "general-curve"), # Klein quartic