Metadata-Version: 2.4
Name: morphata
Version: 2.2.1
Summary: Representation theory for automata, made practical.
Project-URL: Documentation, https://docs.anandb.dev/morphata
Project-URL: Repository, https://git.anandb.dev/morphata.git
Project-URL: Changelog, https://docs.anandb.dev/morphata/changelog.html
Author-email: Anand Balakrishnan <anandbala1597@gmail.com>
License-Expression: BSD-3-Clause
License-File: LICENSE
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.12
Requires-Dist: algebraic-arrays>=1.3.0
Requires-Dist: attrs>=25.4.0
Requires-Dist: cattrs>=26.1.0
Requires-Dist: jaxtyping>=0.3
Requires-Dist: lark>=1.3.1
Requires-Dist: logic-asts>=1.8
Requires-Dist: numpy
Requires-Dist: pollywog>=0.1.1
Requires-Dist: typing-extensions>=4.14
Provides-Extra: dot
Requires-Dist: pydot>=4.0.1; extra == 'dot'
Provides-Extra: jax
Requires-Dist: jax>=0.8; extra == 'jax'
Provides-Extra: torch
Requires-Dist: torch>=2.0; extra == 'torch'
Description-Content-Type: text/x-rst

Morphata
========

**morphata** does representation theory for automata.
An automaton -- its states, transitions,
and acceptance condition -- is a *structural* object.
``SymbolicAutomaton`` is the BDD-backed structural representation.
``MatrixOperator`` and ``PolynomialOperator`` interpret that structure over
semiring and bounded-distributive-lattice domains.

It builds on `algebraic <https://docs.anandb.dev/algebraic>`_ for
backend-agnostic semiring algebra (NumPy, JAX, PyTorch).

To install the latest release of ``morphata``, install from
`PyPI <https://pypi.org/project/morphata/>`_:

.. code-block:: bash

   pip install morphata

Or from the latest Git head:

.. code-block:: bash

   pip install 'morphata @ git+https://git.anandb.dev/morphata.git@main'

For more, see the `documentation <https://docs.anandb.dev/morphata>`_.

.. code-block:: python

   >>> import logic_asts as logic
   >>> import logic_asts.ltl as ltl

   >>> from morphata.alphabet import powerset_alphabet
   >>> from morphata.logic import formula_to_automaton

   >>> a = logic.Variable("a")
   >>> aut = formula_to_automaton(
   ...     ltl.Eventually(a), alphabet=powerset_alphabet({"a"}), finite=True
   ... )
   >>> aut.accepts([set(), {"a"}])
   True

Omega-regular conditions are supported structurally, but infinite-run acceptance
evaluation is not implemented. See the full documentation for details.

Citation
--------

To cite the use of this package or the papers
that are derived from it you can use the below BibTeX entries.

- For differentiable weighted automata in general:

  .. code-block:: bibtex

     @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:

  .. code-block:: bibtex

     @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:

  .. code-block:: bibtex

     @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 the ``LICENSE`` file for details.
