Namely, Painless: A unifying approach to safe programming with first-order syntax with binders - Archive ouverte HAL Accéder directement au contenu
Thèse Année : 2012

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

Une approche unifiante pour programmer sûrement avec de la syntaxe du premier ordre contenant des lieurs

Résumé

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.
Cette thèse décrit une nouvelle approche pour la méta-programmation sûre. Un méta-programme est un programme qui manipule des programmes ou assimilés. Les compilateurs et systèmes de preuves sont de bons exemples de méta-programmes qui bénéficieraient de cette approche. Dans ce but, ce travail se concentre sur la représentation des noms et des lieurs dans les structures de données. Les erreurs de programmation étant courantes avec les techniques usuelles, nous proposons une interface abstraite pour les noms et les lieurs qui élimine ces erreurs. Cette interface est implémentée sous forme d'une bibliothèque en Agda. Elle permet de définir et manipuler des représentations de termes dans le style nominal. Grâce à l'abstraction, d'autres styles sont aussi disponibles : le style de De Bruijn, les combinaisons de ces styles, et d'autres encore. Nous indiçons les noms et les termes par des mondes. Les mondes sont en même temps précis et abstraits. Via les relations logiques et la paramétricité, nous pouvons démontrer dans quel sens notre bibliothèque est sûre, et obtenir des "théorèmes gratuits" à propos des fonctions monde-polymorphiques. Ainsi une fonction monde-polymorphique de transformation de termes doit commuter avec n'importe quel renommage des variables libres. La preuve est entièrement conduite en Agda. Notre technique se montre utile sur plusieurs exemples, dont la normalisation par évaluation qui est connue pour être un défi. Nous montrons que notre approche indicée par des mondes permet d'exprimer un large panel de type de données grâce a des langages de définition embarqués.
Fichier principal
Vignette du fichier
PhD-thesis-latest.pdf (761.85 Ko) Télécharger le fichier
PhD-thesis-latest-black-and-white.pdf (732.25 Ko) Télécharger le fichier
phd-defense-slides-en.pdf (323.25 Ko) Télécharger le fichier
phd-defense-slides.pdf (327.62 Ko) Télécharger le fichier
posterDIGITEO-improved.pdf (245.4 Ko) Télécharger le fichier
Format : Autre
Format : Autre
Format : Autre
Format : Autre

Dates et versions

tel-00759059 , version 1 (01-12-2012)

Identifiants

  • HAL Id : tel-00759059 , version 1

Citer

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. ⟨NNT : ⟩. ⟨tel-00759059⟩

Collections

INRIA INRIA2
237 Consultations
734 Téléchargements

Partager

Gmail Facebook X LinkedIn More