flexfringe is a passive automata learning model with an emphasis on flexibility in merge heuristic and model type.

Please bear with us while we prepare flexfringe for publication, including a tool paper, some (interactive) demos as well as introduction videos.
In the meanwhile, please feel free to reach out to me at Christian dot HAMMERSCHMIDT a uni lu for support and assistance with flexfringe. Thank you.

Building flexfringe

To build flexfringe,  you need to have the libpopt-dev library for argument parsing. Some heuristic functions bring their own dependencies: We provide an implementation of a likelihood-based merge function for probabilistic DFAs. It needs the GNU scientific library (development) package (e.g. the libgsl-dev package in Ubuntu).

If you want to use the reduction to SAT and automatically invoke the SAT solver, you need to provide the path to the solver binary. flexfringe has been tested with lingeling (which you can get from http://fmv.jku.at/lingeling/ and run its build.sh).

You can build and compile the flexfringe project by running

$ make clean all

in the main directory to build the executable named flexfringe.

Running flexfringe

Run ./flexfringe –help to get help.

The start.sh script together with some .ini files provides a shortcut to storing


$ ./start.sh mealy-batch.ini data/simple.traces

See the .ini files for documentation of parameter flags.

flexfringe will output some .dot files. You can visualize them using the ./show.sh script or running dot explicitly

$ dot -Tpdf file.dot -o outfile.pdf or $ ./show.sh final.dot

You can checkout the latest version of flexfringe at https://bitbucket.org/chrshmmmr/dfasat/src/dfb49affd0bbab76f51d3d089ad8403f4612c65e/?at=development.


Is it fast?


Profiling graph of a run of flexfringe on a dataset from stamina.
Profiling graph of a run of the overlap heuristic on data from the Stamina competition. Click to enlarge and see in original size.