Team Gallium

Members
Overall Objectives
Scientific Foundations
Application Domains
Software
New Results
Contracts and Grants with Industry
Other Grants and Activities
Dissemination
Bibliography

Section: New Results

Meta-programming

Participants : Nicolas Pouillard, François Pottier.

In an effort to improve meta-programming support (the ability to write programs that manipulate other programs) in programming languages, we have focused first on the issue of binders. Programming with data structures containing binders occurs frequently: from compilers and static analysis tools to theorem provers and code generators, it is necessary to manipulate abstract syntax trees, type expressions, logical formulae, proof terms, etc. All these data structures contain variables and binding constructs.

Nicolas Pouillard, under the supervision of François Pottier, investigated the design of a programming interface for names and binders where the representations of these two types are kept abstract. This interface is sufficiently general to enable a large body of program transformations. Moreover, it is sufficiently abstract to avoid committing on the choice of the representation of names and binders. This interface comes with two implementations, one using De Bruijn indices and the other using a nominal approach. Each of these implementations is equipped with a logical relation, which defines both $ \alpha$ -equivalence of values and contextual equivalence of programs. Since well-typed programs inhabit their logical relation, this establishes that names and binders are handled in a well-behaved manner. These results were published at the ICFP 2010 conference [23] .


previous
next

Logo Inria