Repository navigation
v0.2.0
zero-sum-sequences v0.2.0
New public API: AutomorphismGroup, Automorphism, CanonicalForm, AtomOrbit, AnchoredCanonicalizer, FactorizationCache.
New features
-
Materialized automorphism groups. For a finite parent, the whole automorphism group can now be built explicitly (
space.automorphism_group()), giving orbits, stabilizers, canonical orbit representatives (smallest element + witness automorphism), transporters, and orbit classification of atom catalogues in one pass.AdditiveSequencegained a total order (length, then terms) so canonical forms are well-defined regardless of how the group was found. Cross-checked against brute force for C_42, C_2×C_4, C_2×C_6, C_4×C_4, C_3×C_9, C_2^3, C_2^4, C_3^3. -
Indexed, serializable atom catalogues.
AtomCatalogueatoms now have stable indices (catalogue.index(atom),catalogue[i],in), can be filtered/restricted (filter,restrict(max_length=..., support=...)), classified into automorphism orbits (AtomOrbit), and round-tripped throughto_jsonl/from_jsonlwith digest-based re-verification on load. Parents gainedencode_term/decode_term; spaces gaineddecode(), sequences gainedencode(). -
FactorizationCache— a memoized, optionally group-aware front end for length-set queries (length_set,minimum,maximum,has_length,witness,witnesses,factorizations) over a catalogue, with an unbounded length-set cache and LRU-bounded solvers. Supportspreload/to_jsonl/from_jsonlscoped to the catalogue digest and group order. Ships alongsideAnchoredCanonicalizer, which transports the largest atom divisor to its orbit representative and reduces under its stabilizer — useful for normalizing sequences before comparison.
Breaking change
FactorizationOracleis renamed toFactorizationCache(space.oracle()→space.factorization_cache()). The old name reflected the paper's internal terminology rather than what the object does.