/bach

Primary LanguageOCaml

Bach

Building

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.

Benchmarks

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.