Incremental and demand-driven abstract interpretation framework in OCaml
DAI requires:
- OCaml version 4.09.0+
- OPAM version 2.0.7+
- Dune version 2.5.1+
- System packages: libgmp-dev libmpfr-dev (for APRON numerical domains)
- Adapton version 0.1-dev (pinned
as a local OPAM package via
make install
, per its README) - tree-sitter OCaml bindings for Java, generated using
semgrep/ocaml-tree-sitter-core
and
semgrep/ocaml-tree-sitter-languages.
These are under active development so there has been some drift as this
project is not currently actively maintained. We have pinned patched
versions known to work with this project at the
dai
branch of forks athttps://github.com/bennostein/ocaml-tree-sitter-core
andhttps://github.com/bennostein/ocaml-tree-sitter-languages
; check these out and follow their README instructions to generate the necessary package, then install with(cd ocaml-tree-sitter-languages/lang/java/ocaml-src && dune install --root .)
Build with make build
and run synthetic-edit experiments (as in PLDI
paper) with ./run_d1a_experiment