Bach is dependent on Souffle. Follow the build instructions and add the path to the Souffle executable in config.sexp
.
Use make
to build Bach. The resulting executable is sym-linked as bach.native
.
Benchmark file structure is as follows:
./benchmarks
/finitefield
/facts
add.facts
mult.facts
...
finitefield.sexp
/dict
/facts
insert.facts
keys.facts
...
dict.sexp
...
In particular, the facts/
folder contains lines of tab-separated (this is critical) items in the relevant domain encoding the execution, and test.sexp
contains the parameters that define the search.
The provided benchmarks include example grammars and Python scripts for use with /tools/epee/epee.py
to generate fact files. You can use make facts
to perform this process automatically.
In order to test scalability, run make graph
(and then open speed.pdf
). To check type I and II error, run make truth
to generate approximate ground truth values and make error
to compute error rates. In addition to removing the built executable, make clean
will also remove the data generated by the above make
commands.