From 7c5da3c4507b8496fc4ae3805a0f982302331a09 Mon Sep 17 00:00:00 2001 From: David Roe Date: Sun, 9 Aug 2026 16:28:26 -0400 Subject: [PATCH] =?UTF-8?q?Family:=20s-unit=20=E2=80=94=20S-unit=20equatio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One family: **S-unit equation** (`s-unit`) — P2, algorithmic. - Standard form: `a*u + b*v = c, u, v S-units` - Parent: `exponential-diophantine` Contents: the registry entry, its `docs/FAMILIES.md` section and its rows in the classification corpus. References cited (the claim each one supports): - `deWeger1987` — the practical LLL-based algorithm - `Alvarado2021` — the Sage implementation for arbitrary number fields 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/s-unit.yaml | 21 +++++++++++++++++++ docs/FAMILIES.md | 10 +++++++++ tests/test_classify.py | 1 + 3 files changed, 32 insertions(+) create mode 100644 diophantine_classifier/data/families/s-unit.yaml diff --git a/diophantine_classifier/data/families/s-unit.yaml b/diophantine_classifier/data/families/s-unit.yaml new file mode 100644 index 0000000..dc5edc2 --- /dev/null +++ b/diophantine_classifier/data/families/s-unit.yaml @@ -0,0 +1,21 @@ +# Family: S-unit equation +# 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: s-unit +name: S-unit equation +priority: 2 +status: algorithmic +class: expdioph +form: a*u + b*v = c, u, v S-units +parents: +- exponential-diophantine +matcher: true +methods: +- Baker + LLL (de Weger) +software: + sage: K.solve_S_unit_equation(S) (number fields) +references: +- key: deWeger1987 + why: the practical LLL-based algorithm +- key: Alvarado2021 + why: the Sage implementation for arbitrary number fields diff --git a/docs/FAMILIES.md b/docs/FAMILIES.md index 86434cf..2c47b50 100644 --- a/docs/FAMILIES.md +++ b/docs/FAMILIES.md @@ -257,6 +257,16 @@ perfect power). **References.** Schinzel–Tijdeman 1976; Erdős–Selfridge 1975; Shorey–Tijdeman, *Exponential Diophantine Equations* (1986) — the standard reference for this whole section. +### `s-unit` — S-unit equations — P2, algorithmic +**Form.** ax + by = c with x, y S-units (over ℤ: ± products of fixed primes; +generally in a number field K with finite S). +**Status.** Finite (Siegel–Mahler), effective (Baker); practical algorithm +de Weger 1987 (LLL); implemented in Sage for arbitrary K, S. The workhorse +that many other families reduce to (Thue–Mahler, curves via étale covers). +**Software.** Sage: `K.solve_S_unit_equation(S)`; Magma: S-unit machinery. +**References.** Mahler 1933; de Weger 1987; Evertse–Győry, *Unit Equations* (2015); +Alvarado et al. 2019 (Sage implementation). + ### `exponential-diophantine` — Purely exponential equations — P2, effective (few terms) **Form.** c₁·b₁^{n₁} + ⋯ + c_k·b_k^{n_k} = c (fixed bases, unknown exponents); e.g. 2ᵃ + 3ᵇ = 5ᶜ, Goormaghtigh-type, Jeśmanowicz conjecture instances. diff --git a/tests/test_classify.py b/tests/test_classify.py index e3d6386..25dbf85 100644 --- a/tests/test_classify.py +++ b/tests/test_classify.py @@ -40,6 +40,7 @@ ("x^4 + y^4 + z^4 = w^4", "", "equal-sums-like-powers"), # Elkies # polynomial-exponential ("x^3 - 4 = y^n", "", "power-values"), + ("2^a + 3^b = 5^c", "", "s-unit"), # unit fractions ("1/x + 1/y + 1/z = 1", "", "egyptian-fractions"), ]