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