Representation theory for automata, made practical.
Project description
morphata
morphata does representation theory for automata, and makes it practical.
An automaton -- its states, transitions, and acceptance condition -- is a
structural object. Operators turn that structure into a quantitative
interpretation: a matrix-valued morphism over a semiring, a multilinear
polynomial over a bounded distributive lattice, or a BDD-canonicalised
symbolic representation. morphata packages both halves -- the structures
and the morphisms that interpret them -- in one library.
It builds on algebraic for
backend-agnostic semiring algebra (NumPy, JAX, PyTorch).
Quick Start
Installation
pip install morphata
Basic Usage
import algebraic
import jax.numpy as jnp
from morphata.builder import AutomatonBuilder
from morphata.alphabet import weighted_alphabet
from morphata.operators.matrix import MatrixOperator
import logic_asts as logic
builder: AutomatonBuilder[int, str] = AutomatonBuilder()
builder.add_state(0, initial=True)
builder.add_state(1, accepting=True)
builder.add_transition(0, guard=logic.Variable("a"), succ=1)
aut = builder.build()
def xi(x, guard):
return float(x[0])
alphabet = weighted_alphabet(xi=xi)
maxplus = algebraic.semirings.tropical_semiring(minplus=False)
op = MatrixOperator.from_nfa(aut, semiring=maxplus, alphabet=alphabet)
x = jnp.array([2.0])
transitions = op.cost_transitions(x)
For more, see the documentation.
Citation
If you use the matrix operator or this package, please cite one of:
- For differentiable weighted automata in general:
@inproceedings{balakrishnan2024differentiable,
title = {Differentiable {{Weighted Automata}}},
booktitle = {{{ICML}} 2024 {{Workshop}} on {{Differentiable Almost Everything}}: {{Differentiable Relaxations}}, {{Algorithms}}, {{Operators}}, and {{Simulators}}},
author = {Balakrishnan, Anand and Deshmukh, Jyotirmoy V.},
year = 2024,
month = jun,
url = {https://openreview.net/forum?id=k2hIQYqHTh},
copyright = {All rights reserved},
langid = {english}
}
- For weighted automata in motion planning:
@inproceedings{balakrishnan2024motion,
title = {Motion {{Planning}} for {{Automata-based Objectives}} Using {{Efficient Gradient-based Methods}}},
booktitle = {2024 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})},
author = {Balakrishnan, Anand and Atasever, Merve and Deshmukh, Jyotirmoy V.},
year = 2024,
month = oct,
pages = {13734--13740},
issn = {2153-0866},
doi = {10.1109/IROS58592.2024.10802177}
}
- For alternating weighted automata in multi-agent systems:
@inproceedings{balakrishnan2025monitoring,
title = {Monitoring {{Spatially Distributed Cyber-Physical Systems}} with {{Alternating Finite Automata}}},
booktitle = {Proceedings of the 28th {{ACM International Conference}} on {{Hybrid Systems}}: {{Computation}} and {{Control}}},
author = {Balakrishnan, Anand and Paul, Sheryl and Silvetti, Simone and Nenzi, Laura and Deshmukh, Jyotirmoy V.},
year = 2025,
month = may,
pages = {1--11},
publisher = {ACM},
address = {Irvine CA USA},
doi = {10.1145/3716863.3718033},
isbn = {979-8-4007-1504-4},
langid = {english}
}
License
See LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file morphata-2.0.4.tar.gz.
File metadata
- Download URL: morphata-2.0.4.tar.gz
- Upload date:
- Size: 337.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"42","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99abcf871ed1dd3c8213ab61cf19b4712e9be9c9c7b22e70a9fda91f74c7136e
|
|
| MD5 |
3a57b7b6c013bc369217f63edd0b8446
|
|
| BLAKE2b-256 |
a0fd77636f854501e7defd6aab082e25c68f222720f53f97e72e7070ef596e01
|
File details
Details for the file morphata-2.0.4-py3-none-any.whl.
File metadata
- Download URL: morphata-2.0.4-py3-none-any.whl
- Upload date:
- Size: 85.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"42","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce4ffbd6cabc33d6a9a58451be7644589c7335d52181568173e1e7491b0dbf09
|
|
| MD5 |
6ab4619038b672d1cd500110ae3baf1f
|
|
| BLAKE2b-256 |
2be065963d3727f5dac6ee554a17c9a23024ffeadb04849731a9f6fe551ac258
|