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
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 Loutil PVS Loutil PBS Le prouveur PVS Conclusion Similitude avec B Sinitier à 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 Loutil PVS Loutil PBS Le prouveur PVS Conclusion Machine abstraite Raffinement Implantation
La Méthode B La Méthode B Présentation du Projet La Méthode B Loutil PVS Loutil 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 Counter.mch
PVS: Prototype Verification System Un système de vérification Un assistant de preuve développé par le laboratoire dinformatique de SRI International aux Etats-Unis Fournit une automatisation pour limiter le travail de lutilisateur Un langage de spécification Un langage expressif: Logique dordre supérieur Un système fortement typé (Le TypeCheck est non décidable) Fonctions récursives totales Loutil PVS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion
Notions préliminaires Ensembles, relations, fonctions, séquences, inductions. Assistant de preuves Calcul de Sequents, commandes de preuves primitives, procédure de décision, arithmétique linéaire… [Stratégies, model checker] Types Types de base : real, int, nat, bool… Types de construction : records, abstract data types, functions, predicates, sets… Types dépendants, types paramétrés. Loutil PVS Présentation du Projet La Méthode B Loutil PVS Loutil 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] Propositions.pvs Propositions : THEORY BEGIN A, B, C: bool prop: THEOREM (A IMPLIES (B IMPLIES C)) AND (A IMPLIES B) AND (A IMPLIES C) END propositions Loutil PVS Présentation du Projet La Méthode B Loutil PVS Loutil 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 PBSPVS m.pbs *.pvs m.pvs Loutil PBS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion
Une Machine PBS semblable à une machine abstraite B Loutil PBS Présentation du Projet La Méthode B Loutil PVS Loutil 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: Substitutions: WHILE structure récursive de PVS SELECT peut être simulée en PVS Mots Clefs: SETS TYPES Certains mots clefs nexistent pas (CONSTRAINTS, PROPERTIES…) Loutil PBS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion PBS: Support pour la méthode B en PVS
Théorie PVS de counter générée par PBS Loutil PBS Présentation du Projet La Méthode B Loutil PVS Loutil 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
Loutil PBS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion Raffinement introduit: Dans une machine PBS par deux invariants: 1.INVARIANT 2.REFINE_INVARIANT Dans une théorie PVS: grâce au mécanisme d importation 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
Basé sur les séquents: Hypothèses |– Conséquents Le prouveur PVS Présentation du Projet La Méthode B Loutil PVS Loutil 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 Loutil PVS Loutil 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) Simplifient les preuves Facilitent les preuves Le prouveur PVS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion Les stratégies Utilitées Généraliser les preuves Prouveur PVS
Point technique: raffinement Invariant de collage Le prouveur PVS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion Prouveur PVS
Problème rencontré: Invariant de collage Bug dans la sémantique de PBS N+2 N N+1N+2 N+…N+P N Sémantique en langage B Sémantique PVS N Le prouveur PVS Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion Prouveur PVS
Conclusion Résultats de la comparaison Difficultés Rencontrées Les Ouvertures Conclusion Présentation du Projet La Méthode B Loutil PVS Loutil PBS Le prouveur PVS Conclusion