- Notifications
You must be signed in to change notification settings - Fork6
A Python package for automata theory.
License
NotificationsYou must be signed in to change notification settings
whitemech/pythomata
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Python implementation of automata theory.
- GitHub:https://github.com/whitemech/pythomata
- PyPI:https://pypi.org/project/pythomata/
- Documentation:https://whitemech.github.io/pythomata
- Changelog:https://whitemech.github.io/pythomata/release-history/
- Issue Tracker:https://github.com/whitemech/pythomata/issues
- Download:https://pypi.org/project/pythomata/#files
- fromPyPI:
pip install pythomata
- or, from source (e.g.
develop
branch):
pip install git+https://github.com/whitemech/pythomata.git@develop
- or, clone the repository and install:
git clone https://github.com/whitemech/pythomata.gitcd pythomatapip install .
- Define an automaton:
frompythomataimportSimpleDFAalphabet= {"a","b","c"}states= {"s1","s2","s3"}initial_state="s1"accepting_states= {"s3"}transition_function= {"s1": {"b" :"s1","a" :"s2" },"s2": {"a" :"s2","b" :"s1","c" :"s3", },"s3":{"c" :"s3" }}dfa=SimpleDFA(states,alphabet,initial_state,accepting_states,transition_function)
- Test word acceptance:
# a word is a list of symbolsword="bbbac"dfa.accepts(word)# True# without the last symbol c, the final state is not reacheddfa.accepts(word[:-1])# False
- Operations such as minimization and trimming:
dfa_minimized=dfa.minimize()dfa_trimmed=dfa.trim()
- Translate into a
graphviz.Digraph
instance:
graph=dfa.minimize().trim().to_graphviz()
To print the automaton:
graph.render("path_to_file")
For that you will need to install Graphviz.Please look at theirdownload pagefor detailed instructions depending on your system.
The output looks like the following:
- Basic DFA and NFA support;
- Algorithms for DFA minimization and trimming;
- Algorithm for NFA determinization;
- Translate automata into Graphviz objects.
- Support for Symbolic Automata.
To run the tests:
tox
To run only the code style checks:
tox -e flake8 -e mypy
To build the docs:
mkdocs build
To view documentation in a browser
mkdocs serve
and then go tohttp://localhost:8000
Pythomata is released under the GNU Lesser General Public License v3.0 or later (LGPLv3+).
Copyright 2018-2020WhiteMech
About
A Python package for automata theory.
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published