ELPI implements a variant of λProlog enriched with Constraint Handling
Rules, a programming language well suited to manipulate syntax trees with
binders. ELPI is designed to be embedded into larger applications written
in OCaml as an extension language. It comes with an API to drive the
interpreter and with an FFI for defining built-in predicates and data
types, as well as quotations and similar goodies that are handy to adapt
the language to the host application.