• Aucun résultat trouvé

Déterminisme Voici quelques idées pour une meilleure détection du déterminisme. Il est possible de mettre en place un système plus souple pour vérifier le déterminisme lors

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

Documents relatifs