Namely, Painless: A unifying approach to safe programming with first-order syntax with binders

Abstract : This dissertation describes a novel approach to safe meta-programming. A meta-program is a program which processes programs or similar data. Compilers and theorem provers are prime examples of meta-programs which could benefit from this approach. To this end, this work focuses on the representation of names and binders in data structures. Programming errors are really easy to make with usual techniques. We propose an abstract interface to names and binders that rules out these errors. This interface is implemented as a library in Agda. It allows defining and manipulating term representations in nominal style. Thanks to abstraction, other styles are supported as well: the de Bruijn style, the combinations of these styles, and more. Whereas indexing the types of names and terms with a natural number is a well-known technique to better control de Bruijn indices, we index them with worlds. Worlds are at the same time more precise and more abstract than natural numbers. Via logical relations and parametricity, we are able to demonstrate in what sense our library is safe, and to obtain theorems for free about world-polymorphic functions. For instance, we prove that a world-polymorphic term transformation function must commute with any renaming of the free variables. The proof is entirely carried out in Agda. The usability of our technique is shown on several examples including normalization by evaluation which is known to be challenging. We show that our world-indexed approach can express a wide range of data types by embedding several definition languages from the literature.
Document type :
Liste complète des métadonnées
Contributor : Nicolas Pouillard <>
Submitted on : Saturday, December 1, 2012 - 12:12:21 PM
Last modification on : Friday, May 25, 2018 - 12:02:07 PM
Document(s) archivé(s) le : Saturday, December 17, 2016 - 6:05:45 PM


  • HAL Id : tel-00759059, version 1



Nicolas Pouillard. Namely, Painless: A unifying approach to safe programming with first-order syntax with binders. Programming Languages [cs.PL]. Université Paris-Diderot - Paris VII, 2012. English. ⟨tel-00759059⟩



Record views


Files downloads