This is the wlp-based bounded symbolic verification tool by Mark van de Meer, Samuel Klumpers, Philipp Zander and Marien Raat.
Run the tests with
stack test
You can see all the options with:
stack run -- --help
For example to verify memberOf.gcl you can run:
stack run -- --program test/examples/benchmark/memberOf.gcl --n 10 --k 30
This will print Nothing
because there is no counter example
To check the mutations, simply add --mutate
:
stack run -- --program test/examples/benchmark/memberOf.gcl --n 10 --k 30 --mutate
You can disable the pruning with --disableOptimizations
:
stack run -- --program test/examples/benchmark/memberOf.gcl --n 10 --k 30 --disableOptimizations
You can run the benchmarks with the --benchmark
option, this generates a csv
file with the values, which you can pretify using the included pythons script.
stack run -- --program test/examples/benchmark/memberOf.gcl --n 10 --k 30 --benchmark
Samuel: Initial implementation of wlp rules, conversion to z3, implement pointers, optionals in paper, contribute to abstract and approach in paper.
Philipp: define data types for ASTs and trees, implement renaming, implement pruning by feasibility, implement pointers, investigate Z3 segmentation fault
Mark: Arrays verification, related works in paper, testing
Marien: Path generation, wlp to z3, arrays verification, benchmarking implementation, implementation in paper, performance section in paper, related works in paper, unit tests