# SMVerifier

`SMVerifier` provides a framework for to verify the correctness of a state machine with learned transitions.

Providing a python `Enum` and a dictionary of transitions will automatically construct the z3 solver.

For an example, see `verify_example.py`:

```
python3 verify_example.py
```

## Requirements

```
pip install z3-solver
```

Documentation: https://ericpony.github.io/z3py-tutorial/guide-examples.htm

## Todo

- Read in transitions from a file. Evaluating a NN over many inputs could take quite a long time, so we might want to save it to disk first. Then we can verify later.
- Multithreading. there should be a rather straightforward way to implement efficient multithreading
