Haskell Active Automata Learning

Hey all,

I wanted to share with you a library I’ve been working on for the past year. The library is named haal (Haskell Active Automata Learning) and it is available on github and on hackage.

The aim of the library is to facilitate active automata learning. Active automata learning algorithms can be used to construct models (commonly DFAs, mealy machines or register automata) of reactive systems.

The library is inspired by Java’s LearnLib and Python’s AALpy. It isn’t as mature yet as any of those libraries but it has reached a point where it is actually usable on real systems. It can be used to learn mealy machines of real programs, not only for heating up a computer.

I have tried to take advantage of Haskell’s type system to avoid some classes of bugs and I have also used Liquid Haskell annotations to some extent to verify crucial properties of learning algorithms. If you are interested in details, please feel free to check the github repo, where I provide a comprehensive README.md and some examples.

In the future, I want to include more learning algorithms (algorithms responsible for constructing models) and even more conformance testing algorithms (algorithms that attempt to find counterexamples differentiating the real system from the model of it).

If any of that interests you or you have some constructive criticism, I’d be glad to hear about it.

Thanks,
Stefanos

11 Likes