Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.

Slides:



Advertisements
Présentations similaires
Correction de Programmes H. Wertz1 Correction de Programmes Soit lorganigramme suivant : M 0, M,N Ent. Nat. J = I N invariante de boucle I = M condition.
Advertisements

Chapitre annexe. Récursivité
Les fonctions A quoi ça sert ?
Algorithmes et structures de données avancés
Fonctions & procédures
Spécification et qualité du logiciel
Introduction à l’Algorithmique
3- Déclaration et accès aux objets
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Séminaire Biblio LISC - 3/04/02 Complexité, information Daprès JP Delahaye (1999)
Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
Génération de colonnes
Logiques Mathématiques
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Introduction à l’algorithmique
Algorithmique et Programmation
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
Graphes Conceptuels J.F. Baget Inria.
Programmation logique Logique des prédicats du premier ordre
Introduction à la récursivité
Sémantique axiomatique
Calcul Relationnel Chapitre 4, Section 4.3.
Aujourdhui: Vérification des devoirs. Retour. Titre de la leçon et contextualisation. Lacquisition des connaissances déclaratives, procédurale et conditionnelles.
Programmation logique Démonstrateur automatique
Fonction exponentielle: enchaînement de théorèmes
Rappels de logique des prédicats du 1er ordre
CSI3525: Concepts des Languages de Programmation
Partie II Sémantique.
Sémantique dénotationnelle
Programmation logique Le Langage PROLOG
Programmation procédurale Le projet C O N C O R D E
Programmation non procédurale Le projet ECOLE 2000
Algorithmique et langage C. Les traitements Comment utiliser les données.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Jacques Nicolas INRIA /IRISA Rennes
Programmation procédurale Transformations
Les assertions en Java.
Projet I.S.N. Arbre fractal
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
Travaux Pratiques Représentation des connaissances
Paradigmes des Langages de Programmation
Programmation procédurale Les différents schémas
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Programmation fonctionnelle Lambda-calcul
La Logique du premier ordre LPO
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
Les tests.
Tutorat en bio-informatique
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Racket (Lisp)
Introduction au langage C Fonctions et Procédures
1 Sixième journée Éléments de C++ La programmation typée Éléments de C++ La programmation typée.
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Programmation fonctionnelle Preuve
Introduction à la récursivité
Conception Formelle en PVS Master 2 ISC Chef de Projet: M. Pierre Castéran Présenté par: Roland Atoui Xavier Dumas Sébastien Jardel Laurent Vendredi.
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) C O M P I L Z.
Résoudre des équations algébriques
1 Algorithmique, cours 3 Septembre Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens.
LOGIQUE ET PROGRAMMATION LOGIQUE
Transcription de la présentation:

Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation

Programmation procédurale preuves Preuves sur les R-langages Théorie des systèmes formels( Méthode de Hoare). Soit f(x;y) : µ une déclaration de procédure de corps µ. Nous voulons démontrer que si p(x) est vérifiée à l'entrée de la procédure alors q(x,y) est vérifiée à la sortie. p(x) {f(x;y):µ} q(x,y) x : listes des paramètres valeurs(entrées) y : listes des paramètres résultats(sorties) Théorème : Si l'on peut démontrer la correction du corps µ relativement au prédicat d'entrée p(x) et au prédicat de sortie q(x, y) sous l'hypothèse de la correction par rapport à p et q de tous les appels internes alors : p(x) {f(x;y) : µ} q(x, y)

Programmation procédurale preuves Preuves sur les R-langages Exemple : Soit la procédure récursive : F 91 (x,y) =si x > 100 : y := x-10 sinon F 91 (x+11,z); f 91 (z, y) Démontrer la correction partielle de cette procédure relativement aux prédicat p et q suivants: p(x) : ( x>=0) q(x, y) : (x>100 ==> y =x-10 )et (x y=91)

Programmation procédurale preuves Preuves sur les R-langages Dans le cas où x > 100, le résultat est immédiat. Dans le cas 0 =0 {F91(x+11; z)} (x>89 ==>z=x+1) et x z=91. 2) z>=0 {F91(z;y)} (z>100 ==>y=z-10 )et (z y=91)

Programmation procédurale preuves Preuves sur les R-langages D'après 1) deux cas apparaissent: x>89 : donc z = x+1 et d'après 2) deux sous cas 11) x+1 > 100, c'est à dire x>99, donc x =100 et donc y=x+1-10=91 (q(x,y) vérifiée) 12) x+1 <=100, cad x <= 99 donc y=91 (q(x,y) vérifiée) x<=89 donc z=91 d'après 1) et d'après 2) y=91 (q(x, y) vérifiée)

Programmation procédurale preuves Preuves sur les B-langages(Floyd) Technique exposée sur les organigrammes qui n'est rien d'autre que la représentation graphique des B-algorithmes. Définition de points de coupure de sorte à former des cycles.

Programmation procédurale preuves Automatisation La démo part de la fin (post-condition) pour arriver à une plus faible condition. Ensuite il faudra prouver que la pré-condition implique cette plus faible( démonstrateur de théorème) Pour un D-algorithme, prouveur semi-automatique puisque on ne peut déterminer l'invariant de manière automatique. Pour un R-algorithme, prouveur entièrement automatique puisque pas de problème d'invariant.

Programmation procédurale preuves Automatisation ( Exemple ) Les règles de Hoare définissent un système formel de preuve utilisant la logique des prédicats du premier ordre. Une automatisation pourrait être envisagée. L'automatisation sera basée sur un prouveur de théorème. Elle sera semi-décidable ( Théorie de la logique des prédicats). La difficulté réside dans le choix des bons invariants et reste entièrement à la charge de l'utilisateur.

Programmation procédurale preuves Automatisation Scénario du prouveur automatique utilisant le chaînage arrière. Soit à prouver la correction partielle du programme P suivant muni des assertions d'entrées et de sortie (E et S) et d'un invariant de boucle I.

Programmation procédurale preuves

Automatisation Pour prouver le but initial E {P} S (1), il faut prouver par la règle(SEQ) les 2 sous-buts : E {P1} I (2) et I {P2} S (3) (2) peut être prouvé par (AFF) et (SEQ) Pour prouver (3) il faut prouver (IMP2) I {P2} I & (J>n) (4) et, I & (J>n) --> S (5) L'implication (5) pourrait être montré facilement.