1
Fork 0
mirror of https://git.cs.ou.nl/joshua.moerman/mealy-decompose.git synced 2025-04-29 17:57:44 +02:00
Tools to decompose finite state machines.
Find a file
2025-04-29 09:57:09 +02:00
docs Restructured the project 2025-04-14 20:38:53 +02:00
examples Restructured the project 2025-04-14 20:38:53 +02:00
hs added some copyrgiht info 2025-04-29 09:57:09 +02:00
py Restructured the project 2025-04-14 20:38:53 +02:00
results Restructured the project 2025-04-14 20:38:53 +02:00
.gitignore script to input-decompose a model 2024-06-14 13:25:52 +02:00
.ruff.toml more formatting 2024-06-14 14:09:18 +02:00
cabal.project Restructured the project 2025-04-14 20:38:53 +02:00
fourmolu.yaml Refactored and cleaned up some things 2024-06-26 09:13:56 +02:00
LICENSE Restructured the project 2025-04-14 20:38:53 +02:00
README.md Added proper commandline parsing, and moved the input-decompose into main 2025-04-15 17:02:32 +02:00

mealy-decompose

Tools to investigate decomposition of Mealy machines, aka finite state machines (FSMs). Notable entry points are:

  • hs/app/Main.hs is a heuristic to decompose finite state machines into multiple components, based on their outputs.

  • py/decompose_fsm_optimise.py does the same, but optimally and with a SAT solver. This can only handle state spaces of at most a few hundred states.

  • hs/app/RandomGen.hs for generating FSMs which are decomposable.

How to run

The the haskell tools (tested with ghc 9.2.8, ghc 9.4.8, and ghc 9.10.1):

cabal run mealy-decompose-main -- -h

For the python tools (tested with python 3.12):

pip install -r py/requirements.txt
python py/decompose_fsm_optimise.py -h

(c) 2024-2025 Joshua Moerman, Open Universiteit, licensed under the EUPL (European Union Public License). You may find the license in the LICENSE file.

If you want to use this library and find the license not suitable for you, then please do get in touch.

SPDX-License-Identifier: EUPL-1.2