11 — Families and citations¶
The mathematics¶
A family is a recipe that turns a few numbers or a diagram name into a
finite-dimensional algebra kQ/I. quiverlab ships the standard catalogue of
representation theory: Nakayama (serial) algebras by Kupisch series, hereditary
path algebras of Dynkin/Euclidean quivers, truncations kQ/rad^r, incidence
algebras of posets, quantum complete intersections, exterior algebras,
preprojective algebras, and two constructions that build a new algebra from old
ones (tensor product and trivial extension). A citation registry records, for
every algorithm and every family, the paper it comes from.
How it is represented¶
Each family is a plain Python function returning a Plan-03 Algebra. There are
three construction routes:
- monomial — the relations are single forbidden paths; the algebra is built
by the Plan-01 monomial route (Quiver.algebra, the forbidden-word automaton).
Nakayama, PathAlgebra, TruncatedPathAlgebra, RadicalSquareZero.
- general — at least one relation is a genuine linear combination (e.g.
x*y + q*y*x); the algebra is completed by the Plan-03 Gröbner engine.
QuantumCI, ExteriorAlgebra, PreprojectiveAlgebra, IncidenceAlgebra.
- structure-constant — the multiplication table T is written directly from
the factors, with no quiver. TensorProduct.
TrivialExtension lived in the structure-constant route too, but since Plan 31 it
returns a genuine kQ_T/I_T: the quiver of A plus one arrow dual to each
corner-homogeneous socle-basis element (direction reversed), with relations
extracted from the ⋉ multiplication by a length-lex kernel enumeration and the
build certified per instance by dim = 2·dim A (a loud QuiverlabError
otherwise). A base with no usable path presentation falls back to the old
structure-constant ⋉ build (kept verbatim, and doubling as the iso-invariance
oracle).
A family stamps the algebra with _family_citations, a tuple of registry keys.
The registry itself is a dict key -> Reference(key, bibtex_key, kind, title,
annotation, tags); the annotations are the ground truth the web /literature page
and quiverlab.bibliography() render. references.bib holds the verified BibTeX.
How the computation runs¶
NakayamaAlgebra([3,2,2])reads the Kupisch series, decides linear vs cyclic (min >= 2-> cyclic), lays out the quiver, generates the length-c_iforbidden path from each vertex, and calls the monomial route.dim = sum c_i.QuantumCI(q="i")writes the three relation strings,x*y + i*y*xamong them; the relation parser accepts the exact tokeni(this chapter's one new grammar rule); the Gröbner engine rewritesy*x -> i*x*yand certifies dim 4.TensorProduct(A, B)fillsT[i*db+j][k*db+l]with the outer product of the two multiplication tables;dim = dim A * dim B.A.hochschild_cohomology(n)attaches, to the returnedHHTable, the citation keys of the engine paths it used (.references):baralways, plusbardzellorchouhy_solotarby dispatch.A.citations()unions those with the family keys.bibliography(keys)groups them by kind and prints the annotations.zoo(dim_max)loads a bundled JSON catalogue (lifted from hanlab's open_zoo), rebuilds each confluent reduction system into anAlgebra, and yields those withdim <= dim_max. Since Plan 18 records may carry"vertices"+"arrows"(a list of[name, source, target]whose order is the index space of theruleswords) — multi-vertex reduction systems; records without them keep the legacy one-vertex loop reading. The catalogue also holds the Plan-18 diversity records (two straddling-monomial mixed-tip-length algebras, the line quiverkQ/(abc,cde), the commutative square,kZ₃/rad²), each live-certified by the test battery and guarded by a diversity gate (tests/families/test_zoo.py::test_zoo_diversity_gates) so curation can never silently drop the shapes that hid the 2026-07-22 bugs.
A worked micro-example¶
NakayamaAlgebra([3,2,2]): cyclic Z_3, arrows a1:1->2, a2:2->3, a3:3->1,
forbidden paths a1*a2*a3 (len 3 from 1), a2*a3 (len 2 from 2), a3*a1 (len 2
from 3). Irreducible basis e_1,e_2,e_3,a1,a2,a3,a1*a2 -> dim 7. Cartan
[[1,1,1],[0,1,1],[1,0,1]] (row i = composition factors of P_i), det 1,
sum = 7. Centre = scalars, so HH^0 = 1. A.citations() -> ('nakayama',
'assem_book', 'bar'); bibliography(A.citations()) prints the ASS textbook and
Happel's bar-complex reference with their annotations.
Where to look in the code¶
| concept | file | function/class |
|---|---|---|
| Kupisch series | families/nakayama.py |
NakayamaAlgebra |
| Dynkin diagram -> quiver | families/dynkin.py |
dynkin_quiver |
| hereditary path algebra | families/path_algebra.py |
PathAlgebra |
kQ/rad^r |
families/truncated.py |
TruncatedPathAlgebra |
| poset -> incidence algebra | families/poset.py, families/incidence.py |
Poset, IncidenceAlgebra |
| quantum CI / exterior / preprojective | families/{quantum,exterior,preprojective}.py |
QuantumCI, ExteriorAlgebra, PreprojectiveAlgebra |
| tensor / trivial extension | families/{tensor,trivial_extension}.py |
TensorProduct, TrivialExtension |
| discoverability | families/discover.py |
families, CATALOG |
| curated zoo | families/zoo.py, families/zoo_catalog.json |
zoo, build_from_record |
| citation registry | citations/registry.py, citations/references.bib |
REGISTRY, reference, bibtex |
| bibliography | citations/bibliography.py |
bibliography, Bibliography |
| result references | hochschild/table.py, core/algebra.py |
HHTable.references, Algebra.citations |
| batch persistence | batch/db.py, batch/scan.py |
ResultsDB, analyze, run_scan |
This chapter is the Plan 06 checkout. sweep (Plan 05) consumes this catalogue
(families() is the hook); the trace subsystem (Plan 07) will render the citation
keys these functions stamp.