Introduction à la Méthode B

Documents pareils
Université de Sherbrooke, Département d informatique

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Génération de code à partir d une spécification B : Application aux bases de données

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Théorie de la Programmation

Algorithmique des Systèmes Répartis Protocoles de Communications

Vérification formelle de la plate-forme Java Card

Langage SQL : créer et interroger une base

ACTIVITÉ DE PROGRAMMATION

Classes et Objets en Ocaml.

Introduction à la programmation concurrente

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

OCL - Object Constraint Language

Qualité du logiciel: Méthodes de test

Formula Negator, Outil de négation de formule.

Continuité d une fonction de plusieurs variables

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Présentation du PL/SQL

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Intégrité des données

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Intégrité sémantique dans les bases de données relationnelles

Évaluation et implémentation des langages

Cours 1 : La compilation

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Génie Logiciel avec Ada. 4 février 2013

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Problèmes liés à la concurrence

Cours Composant 2. Qualité logicielle et spécications algébriques

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

3. Conditionnement P (B)

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Ordonnancement temps réel

Cours de Programmation 2

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Découverte de Python

Organigramme / Algorigramme Dossier élève 1 SI

Préparer un état de l art

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Recherche dans un tableau

Le Langage De Description De Données(LDD)

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

IFT2255 : Génie logiciel

as Architecture des Systèmes d Information

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours Informatique Master STEP

TP3 : Creation de tables 1 seance

Intelligence Artificielle Planification

Bases de Données relationnelles et leurs systèmes de Gestion

Les diagrammes de modélisation

Thème 3 Conception et vérification d architectures de systèmes sur puce

Cours de Master Recherche

Une introduction rapide à Coq

Certification de l assemblage de composants dans le développement de logiciels critiques

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Programmer en JAVA. par Tama

Java DataBaseConnectivity

Utilisation des tableaux sémantiques dans les logiques de description

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Attaques applicatives

MS SQL Express 2005 Sauvegarde des données

INTEGRITE ET BD ACTIVES

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Machines virtuelles Cours 1 : Introduction

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Cours Fonctions de deux variables

UML et les Bases de Données

Développement d un interpréteur OCL pour une machine virtuelle UML.

Théorème du point fixe - Théorème de l inversion locale

Cours 1 : Qu est-ce que la programmation?

STAGE IREM 0- Premiers pas en Python

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Cours Bases de données 2ème année IUT

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov

Plan du cours. Historique du langage Nouveautés de Java 7

Résolution de systèmes linéaires par des méthodes directes

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Java Licence Professionnelle CISII,

Programmation Web. Madalina Croitoru IUT Montpellier

Pourquoi l apprentissage?

Principes des langages de programmation INF 321. Eric Goubault

Les indices à surplus constant

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

TP 1. Prise en main du langage Python

Programmation avec des objets : Cours 7. Menu du jour

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Programme Compte bancaire (code)

Le modèle de Black et Scholes

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Transcription:

Yamine AIT-AMEUR IRIT/INPT-ENSEEIHT yamine@n7.fr 04 Février 2014

Plan Introduction 1 Introduction 2 Eléments du langage de modélisation Substitutions généralisées Obligations de preuve 3 Machine abstraite Raffinement 4 5

Plan 1 Introduction 2 3 4 5

Quels sont les modèles traités? Modèles caractérisés par - un état i.e. ensemble de variables - ensemble d actions pouvant modifier l état i.e. les variables 1 Quelles sont les propriétés satisfaites par ces modèles? 2 Comment prouver ces propriétés? 3 Comment obtenir du code à partir de ces modèles?

Développement de programmes avec B - Développement formel de programmes impératifs à partir de spécification Méthode - Raffinement de la spécification jusqu au code. - Succession de modèles liés par une relation de raffinement - Le dernier modèle est écrit dans un langage proche du code

Développement de programmes avec B : la spécification Machine Abstraite 1 Décrire les variables d état du système, 2 Exprimer l invariant i.e. propriétés satisfaites par les variables d état à l initialisation, avant et après toute opération manipulant les variables d état, 3 Spécifier enfin ces opérations

Développement de programmes avec B : le raffinement 1 Décrire (ou réécrire) les variables d état du modèle raffiné 2 Exprimer l invariant i.e. propriétés satisfaites par les (nouvelles) variables d état + l invariant de collage à l initialisation avant et après toute opération manipulant les variables d état 3 Réécrire (préciser) les opérations avec les (nouvelles) variables Attention, certaines constructions ne sont pas permises au niveau de la machine et des raffinements = Besoin d exprimer, ensembles, propriétés, opérations et transformations d états, machines et raffinements.

Eléments du langage de modélisation Substitutions généralisées Obligations de preuve Plan 1 Introduction 2 Eléments du langage de modélisation Substitutions généralisées Obligations de preuve 3 4 5

Eléments du langage de modélisation Substitutions généralisées Obligations de preuve Développement de programmes avec B : le langage de modélisation Expression de variables, constantes, opérations, invariants, théorèmes, 1 Théorie des ensembles SIEGES = 1..nb_max occupes SIEGES 2 Fonctions, relations 3 Logique des prédicats etat SIEGES BOOL etat 1 fonction réciproque. occupes = etat 1 [{TRUE}] x 1..1280 y 1..1024 Des opérations sont définies pour manipuler et construire des ensembles, relations, fonctions, et prédicats

Eléments du langage de modélisation Substitutions généralisées Obligations de preuve Développement de programmes avec B : le langage de modélisation 4 Substitutions généralisées Elles permettent de décrire les changements d états any x, y where pre x 1..1280 y 1..1024 x + 100 1280 y + 100 1024 then then x := x y := y x := x + 100 y := y + 100 ; ;

Substitutions généralisées Eléments du langage de modélisation Substitutions généralisées Obligations de preuve Substitutions permettant la modification d une variable Notation Nom skip substitution identité x := e substitution devient égal simple x, y := e, f substitution devient égal multiple x := e y := f x : (P) substitution devient tel que Substitutions permettant de structurer une opération Syntaxe de la substitution Nom de la substitution begin S bloc pre P then S pré-condition any l where G then S choix non borné

Calcul des substitutions généralisées Eléments du langage de modélisation Substitutions généralisées Obligations de preuve - Obligation de preuve : théorème à prouver - Triplet de Hoare {P} S {Q} - Weakest Precondition (WP) de Dijkstra P [S]Q - Plus faible pré-condition P qui établit Q après S [S]Q WP [x := E]Q Q(E x) Exemple [x := y + 5](x > y) y + 5 > y [S]Q WP [ pre P then S ]Q P [S]Q Exemple [ pre x > 0 (x > 0) then x := y + 5 (y + 5 > y) ](x > y) - Calcul de plus faibles pré-conditions Principe d extraction des obligations de preuve (OP)

Calcul des substitutions généralisées Eléments du langage de modélisation Substitutions généralisées Obligations de preuve [S]Q WP [x := E]Q Q(E x) [ pre P then S ]Q P [S]Q [ any l where G then S ]Q l.(g [S]Q) [ if P then S1 else S2 ]Q (P [S1]Q) (not P [S2]Q) [ select P then S ]Q1 P [S]Q Autres substitutions choice,let, while Utilisées en fonction du niveau de développement Synthèse automatique des obligations de preuve (OP) Les OP sont soumises à un démonstrateur de théorème (theorem prover) Preuves semi-automatiques, automatiques

Machine abstraite Raffinement Plan 1 Introduction 2 3 Machine abstraite Raffinement 4 5

Machine abstraite Raffinement Structure globale d une machine abstraite machine nom de la machine abstraite Partie statique déclaration d ensembles déclaration de constantes variables (état) invariant (caractérisation de l état) assertions (théorèmes) Partie dynamique initialisation de l état opérations sur l état

Machine abstraite Raffinement Machine Abstraite : partie statique machine nom de la machine Partie en-tête sets déclaration d ensembles constants déclaration de constantes properties définition de propriétés sur les constantes variables déclaration de variables (état) invariant définition de propriétés invariantes (caractérisation de l état) assertions Lemmes portant sur les variables Partie dynamique

Machine abstraite Raffinement Machine Abstraite : partie Dynamique Utilisation de substitutions généralisées Structuration d une opération Syntaxe de la substitution begin S pre P then S any l where G then S Nom de la substitution bloc pré-condtion choix non borné Modification de variables Notation Nom skip substitution identité x := e substitution devient égal simple x, y := e, f substitution devient égal multiple x : (P) substitution devient tel que

Machine abstraite Raffinement Machine Abstraite : partie Dynamique Composition de substitutions généralisées Exemples d opérations nom_op1 = begin s 1 s 2... s n nom_op2 (w) = pre P then s 1 s 2... s n nom_op3 = any l where G then s 1 s 2... s n nom_op4 (w) = pre P then any l where G then s 1 s 2... s n

Machine abstraite Raffinement Machine Abstraite : forme globale machine M (paramètre_1,..., paramètre_n) constraints X sets E constants c properties C variables v invariant I assertions A de la forme A 1 A 2 A n definitions D initialisation i operations u nom_op 1 (w) = pre P then S ; (...) On pose B = X E C

Machine Abstraite : un exemple Machine abstraite Raffinement machine variables Pixel x, y invariant x 1..1280 y 1..1024 initialisation x, y := 1, 1 operations posx abs = posx := x ; posy ord = posy := y ; random = any x, y where x 1..1280 y 1..1024 then x := x y := y ; move (dx, dy) = pre dx Z dy Z (x + dx) 1..1280 (y + dy) 1..1024 then x, y := (x + dx), (y + dy)

Machine Abstraite : cohérence Machine abstraite Raffinement 1 OP : assertions B I A 1... A i 1 A i Ordre de définition des assertions significatif 2 OP : initialisation A B [i]i 3 OP : opération oper = s OP associée A B I [S]I oper = s begin S ; oper = s pre P then S ; A B I [S]I A B I P [S]I oper = s any l where G then S ; A B I ( l.(g [S]I))

Machine abstraite Raffinement Machine Abstraite : exemple de cohérence 1 A, et B non renseignés 2 Initialisation. [i]i I x 1..1280 y 1..1024 [i]i [x, y := 1, 1](x 1..1280 y 1..1024) 1 1..1280 1 1..1024 3 Opérations move. Pré-condition I P [S]I. I x 1..1280 y 1..1024 P dx Z dy Z (x + dx) 1..1280 (y + dy) 1..1024, I P [S]I I P [x, y := (x + dx), (y + dy)](x 1..1280 y 1..1024) I P (x + dx) 1..1280 (y + dy) 1..1024

Le Raffinement Introduction Machine abstraite Raffinement Plusieurs raffinements peuvent être proposés pour une même spécification Denier niveau = implantation Traduction automatique dans un langage de programmation

Le raffinement : forme globale Machine abstraite Raffinement machine M (par_1,..., par_n) constraints X sets E constants c properties C variables v invariant I assertions A definitions D initialisation i operations u op 1 (w) = pre P then S ; (...) refinement N (par_1,..., par_n) refines M sets K constants d properties O variables v invariant J assertions A initialisation i operations u op 1 (w) = pre Q then T ; (...)

Le raffinement : cohérence Machine abstraite Raffinement J contient l invariant de collage "gluing invariant" Assertions conséquences des déclarations de l invariant A B B I J A 1... A n 1 A n Initialisation concrète raffinement initialisation abstraite A B B [i ] [i] J Chaque raffinement d opération est correct. B B A A I P Q [T ] [S] J

Plan 1 Introduction 2 3 4 5

Une machine et son raffinement : la machine reservation machine RESERVATION constants nb_max, SIEGES properties nb_max NAT1 SIEGES = 1..nb_max variables occupes, nb_libre invariant occupes SIEGES nb_libre 0..nb_max nb_libre = nb_max card(occupes) initialisation occupes, nb_libre :=, nb_max operations nb place_libre = begin nb := nb_libre ; place reserver = pre nb_libre 0 then any pp where pp SIEGES occupes then place := pp occupes := occupes {pp} nb_libre := nb_libre 1 ; rr liberer(place) = pre place SIEGES then if place occupes then rr, occupes, nb_libre := TRUE, occupes {place}, nb_libre + 1 else rr := FALSE

Une machine et son raffinement : le raffinement reservation1 refinement RESERVATION1 refines RESERVATION variables etat, nb_libre invariant etat SIEGES BOOL occupes = etat 1 [{TRUE}] initialisation nb_libre := nb_max etat := SIEGES * FALSE operations place reserver = any pp1 where pp1 etat 1 [{FALSE}] then place := pp1 etat(pp1) := TRUE nb_libre := nb_libre 1 ; rr liberer (place) = begin if etat(place) = TRUE then rr, nb_libre := TRUE, nb_libre + 1 else rr := FALSE etat(place) := FALSE

Plan 1 Introduction 2 3 4 5

B Introduction Mécanismes de modularité pour structurer - les développements - les preuves Traduction vers du code Nombreux outils disponibles : animateurs, model checkers, provers, visualisation, etc. AtelierB

Event B Introduction Description de systèmes à base d évènements Définition de systèmes de transitions - raffinements de systèmes de transitions - expression et preuve de propriétés temporelles Nombreux outils disponibles B et Event B B pour la production de code Event B pour la description des systèmes

FIN Conférence ABZ 2014 à Toulouse 2 au 6 Juin 2014 www.irit.fr/abz2014/ Etude de cas du Landing Gear