suite - LIPN - Université Paris 13

Transcription

suite - LIPN - Université Paris 13
Formalisation et preuve en Coq
de la préservation de la normalisation forte
pour le calcul de substitutions linéaires
(suite)
Sujet de stage de L3
Encadré par Micaela Mayero et Damiano Mazza
LIPN, Université Paris 13, Sorbonne Paris Cité
Description
[Ce stage est la suite des travaux effectués l’an dernier par Agathe Herrou sur ce sujet ambitieux.]
Les substitutions explicites. La β-réduction du λ-calcul est une abstraction fort utile mais,
en terme d’implémentation, loin d’être élémentaire (elle nécessite de recopier un sous-terme de
taille arbitraire un nombre arbitraire de fois). Les substitutions explicites [ACCL91] naissent
pour combler cet écart entre abstraction et implémentation.
L’idée est simple : on rajoute au λ-calcul une construction syntaxique primitive, appelée
substitution explicite, qui dénote le fait que l’on a affecté un certain sous-terme à une certaine
variable ; ensuite, on introduit des règles de réécriture qui laissent les substitutions explicites
“se propager” dans le terme, jusqu’aux occurrences de variables, et c’est seulement à ce moment
là qu’on effectue une “vraie” substitution.
Cette idée naı̈ve cache cependant des pièges. En effet, si l’on n’est pas soigneux, on peut
introduire de la divergence : un λ-terme fortement normalisable peut, lorsqu’il est executé avec
des substitutions explicites, produire des chemins de réduction infinis [Mel95]. On dit qu’un
calcul de substitutions explicites préserve la normalisation forte lorsqu’un tel phénomène ne se
produit jamais. La préservation de la normalisation forte est un résultat absoluement essentiel
dans la théorie des substitutions explicites ; les calculs qui ne la satisfont pas n’ont pas beaucoup
d’intérêt.
Le calcul de substitutions linéaires. L’un des points clé de la logique linéaire est la
décomposition de la flèche intuitionniste en deux connecteurs plus primitifs : une flèche linéaire
et une modalité de duplication, comme on le voit dans la traduction de Girard :
(A → B)∗ := !A∗ ( B ∗ .
Cette traduction des formules peut être étendue en une traduction des preuves de la logique
intuitionniste en logique linéaire :
!Γ∗ ` A∗
Γ`A
Or, modulo la correspondance de Curry-Howard, une preuve intuitionniste est un λ-terme;
de même, une preuve en logique linéaire peut être écrite en termes de réseaux de preuve. En
1
oubliant les formules, on a donc une traduction du λ-calcul pur (Λ) dans les réseaux purs (PN):
R : Λ −→ PN.
Cette traduction respecte la dynamique du calcul :
t → t0
implique
R(t) →+ R(t0 ).
La décomposition de la flèche intutionniste se traduit au niveau dynamique par le fait qu’une
étape de β-réduction correspond à plusieurs étapes dans les réseaux. Cette décomposition
est l’une des contributions fondamentales de la logique linéaire à la théorie des languages de
programmation fonctionnels.
Il se trouve que les étapes de réductions des réseaux peuvent être vues comme des réductions
de substitutions explicites [KL07, AK12]. Le calcul de substitions linéaires, récemment introduit par Beniamino Accattoli [Acc12], montre cette correspondance de manière très simple et
élégante. Ce calcul de substitutions explicites jouit d’un grand nombre de bonnes propriétés,
parmi lesquelles, bien sûr, la préservation de la normalisation forte.
Objectif du stage. Le but de ce stage est de terminer la formalissation et la preuve, dans
l’assistant d’aide à la preuve Coq [BC04, CDT], de la preuve “papier-crayon” de la préservation
de la normalisation forte pour le calcul des substitutions linéaires faite par Beniamino Accattoli.
Aucune connaissance de logique linéaire n’est nécessaire (c’est un peu la beauté de ce calcul
que d’exploiter la logique linéaire sans le savoir. . . ). Une connaissance d’un assistant de preuve
est nécessaire, en particulier une connaissance des bases de Coq sera appéciée. En plus de la
preuve papier de Beniamino Accattoli, le rapport et le code Coq d’Agathe Herrou serviront
également de base.
References
[Acc12]
Beniamino Accattoli. An abstract factorization theorem for explicit substitutions.
In Proceedings of RTA, volume 15 of LIPIcs, pages 6–21, 2012.
[ACCL91] Martı́n Abadi, Luca Cardelli, Pierre-Louis Curien, and Jean-Jacques Lévy. Explicit
substitutions. J. Funct. Program., 1(4):375–416, 1991.
[AK12]
Beniamino Accattoli and Delia Kesner. Preservation of strong normalisation modulo permutations for the structural lambda-calculus. Logical Methods in Computer
Science, 8(1), 2012.
[BC04]
Yves Bertot and Pierre Castéran. Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions. Texts in Theoretical
Computer Science. Springer, 2004.
[CDT]
The Coq Development Team. The Coq Proof Assistant Reference Manual. INRIARocquencourt.
[KL07]
Delia Kesner and Stéphane Lengrand. Resource operators for lambda-calculus. Inf.
Comput., 205(4):419–473, 2007.
[Mel95]
Paul-André Melliès. Typed lambda-calculi with explicit substitutions may not terminate. In TLCA, volume 902 of Lecture Notes in Computer Science, pages 328–334,
1995.
2