2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00
2019-02-11 16:18:26 +01:00

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 implementation
  • src/bdd_hashcons.ml: hash-consing implementation
  • src/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 lexer
  • src/expr_parser.mly: the parser
  • src/expr.ml: the abstract syntax
  • src/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
An OCaml library for binary decision diagrams (bdd)
Readme
Languages
OCaml 92.7%
Dune 7.3%