de l’extraction à partir de relations inductives. Tout d’abord, la structure arborescente
que constitue les Reltree est certes très pratique pour la génération de code mais elle est
aussi plus restrictive que nécessaire. Par exemple, la fusion entre deux constructeurs ne
permet de fusionner que des prémisses identiques. Pourtant, les prémisses qui effectuent un
calcul pour définir une nouvelle variable n’ont pas besoin d’être identiques : elles peuvent
très bien calculer deux valeurs différentes pour la même variable. La structure d’arbres
pourrait être remplacée par des graphes orientés vérifiant certaines propriétés. Les chemins
dans le graphe représenteraient alors les chemins d’exécution de la fonction, comme pour
lesReltree.
Intégration dans d’autres outils de preuve Matita [Asperti et al. 2011] et
Epi-gram [McBride 2004] sont deux outils qui peuvent constituer de bons candidats pour
l’implantation de notre approche. Matita est un outil d’aide à la preuve similaire à Coq,
qui est aussi basé sur le calcul des constructions inductives. Le gain que notre approche
apporterait à Matita serait similaire à l’apport obtenu pour Coq.Epigram est un langage
de programmation fonctionnel dans lequel il y a des types dépendants. Son objectif est de
permettre une transition entre les langages de programmation classiques et les langages
qui permettent d’intégrer des spécifications et des preuves, le système de types d’Epigram
étant suffisant pour exprimer des spécifications de programmes. Ces spécifications sont
suf-fisamment proches de celles deFocalizepour que l’on puisse utiliser notre approche au sein
d’Epigram de la même manière que dans Focalize, c’est-à-dire en utilisant un ensemble de
propriétés choisies par l’utilisateur comme la définition d’une relation inductive, même si
cette dernière n’existe pas à proprement parler dans Epigram.Epigram permet aussi de
dé-finir des familles de types inductives, qui peuvent être vues comme des prédicats inductifs,
il y a donc deux possibilités pour intégrer notre outil dans ce langage, suivant la manière
dont on choisit de définir des relations inductives.
Bibliographie
Jean-Raymond Abrial. The B Book, Assigning Programs to Meanings Cambridge
Univer-sity Press, Cambridge (UK), 1996. 41
Andrew W. Appel, Robert Dockins, and Xavier Leroy. A List-Machine Benchmark for
Mechanized Metatheory. J. Autom. Reasoning, 49(3) :453–491, 2012. 36, 138, 154
Andrea Asperti, Wilmer Ricciotti, Claudio Sacerdoti Coen, and Enrico Tassi. The Matita
Interactive Theorem Prover. In CADE, pages 64–69, 2011. 157
Isabelle Attali and Didier Parigot. Integrating Natural Semantics and Attribute
Gram-mars : the Minotaur System. Rapport de recherche RR-2339, INRIA, 1994. URL
http://hal.inria.fr/inria-00077110. 38, 39
Gilles Barthe and Pierre Courtieu. Efficient Reasoning about Executable Specifications in
Coq. InTPHOLs, pages 31–46, 2002. 45
Gilles Barthe, Julien Forest, David Pichardie, and Vlad Rusu. Defining and Reasoning
About Recursive Functions : A Practical Tool for the Coq Proof Assistant. In FLOPS,
pages 114–129, 2006. 45, 51, 111
Ulrich Berger, Kenji Miyamoto, Helmut Schwichtenberg, and Monika Seisenberger. Minlog
- A Tool for Program Extraction Supporting Algebras and Coalgebras. InCALCO, pages
393–399, 2011. 37
Stefan Berghofer and Tobias Nipkow. Executing Higher Order Logic. In TYPES, pages
24–40, 2000. 34, 39
Les nombres à la fin de chaque référence correspondent aux numéros de page où la référence est présente.
BIBLIOGRAPHIE
Stefan Berghofer and Markus Wenzel. Inductive Datatypes in HOL - Lessons Learned in
Formal-Logic Engineering. In TPHOLs, pages 19–36, 1999. 34
Stefan Berghofer, Lukas Bulwahn, and Florian Haftmann. Turning Inductive into
Equa-tional Specifications. In TPHOLs, pages 131–146, 2009. 34
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 Verlag, 2004. 116
Lorenzo Bettini, Dietmar Stoll, Markus Völter, and Serano Colameo. Approaches and
Tools for Implementing Type Systems in Xtext. InSLE, pages 392–412, 2012. 40
Sandrine Blazy and Xavier Leroy. Mechanized Semantics for the Clight Subset of the C
Language. J. Autom. Reasoning, 43(3) :263–288, 2009. 21, 48, 112
Richard Bonichon, David Delahaye, and Damien Doligez. Zenon : An Extensible
Automa-ted Theorem Prover Producing Checkable Proofs. In Logic for Programming Artificial
Intelligence and Reasoning (LPAR), volume 4790 ofLNCS/LNAI, pages 151–165,
Yere-van (Armenia), October 2007. Springer. 35, 128, 130
Patrick Borras, Dominique Clément, Thierry Despeyroux, Janet Incerpi, Gilles Kahn,
Ber-nard Lang, and V. Pascual. CENTAUR : The System. In Software Development
Envi-ronments (SDE), pages 14–24, 1988. 37
Lukas Bulwahn. Code Generation from Inductive Predicates in Isabelle/HOL, 2009.
Di-ploma Thesis. 35
Albert J. Camilleri. A Hybrid Approach to Verifying Liveness in a Symmetric
Multi-Processor. In Proceedings of the 10th International Conference on Theorem Proving in
Higher Order Logics, TPHOLs ’97, pages 49–67, London, UK, UK, 1997. Springer-Verlag.
20
Brian Campbell. An Executable Semantics for CompCert C. In CPP, pages 60–75, 2012.
21, 48
BIBLIOGRAPHIE
Edmund M. Clarke, E. Allen Emerson, and Joseph Sifakis. Model Checking : Algorithmic
Verification and Debugging. Commun. ACM, 52(11) :74–84, 2009. 29
Dominique Clément, Joëlle Despeyroux, Thierry Despeyroux, and Gilles Kahn. A Simple
Applicative Language : Mini-ML. In LISP and Functional Programming, pages 13–27,
1986. 30
Thierry Coquand and Gerard Huet. The Calculus of Constructions. Inf. Comput., 76(2-3) :
95–120, February 1988. 105
Thierry Coquand and Christine Paulin. Inductively Defined Types. In Conference on
Computer Logic, pages 50–66, 1988. 26
Patrick Cousot and Radhia Cousot. Abstract Interpretation : A Unified Lattice Model for
Static Analysis of Programs by Construction or Approximation of Fixpoints. InPOPL,
pages 238–252, 1977. 29
Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles, and
Boris Yakobowski. Frama-C - A Software Analysis Perspective. InSEFM, pages 233–247,
2012. 44
Nils Anders Danielsson. Operational Semantics Using the Partiality Monad. In ICFP,
pages 127–138, 2012. 48
Zaunah Dargaye. Vérification formelle d’un compilateur optimisant pour langages
fonc-tionnels. PhD thesis, Université Paris 7, 2009. 35, 91, 138
Dans le document
Extraction de code fonctionnel certifié à partir de spécifications inductives
(Page 158-162)