From logic to automata.
Project description
logaut
LOGics formalisms to AUTomata
What is logaut
Logaut is to the logics-to-DFA problem what Keras is for Deep Learning: a wrapper to performant back-ends, but with human-friendly APIs.
Install
To install the package from PyPI:
pip install logaut
Make sure to have Lydia installed on your machine. We suggest the following setup:
- Install Docker
- Download the Lydia Docker image:
docker pull whitemech/lydia:latest
- Make the Docker image executable under the name
lydia. On Linux and MacOS machines, the following commands should work:
echo '#!/usr/bin/env sh' > lydia
echo 'docker run -v$(pwd):/home/default whitemech/lydia lydia "$@"' >> lydia
sudo chmod u+x lydia
sudo mv lydia /usr/local/bin/
This will install an alias to the inline Docker image execution
in your system PATH. Instead of /usr/local/bin/
you may use another path which is still in the PATH variable.
On Windows, make a .bat file:
docker run --name lydia -v"%cd%":/home/default whitemech/lydia lydia %*
And add it to your PATH variable.
Quickstart
Now you are ready to go:
from logaut import ltl2dfa
from pylogics.parsers import parse_ltl
formula = parse_ltl("F(a)")
dfa = ltl2dfa(formula, backend="lydia")
The function ltl2dfa takes in input a
pylogics
formula and gives in output
a pythomata DFA.
Then, you can manipulate the DFA as done with Pythomata, e.g. to print:
dfa.to_graphviz().render("eventually.dfa")
Currently, the lydia backend only supports
the ltl and ldl logics.
The ltlf2dfa, based on
LTLf2DFA,
supports ltl and pltl.
First, install it at version 1.0.1:
pip install git+https://github.com/whitemech/LTLf2DFA.git@develop#egg=ltlf2dfa
Then, you can use:
from logaut import pltl2dfa
from pylogics.parsers import parse_pltl
formula = parse_pltl("a S b")
dfa = pltl2dfa(formula, backend="ltlf2dfa")
Write your own backend
You can write your back-end by implementing
the Backend interface:
from logaut.backends.base import Backend
class MyBackend(Backend):
def ltl2dfa(self, formula: Formula) -> DFA:
"""From LTL to DFA."""
def ldl2dfa(self, formula: Formula) -> DFA:
"""From LDL to DFA."""
def pltl2dfa(self, formula: Formula) -> DFA:
"""From PLTL to DFA."""
def pldl2dfa(self, formula: Formula) -> DFA:
"""From PLDL to DFA."""
def fol2dfa(self, formula: Formula) -> DFA:
"""From FOL to DFA."""
def mso2dfa(self, formula: Formula) -> DFA:
"""From MSO to DFA."""
Then, you can register the custom backend class in the library:
from logaut.backends import register
register(id_="my_backend", entry_point="dotted.path.to.MyBackend")
And then, use it through the main entry point:
dfa = ltl2dfa(formula, backend="my_backend")
Tests
To run tests: tox
To run only the code tests: tox -e py3.7
To run only the linters:
tox -e flake8tox -e mypytox -e black-checktox -e isort-check
Please look at the tox.ini file for the full list of supported commands.
Docs
To build the docs: mkdocs build
To view documentation in a browser: mkdocs serve
and then go to http://localhost:8000
License
logaut is released under the GNU Lesser General Public License v3.0 or later (LGPLv3+).
Copyright 2021 WhiteMech
Authors
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 logaut-0.2.0.tar.gz.
File metadata
- Download URL: logaut-0.2.0.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35f82c7726dd53f6201fb6e440133e8d93b8a826810f7d3d8c46477afd6865bd
|
|
| MD5 |
01cc4fdb4820a5bda70353677634ec39
|
|
| BLAKE2b-256 |
75b903d0cf21bfcdec1d4981e6e89547410a6a115ec9d0d54e150ef158348d51
|
File details
Details for the file logaut-0.2.0-py3-none-any.whl.
File metadata
- Download URL: logaut-0.2.0-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ebcda45a5a83ea4c60baed5ce8c90783c61763dfbab971b84d109939e9e6225
|
|
| MD5 |
3a7854dec962f6a9493274d7157a86e9
|
|
| BLAKE2b-256 |
604d73eb7d67d279cf858ec61a7c2d738eee4c01c1c331e6385ecf492331a3ff
|