Metadata-Version: 2.5
Name: zero-sum-sequences
Version: 0.3.1
Summary: Computations with additive and zero-sum sequences
Project-URL: Documentation, https://zero-sum-sequences.readthedocs.io/
Project-URL: Changelog, https://zero-sum-sequences.readthedocs.io/en/latest/changelog.html
Project-URL: Repository, https://github.com/behackl/zero-sum-sequences
Author: Benjamin Hackl
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: networkx>=3.2
Provides-Extra: sage
Requires-Dist: sagelite[gap]==10.9.post1; extra == 'sage'
Provides-Extra: tutorial
Requires-Dist: marimo>=0.25.2; extra == 'tutorial'
Requires-Dist: matplotlib>=3.8; extra == 'tutorial'
Description-Content-Type: text/markdown

# Zero-sum sequences

`zero-sum-sequences` computes with sequences over finite additive groups:
minimal zero-sum sequences (atoms), factorizations and their length sets,
automorphism orbits, and zero-sum constants. It runs in ordinary Python; SageMath is optional.

## Installation

Requires Python 3.12 or newer:

```console
python -m pip install zero-sum-sequences
```

## A small example

Over `C₂ ⊕ C₄`, take an atom `A` of length five and its negative `B = -A`.
Sequences are written multiplicatively. The product `A * B` has
factorization lengths `2`, `4`, and `5`, but not `3`:

```python
from zero_sum_sequences import AdditiveSequenceSpace, FiniteAdditiveGroup

G = FiniteAdditiveGroup.cyclic_product(2, 4)
S = AdditiveSequenceSpace(G)
A = S((0, 1)) ** 3 * S((1, 0), (1, 1))
B = -A

A.is_atom(), B.is_atom()        # (True, True)
sorted((A * B).length_set())    # [2, 4, 5]
```

**[Documentation][docs]** — installation options, tutorial, definitions, and
API reference.

[MIT License](https://github.com/behackl/zero-sum-sequences/blob/main/LICENSE).

[docs]: https://zero-sum-sequences.readthedocs.io/
