Electronic Proceedings in Theoretical Computer Science (Jul 2018)

Abstract Representation of Binders in OCaml using the Bindlib Library

  • Rodolphe Lepigre,
  • Christophe Raffalli

DOI
https://doi.org/10.4204/EPTCS.274.4
Journal volume & issue
Vol. 274, no. Proc. LFMTP 2018
pp. 42 – 56

Abstract

Read online

The Bindlib library for OCaml provides a set of tools for the manipulation of data structures with variable binding. It is very well suited for the representation of abstract syntax trees, and has already been used for the implementation of half a dozen languages and proof assistants (including a new version of the logical framework Dedukti). Bindlib is optimised for fast substitution, and it supports variable renaming. Since the representation of binders is based on higher-order abstract syntax, variable capture cannot arise during substitution. As a consequence, variable names are not updated at substitution time. They can however be explicitly recomputed to avoid "visual capture" (i.e., distinct variables with the same apparent name) when a data structure is displayed.