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.

Slides:



Advertisements
Présentations similaires
Yassine Lakhnech Prof. UJF Verimag
Advertisements

Qualité en Développement Laurent Henocque Enseignant Chercheur ESIL/INFO France
Introduction: Concepts de la programmation
Spécification et qualité du logiciel
Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Cours n° 8 Conception et Programmation à Objets
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Régine Laleau Centre d'Étude et de Recherche en Informatique du CNAM
Test et Validation du Logiciel
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Jean-Jacques Lévy INRIA Preuves de programmes et méthodes formelles Microsoft TechDays - 9 février 2010.
Les démarches de développement
Cours DESS Nantes 04 Décembre 2002
Une galante introduction à la notion de machine abstraite en B «Le baron Warseberg, malgré quil entretenait la demoiselle Laforest voyait encore les filles.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Logiques Mathématiques
OCaml - Les listes L3 MI.
UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger.
Les éléments de base de l’algorithmique
Initiation à la conception de systèmes d'information
Gestion des systèmes d’information
Spécification et Vérification de Modèles de Procédés de Développement
Algorithmique et Programmation
RDF(S)
Complément Le diagramme des classes
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 21/05/2014.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Rappels de logique des prédicats du 1er ordre
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
Environnements d'exécution
Ift 2251 Introduction au Génie Logiciel
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Séance d’introduction
Programmation logique Le Langage PROLOG
Programmation non procédurale Le projet ECOLE 2000
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.
Modélisation des données Un langage pour décrire  INVARIANT, PRE-CONDITION, EXPRESSION Concepts et notations utilisés  Logique  Ensembles  Relations.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661.
Spécification de Demoney en JML par raffinement Pierre-Alain Masson, Julien Groslambert LIFC Besançon Réunion GECCOO - 10 mars 2006 FRE 2661.
Paradigmes des Langages de Programmation
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
Spécification de programmes et de systèmes
Packages et Types De la Spécification Formelle A l'implémentation Ada.
Introduction Ateliers VBA Cours n°1 – Création d’Interfaces Cours n°2 – Téléchargement de données Cours n°3 – Codage.
Algorithmique et programmation en
Institut Supérieur des Sciences Appliquées et de Technologie Sousse
Approches Formelles en Systèmes d'information
Créer des packages.
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.
Optimisation de requêtes
« Validation Formelle de Systèmes Interactifs »
Module I3 algorithmique et programmation
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)
Pour les nuls débutants
Sélection de colonnes (la projection)
CORTIER Alexandre Directeur : Bruno d’AUSBOURG (ONERA)
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
LOGIQUE ET PROGRAMMATION LOGIQUE
Initiation aux bases de données et à la programmation événementielle
Introduction au langage PL/SQL
Café In: A quoi ca sert la recherche sur la programmation? Comment peut on faire travailler des ordinateurs ensemble? Ludovic Henrio SCALE TeamSCALE Team.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

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

PVS: Prototype Verification System 3- PVS: Prototype Verification System PBS: Support pour la méthode B en PVS 4- PBS: Support pour la méthode B en PVS LeProuveur PVS 5- Le Prouveur PVS Présentation du Projet 1- Présentation du Projet Plan Conclusion 6- Conclusion La Méthode B 2- La Méthode B

Présentation du Projet Vérification de code Présentation du Projet Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Similitude avec B S’initier à PVS Tester PBS

La Méthode B Formaliser des spécifications et des programmes La Méthode B Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Machine abstraite Raffinement Implentation

La Méthode B MACHINE nom SETS ENS1,...,ENS2 VARIABLES x1,...,x2 INVARIANT I INITIALIZATION S0 OPERATIONS... END Structure d'une Machine Abstraite La Méthode B Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion /* nom de la machine */ /* nom des ensembles */ /* nom des variables */ /* propriété */ /* substitution */ /* substitutions */

PVS: Prototype Verification System Un système de vérification Un assistant de preuve développé par le laboratoire d’informatique de SRI International Fourni une automatisation pour limiter le travail de l’utilisateur humain. Un langage de spécification Langage expressive :  Ordre logique supérieur  Un système fortement typé (non décidable)  Fonctions récursives totales L’outil PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion

Notions préliminaires Sets, relations, fonctions, séquences, lists, numéros, induction. Assistant de preuve Calcul basé sur les Séquents, commandes de preuve primitives, procédure de précision, arithmétique linéaire, congruence… [Stratégies, emacs+interface graphique, model checker] Types  Types de base : real, int, nat, bool…  Type de construction : records, abstract data types, functions, predicates, sets…  Type dépendant, type paramétré. L’outil PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion PVS: Prototype Verification System

Exemples : person : TYPE = [# age : nat, married ?: bool #] List[person] [person  nat] [person  bool] = pred[person] = setof[person] Proposions.pvs Propositions : THEORY BEGIN A, B, C: bool prop: THEOREM (A IMPLIES (B IMPLIES C)) AND (A IMPLIES B) AND (A IMPLIES B) AND (A IMPLIES C) END propositions L’outil PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion PVS: Prototype Verification System

PBS: Support pour la méthode B en PVS Développé par César Muñoz en 1999 Traduit une machine abstraite B en Théorie PVS Développé en utilisant l’approche du Shallow Embedding PBSPVS m.pbs *.pvs m.pvs L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion

PBS: Support pour la méthode B en PVS Une Machine PBS semblable à une machine abstraite B L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion OPERATIONS reset = BEGIN value := 0 END; next = PRE value < maxi THEN ANY val WHERE val : NAT & val value THEN value := val END MACHINE Counter(maxi) CONSTRAINTS maxi : NAT1 VARIABLES value INVARIANT value : NAT & value <= maxi INITIALISATION value := 0

PBS: Support pour la méthode B en PVS Une Machine PBS semblable à une machine abstraite B L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion OPERATIONS reset = value := 0 next = PRE `value < maxi' THEN ANY val : nat WHERE `val value' THEN value := val ENDANY END END counter counter [maxi:posnat]: MACHINE BEGIN PVS `IMPORTING VARIABLES value : `nat' INVARIANT `value <= maxi' INITIALIZATION value := 0

PBS: Support pour la méthode B en PVS Quelques différences:  Substitution: WHILE structure récursive de PVS SELECT peut être similés an PVS  Mots Clefs: SETS TYPES Certains mots clefs n’existent pas (CONSTRAINTS, PROPERTIES…) Le Raffinement La notion de raffinement existe en PVS Introduite grâce à 2 invariants dans une machine PBS INVARIANT et REFINE_INVARIANT L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion

PBS: Support pour la méthode B en PVS Théorie PVS de counter généré par PBS L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion % Theory: Counter Machine counter [ maxi:posnat ]: THEORY BEGIN % PVS Commands IMPORTING % General Type counter_Type : TYPE = [# value:nat #] % Invariant Type counter : TYPE = { self: counter_Type | value(self) <= maxi } % Initialization init : counter = LET self = (# value := 0 #) IN self % Operations reset(self:counter) : counter = LET self = self WITH [ value := 0 ] IN self next(self:counter | value(self) < maxi) : counter = LET self = LET val = choose! (val:nat) : ( val value(self) ) IN LET self = self WITH [ value := val ] IN self IN self END counter

PBS: Support pour la méthode B en PVS L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Raffinement  Introduite grâce à deux invariants : 1.INVARIANT 2.REFINE_INVARIANT counterRef [maxi:posnat]: REFINEMENT OF counter BEGIN VARIABLES value_ref : `nat' REFINE_INVARIANT `value_ref <= value' INITIALIZATION value_ref := 0 OPERATIONS next = value_ref := `value_ref + 1' END counterRef counterRef.pbs

PBS: Support pour la méthode B en PVS L’outil PBS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion counterRef [ maxi:posnat ]: THEORY BEGIN % Refinement Importing IMPORTING counter[maxi] … % Initialization init : counterRef = LET self = (# value_ref := 0 #) IN self init_ref : counterRef_Ref = (# counterRef := counterRef.init, counter := counter.init #)% Operations next(self:counterRef) : counterRef = LET self = self WITH [ value_ref := value_ref(self) + 1 ] IN self next_ref(self_ref:counterRef_Ref | value(counter(self_ref)) < maxi) : counterRef_Ref = (# counterRef := counterRef.next(counterRef(self_ref)), counter := counter.next(counter(self_ref)) #) END counterRef counterRef.pvs

Basé sur les séquents:  Hypothèses |– Conséquents Le prouveur PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Prouveur PVS 3 étapes:  Vérifier la syntaxe (parser)  Vérifier la sémantique (typechecker)  Prouver les TCCs (prover)

Générations de TCCs:  En utilisant les théorèmes  En utilisant la puissance du typage Le prouveur PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Prouveur PVS Preuves automatiques:  Commande (GRIND)  Commande (INDUCT-AND-SIMPLIFY) 2 types de preuves:  Preuves itératives  Preuves par induction

Commandes de bas niveau: (CASE), (INDUCT)  Simplifie les preuves  Facilite les preuves Le prouveur PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Prouveur PVS Les stratégies  Utilité  Généraliser les preuves

Point technique:  raffinement  Invariant de collage Le prouveur PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion Prouveur PVS

Problème rencontré:  Bug dans la sémantique de PBS N+2 N N+1N+2 N+…N+P N Machine abstraiteRaffinement N Le prouveur PVS Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion

Conclusion  Résultats de la comparaison  Difficultés Rencontrés  Les Ouvertures Conclusion Présentation du Projet La Méthode B L’outil PVS L’outil PBS Le prouveur PVS Conclusion

Questions ?