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.

Slides:



Advertisements
Présentations similaires
Symétrie, groupes ponctuels et groupes spatiaux
Advertisements

GESTION DE PORTEFEUILLE chapitre n° 7
Spécification et qualité du logiciel
Algorithmique Résume.
GEF 243B Programmation informatique appliquée
Niveau: 4ème Math Prof: Donia JEBALI Année Scolaire 2007/2008
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
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
Version du 22 juin Un outil danalyse statique (synthèse de propriétés) de preuve de propriétés de logiciels écrits en langage C ANSI, utilisé dans.
Quoi ? Un tampon.
Une galante introduction à la notion de machine abstraite en B «Le baron Warseberg, malgré quil entretenait la demoiselle Laforest voyait encore les filles.
8. Les tableaux P. Costamagna – ISEN N1.
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Les bases de l’Algorithmique
Cours d’Automatique MASTER OIV
La structure conditionnelle simple
Algorithmique et Programmation
Expressions et assignations
Les structures de contrôle conditionnelles
Programmation logique Logique des prédicats du premier ordre
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Sémantique axiomatique
Calcul Relationnel Chapitre 4, Section 4.3.
Équations différentielles.
Algorithmique et Programmation
Complément Le diagramme des classes
Etude dune bibliothèque: Permutations sur les listes.
Fonction exponentielle: enchaînement de théorèmes
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
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Partie II Sémantique.
Sémantique dénotationnelle
Programmation non procédurale Le projet ECOLE 2000
Structures alternative et répétitive
Animateur : Med HAIJOUBI
Programmation procédurale Transformations
Paradigmes des Langages de Programmation
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
Algorithmique et programmation en
Structures de contrôle
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)
Nouvelles Technologies Internet & Mobile
© Petko ValtchevUniversité de Montréal Février IFT 2251 Génie Logiciel Spécification de Processus Concurrents Hiver 2002 Petko Valtchev.
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
LES PRINCIPES DE LA THERMODYNAMIQUE
Évaluation et application des fonctions Let f = function x -> ( function y -> x+y );; Type :int -> (int ->int) int -> int ->int f int.
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.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Algèbre de Boole Définition des variables et fonctions logiques
Master IRAD - SPIN / PROMELA
Module algorithmique et programmation
Commande en temps fini (boucle ouverte)
Systèmes formels 1. Définition d'un SF Morphologie Théorie propre
Scripts et fonctions Instructions de contrôle
LOGIQUE ET PROGRAMMATION LOGIQUE
Introduction à l’utilitaire
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
EXPOSE FLASH 2 SI 28 24/10/2006 Delphine GODREAU Hélène PERRIER.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
MECANIQUE DES MILLIEUX CONTINUS ET THERMODYDAMIQUE SIMULATIONS.
Transcription de la présentation:

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 la valeur de ses variables Langage pour exprimer les propriétés des nouvelles valeurs des variables en fonction de leurs anciennes valeurs et déventuels paramètres (le quoi pas le comment) Le langage proposé = Substitutions généralisés Dispose de constructions proches de laffectation et des conditionnelles Absences de séquences et boucles Constructions adaptées à la spécification : pré-condition, substitution multiple, substitutions indéterministes

Spécifier les changements détats Utiliser des prédicats Pre-Post Convention une variable prime indique la valeur dune variable après lopération Exemple x = x +1 Dans le nouvel état la variable x a sa valeur incrémentée de 1 par rapport à sa valeur dans lancien état x > x Dans le nouvel état la valeur de la variable x nest pas connue mais elle sera supérieure à la valeur précédente

Exemple : Système de réservation à capacité infinie MACHINE Reservation VARIABLES nbPlaceLibre INVARIANT nbPlaceLibre NATURAL OPERATIONS reserver = … /* réserve une place */ ; annuler = … /* annule la réservation dune place */ END nbPlaceLibre = nbPlaceLibre + 1

Obligation de preuve Une opération doit respecter les lois statiques du système Si : la valeur des variables avant lopération respecte linvariant Alors : quelque soit les nouvelles valeurs prises par les variables parmi les valeurs caractérisées par le prédicat Pre-Post Forcément : ces nouvelles valeurs des variables respectent linvariant. Inv(v) => v.(PrePost(v,v) => Inv(v)) Exemple de annuler : nbPlaceLibre NATURAL => nbPlaceLibre. ( nbPlaceLibre=nbPlaceLibre+1 => nbPlaceLibre NATURAL )

Introduction des substitutions Objectif : simplifier lexpression des opérations et la démonstration des preuves Rappel : une substitution est une application des variables dans des expressions {x|->x+1, y|->y+1, z|->w, v|->x+y} En B on considère des substitutions simples portant sur une unique variable {x|->e} que lon note x:=e Lapplication dune substitution (simple) à une formule F consiste à remplacer dans la formule F toutes les occurrences dune variable libre x par une expression. On note [x:=e]F Exemple : [x:=x+1](x N) donne x+1 N

Remplacement des Pre-Post par des substitutions Théorème déquivalence entre substitution et prédicat Pre-Post fonctionnel x. (x=e => F) [x:=e]F si x na pas doccurrence libre dans e Application à lexemple précédent nbPlaceLibre NATURAL => nbPlaceLibre. ( nbPlaceLibre=nbPlaceLibre+1 => nbPlaceLibre NATURAL ) nbPlaceLibre NATURAL => [nbPlaceLibre := nbPlaceLibre + 1] (nbPlaceLibre NATURAL)

Simplification Suppression des variables prime Inv(v) [v:=v]Inv(v) Sur lexemple : nbPlaceLibre NATURAL => [nbPlaceLibre:=nbPlaceLibre+1] [nbPlaceLibre:=nbPlaceLibre](nbPlaceLibre NATURAL) Donc par composition : nbPlaceLibre NATURAL => [nbPlaceLibre:=nbPlaceLibre+1](nbPlaceLibre NATURAL)

Spécification des transformation fonctionnelle Toute transformation fonctionnelle dune variable peut donc être modélisée par une substitution simple [S] de type [x:=e] et engendrera lobligation de preuve : I => [S]I Avantage : simplification des preuves Pas de nouvelles variables Pas de quantificateur Lopération annuler sera donc modélisée : annuler = BEGIN nbPlaceLibre := nbPlaceLibre + 1 END

Le langage des substitutions généralisées Objectif : étendre la modélisation des transformations par des substitutions pour : Permettre lexpression de pré-condition Permettre les substitutions multiples Permettre lexpression de conditionnelles Permettre les substitutions indéterministes

La substitution précondition Objectif : spécifier des opérations « pas toujours utilisable » Exemple : reserver = BEGIN nbPlaceLibre := nbPlaceLibre - 1 END Obligation associée nbPlaceLibre NATURAL => [nbPlaceLibre:=nbPlaceLibre-1] nbPlaceLibre NATURAL qui donne nbPlaceLibre NATURAL => nbPlaceLibre-1 NATURAL non valide (cas où nbPlaceLibre=0). Lopération réserver nest utilisable que si il y a encore des places libres à réserver

La substitution précondition Exprimer la précondition [P|S], ou PRE P THEN S END Exemple reserver = PRE nbPlaceLibre 0 THEN nbPlaceLibre := nbPlaceLibre - 1 END Intuitivement cela signifie que La transformation S nest opérationnelle que si la condition P est remplie Sinon la machine peut se retrouver dans un état quelconque (ne respectant pas linvariant). Ce nest pas un si P alors S finsi !

La substitution pré-condition Interprétation de la précondition [P|S]F P [S]F Lobligation de preuve des opérations pré- conditionnées doit tenir compte du fait que lon ne veut prouver la préservation dinvariant que sous-condition de la précondition P I P => P [S]I I P => [S]I Sur lexemple : nbPlaceLibre NATURAL nbPlaceLibre 0 => nbPlaceLibre-1 NATURAL.

Les initialisations LINITIALISATION fixe létat (éventuellement indéterministe) initial Elle est modélisée par une substitution Qui ne dépend pas de valeurs préexistantes des variables Uniquement les SETS, CONSTANTS, paramètres de la machine Ne peut pas faire lobjet de pré-condition (ni de conditionnelles) Uniquement les substitution simples, multiples, indéterministes Lobligation de preuve associée est simplement : [S]I

Opérations avec paramètres Paramètres dentrée nécessitent lutilisation dune substitution pré-condition Au minimum typer ces paramètres. Paramètres de sortie imposent de définir à laide dune substitution simple la valeur (éventuellement indéterministe) du paramètre en sortie dopération Cette valeur ne donne pas lieu à vérification lors des obligations de preuve liées à la cohérence interne de la machine Mais utile pour les contrôles des appels de service

Opérations avec paramètres MACHINE AMACHINE BMACHINE C … … … s<--opX = opY(e) = opZ = BEGIN PRE BEGIN … P … s := Exp THEN v <-- A.opX ; … … B.opY(v) ; END END … END I A => [s :=Exp] [v :=s] [e :=v] P

Spécification défensive statut <-- reserver(nbPlace) = PRE nbPlace NATURAL THEN IF nbPlace nbPlaceLibre THEN statut, nbPlaceLibre :=TRUE, nbPlaceLibre – nbPlace ELSE statut := FALSE END substitution multiple et conditionnelle (choix borné et garde)

La substitution multiple Objectif : modifier simultanément plusieurs variables x,y:=Ex,Ey Sémantique : [x,y:=Ex,Ey] F [z:=Ey][x:=Ex][y:=z] F où z est une nouvelle variable napparaissant ni dans F, ni dans Ex Notation équivalente : x:=Ex || y:=Ey x,y:=Ex,Ey

Exemples res,val:=TRUE,f(x) homme,sexe:=, courant,ancien:=suiv(actuel),courant x,y:=y,x x:=y || y:=x+1

Le choix borné Objectif : Spécifier que limplémentation pourra au choix réaliser S ou T ou … Substitution indéterminisme S [] T CHOICE S OR …OR T END (en ASCII) Sémantique [S[]T]F [S]F [T]F

Exemple : inscription dans registre état civil res<--declarer(p,s)= PRE p PERSONNE-personne s SEXE THEN CHOICE personne := personne {p} || sexe(p) := s || res := ok OR res := impossible END Tient compte dimpossibilités non encore connues, mais qui pourront exister dans limplantation

La garde Objectif : Introduire une notion de faisabilité dune substitution Cas où une substitution S ne peut être réalisée que sous une certaine hypothèse P qui « garde » la substitution P==>S SELECT P THEN S END Sémantique [P==>S]F P => [S]F

Garde vs. Pré-condition Pré-condition P|S On ne se pose le problème détablir la propriété dun état POST que si on a auparavant prouvé que létat PRE respectait P (lors de lappel à lopération) Sil ne le respecte pas, la substitution échoue elle ne permet pas datteindre un état POST (si on force lexécution dune telle substitution, on sort du fonctionnement normal du service) Garde P==>S On fait lhypothèse de P pour établir la propriété de létat POST Si P nest pas vérifié, la substitution permet détablir nimporte quelle propriété pour létat POST On dira quelle est « infaisable ». Une telle substitution nest pas implantable !!!

Garde et Choix Borné = IF Une garde traduit bien lidée de la partie ALORS dune alternative qui nest réalisée que sous la condition du SI En combinant 2 gardes avec un choix borné, on peut donc spécifier le fonctionnement dun SiAlorsSinon IF P THEN S ELSE T END On dispose aussi dune forme particulière de IF introduite par lopérateur bool x:=bool(P) P==>S [] P==>T IF P THEN x :=TRUE ELSE x :=FALSE END

Retour sur reserver statut <-- reserver(nbPlace) = PRE nbPlace NATURAL THEN IF nbPlace nbPlaceLibre THEN nbPlaceLibre :=nbPlaceLibre – nbPlace || statut:=TRUE ELSE statut := FALSE END