Binary Decision Diagram library in OCaml
This library provides many implementations of BDD with the same interface. We provide the same set of tests and benchmarks for all of them.
src/bdd_naive.ml: naïve implementationsrc/bdd_hashcons.ml: hash-consing implementationsrc/bdd_hashcons_memo.ml: hash-consing plus memoïzation implementation
They all have the same functorial interface, that you can find in src/bdd.ml.
We have our own implementation of boolean expression:
src/expr_lexer.mll: the lexersrc/expr_parser.mly: the parsersrc/expr.ml: the abstract syntaxsrc/expr_utils.ml: high-level functions to get an AST from a file or a string containing an expression written in the concrete syntax
Here's what an expression in the concrete-syntax looks like: ((0 || 1) && z => 1) <=> !(x && y || z).
Build
You need to have dune on your system. Then:
scripts/build.sh
Test
scripts/test.sh
Bench
An expression written in the concrete syntax - don't forget to put double quotes around it:
scripts/bench.sh -e <expression>
A file containing an expression:
scripts/bench.sh -f <file>
Change Log
See CHANGELOG.
License
See LICENSE.
Description
Languages
OCaml
92.7%
Dune
7.3%