Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parLeila Ben Ayed Modifié depuis plus de 2 années
1
GLII: Spécification formelle et vérification de la sémantique dynamique Cours original proposé par : Prof.Leila Ben Ayed Cours repris et mis à jour par: Dr. Fadoua Ouamani
2
Chapitre II La méthode B AMN
3
Plan du chapitre II 01Présentation 02Notion de machine abstraite 03Les clauses d’une machine abstraite 04Les obligations de preuves 05Le substitutions généralisées 06Notations de modélisation des données 07Le processus de raffinement 08La modularité dans les spécifications B
4
Présentation: Définition de la méthode B “B is a method for specifying, designing, and coding software systems.” The B-book-assigning programs to meanings, J.R. Abrial Accompagner le processus de dévelpppement logiciel par un processus similaire de construction de preuves ( MATHÉMATIQUES ) Guarantir que le programme proposé est en accord avec sa siginification prévue Mêmes ingrédients: Abstraction Instanciation Décomposition
5
Présentation: Couverture de la méthode B 1. Aspect centraux du cycle de développement logiciel: Spécification (Machine abstraite) La conception par raffinements successifs de la machine abstraite La generation du code exécutable (dernière phase du raffinement) L’architecture en couches 2. Construction de preuves: Elaborer des preuves mathématiques pour justifier les résultats de chaque activité (phase) La collection de ces preuves à chaque activité (phase) permet de prouver l’exactitude du système développé
6
Présentation: Notion de machine abstraite Mécanisme de base de l’approche Concept très proche de certaines notions connues en programmation: Module, classes, types de données abstraits Le but étant de spécifier et non pas de programmer : Un pseudo-code non éxécutable (Ne contenant ni séquençages ni boucles) Deux parties: Partie statique: Pour la spécification des données et les lois statiques que les données doivent suivre (Invariants: conditions) Concepts mathématiques: Ensemble, Relations, Fonctions, Séquences, Arbres Partie dynamique: Pour la spécification des opérations proposées: Pré-condition: condition indispensable pour invocation de l’opération (activation) Action atomique: formalisée au moyen d’une généralisation de la notion de substitution (GSL:Generalized Substitution Langage) Données encapsulées dans la machine : accessibles qu’à travers ses opérations
7
Présentation: Notion de raffinement Raffinement vers une implémentation Machine abstraite M Raffinement 1: M1 Preuve du raffinement 3 éme …i ème raffinement Raffinement Preuve PA Preuve PR 1 Preuve PR 2 PA: propriété abstraite PR: propriété de raffinement remplaçant PA Raffinement 2: M2 … Raffinement n-1: M n-1 Preuve PR n-1 Raffinement n: M n Preuve PR n Implémentation … Du modèle intial d’une machine abstraite (sa spécification) en un pseudo-code permettant de générer un module exécutable (son code) Dernière phase du raffinement M2 raffine M1: Par tout où on utilise M1, M2 doit rendre le même service (même opérations) L'interface externe doit être conservée (input, output) Passage controlée par la méthode à base de preuves Le code final satisfait la spécification initiale. Raffinement utilisé comme technique de spécification
8
Présentation: Notion de raffinement Etapes de raffinement: Différentes étapes Controler soigneusement les transformations Dans chaque étape, la machine abstraite initiale est complètement reconstruite Conserve les mêmes opérations Les proprités abstraites initiales sont remplacées par des propriétés de raffinement Chaque propriété doit être vérifiée Vérifier la cohérence du modèle Chaque étape de raffinement doit être vérifiée Conformité du raffinement avec le modèle de machine abstraite du niveau supérieur
9
Présentation: Notion de raffinement Techniques de raffinement: Suppression des élements non exécutables du pseudo-code Suppression des pré-condtions et de l’indéterminisme (choix) Introduction des structures de contrôle classiques de la programmation Séquençage et boucles Transformation des structures de données mathématiques (en structures programmables Ensembles, fonctions, relations, arbres, séquences variables, tableaux, fichiers
10
Présentation: Notion de raffinement Architecture en couches Gérer le niveau de complexité en décomposant les raffinements Le dernier raffinement d’une machine abstraite est implémenté en utilisant la spécification d’une ou plusieurs machines abstraites qui sont elles même raffinables. Au moyen d’appels aux opérations proposées par la machine l'architecture en couches de notre système logiciel (ou de sa spécification informelle traduite) est construite pièce par pièce.
11
Présentation: Librairie et réutilisattion Library: Les machines sur lesquelles le dernier raffinement d'une machine donnée est implémenté peuvent exister avant ce raffinement. Avec la méthode, une série de machines abstraites prédéfinies est proposée. But: Encapsuler les structures de données les plus classiques. Il est conseillé d'étendre cette bibliothèque, base sur laquelle les futures machines abstraites de niveau supérieur seront implémentées. La méthode permet de choisir entre trois types d’approches Une conception purement descendante, ou une conception ascendante, ou Mieux, une approche mixte intégrant la réutilisation de la spécification et celle du code. Réutilisation:
12
Présentation: Génération de code et Atelier B Génération de code Le dernier raffinement d'une machine peut être facilement traduit dans un ou plusieurs langages de programmation impératifs (C, ADA, C++, …). la méthode apporte une solution au problème du portabilité d'une application d'un langage à un autre. Outil qui permet une utilisation opérationnelle de la méthode B Il offre, au sein d’un environnement cohérent, de nombreuses fonctionnalités permettant de gérer des projets en langage B. (A installer et se familiariser avec pour la prochaine séance) Atelier B
13
Présentation: L’approche … 1. On définit les données internes de la machine et leurs propriétés invariantes ; 2. On définit les opérations d’accès à la machine : pré-condition et transformation ; 3. L’atelier vérifie la syntaxe et le typage ; 4. L’atelier calcule les plus faibles pré-conditions et génère les preuves à faire ; 5. L’atelier tente de les prouver automatiquement ; 6. Si certaines preuves n’ont pas été démontrées, on détermine si : - l’opération est incorrecte et on la corrige - le prouveur n’est pas assez « fort » et on aide le prouveur à réaliser la démonstration
14
Notion de machine abstraite En B: On spécifie + On prouve + On développe + On code Un composant logiciel peut être vu comme une fonction Munie d’une mémoire Encapsule des données Dans la méthode B, un composant logiciel est appelé machine abstraite qui contient: Des données Des opérations Une (ou plusieurs) machine (s) abstraite (s)
15
Notion de machine abstraite Structure d’une machine abstraite PARTIE ENTETE Nom de la machine Paramètres de la machine Contraintes sur les paramètres PARTIE STATIQUE Déclaration d'ensembles Déclaration de constantes Propriétés des constantes Déclaration des variables (état) Invariant (caractérisation de l'état/lois statiques du système ) PARTIE DYNAMIQUE Initialisation des variables Opérations END
16
Notion de machine abstraite
17
Les clauses d’une machine abstraite MACHINE Nom de la machine abstraite SETS Déclaration des ensembles abstraits et énumérés CONSTANTS Définition des constantes PROPERTIES Propriétés sur les constantes VARIABLES Déclaration des variables INVARIANT Typage et propriété des variables INITIALISATION Définition de la valeur initiale des variables OPERATIONS Déclaration des opérations END Partie statique: Les données Partie dynamique: Les données
18
Les clauses d’une machine abstraite Partie statique: Les données La définition des données s’appuie sur un langage d’expressions les symboles désignant les données de base de la machine (ensembles abstraits, variables, constantes…) les expressions booléennes les expressions arithmétiques les ensembles, relations, fonctions, les suites… Ces données sont caractérisées par un invariant Une formule de la logique des prédicats exprimée au moyen de prédicats ensemblistes (appartenance, inclusion…) et d’opérateurs relationnels.
19
Les clauses d’une machine abstraite L’en-tête Un nom + optionnellement des paramètres pour la généricité Exemples: MACHINE MACHINE MACHINE réservation (Capacité) pile(ELEMENT) variable (TYPE) END END END Contraintes implicites: ces paramètres peuvent être soit de type scalaire soit des ensembles finis non vides (entièrement en Majuscules) Des contraintes explicites sur ces paramètres peuvent être définies dans une nouvelle clause CONSTRAINTS sous forme d’une conjonction de prédicats MACHINE reservation (max_nbPlace) CONSTRAINTS max_nbPlace NAT END
20
Les clauses d’une machine abstraite La clause SETS Définit la liste des ensembles qui seront utilisés pour typer les variables. Ensembles abstraits: Utilisés pour désigner des objets dont on ne veut pas définir la structure au niveau de la spécification (cette définition sera différée) Ensembles énumérés: Définis par la liste non vide et ordonnée de leurs éléments Exemple: MACHINE baseDeDonnees SETS PERSONNE; GENRE={masculin, féminin}; STATUT={enVie, décédée} …. END
21
Les clauses d’une machine abstraite La clause CONSTANTS Pour déclarer une liste de constantes. Exemple: MACHINE baseDeDonnees SETS PERSONNE; GENRE={masculin, féminin}; STATUT={enVie, décédée} CONSTANTS max_pers …. END
22
Les clauses d’une machine abstraite La clause PROPERTIES Un prédicat ou une conjonction de prédicats qui typent les constantes et spécifient des conditions sur les constantes et les ensembles de la machine abstraite. Exemple: MACHINE baseDeDonnees SETS PERSONNE; GENRE={masculin, féminin}; STATUT={enVie, décédée} CONSTANTS max_pers PROPERTIES max_pers NAT 1 card (PERSONNE) = max_pers END
23
Les clauses d’une machine abstraite La clause VARIABLES Elle introduit la liste des variables de la machine: l´état de la machine. Les seuls objets qui peuvent être modifiés directement dans INITIALISATION et OPERATIONS Cette clause doit être accompagnée des clauses INVARIANT et INITIALISATION. Elle peut être absente si la machine n'a pas de variables Exemples: Une machine sans variables MACHINE unité_arithmétique CONSTANTS min_ent, max_ent, ENTIER PROPERTIES min_ent = -2 31 max_ent = 2 31 - 1 ENTIER = min_ent.. max_ent … END
24
Les clauses d’une machine abstraite La clause VARIABLES Elle introduit la liste des variables de la machine: l´état de la machine. Les seuls objets qui peuvent être modifiés directement dans INITIALISATION et OPERATIONS Cette clause doit être accompagnée des clauses INVARIANT et INITIALISATION. Elle peut être absente si la machine n'a pas de variables Exemples: Une machine avec variables MACHINE Chaudière SETS ETATS = {arm, dsm} VARIABLES T, Alarme INVARIANT T NAT Alarme ETATS (T > 130) ⇒ (Alarme = arm) … END Il est fondamental qu’une machine avec variable soit munie d’un invariant il permet d’ exprimer les exigences de fonctionnement de la machine. Dans cet exemple, Il contient : Prédicats de typage des variables Des propriétés de sureté
25
Les clauses d’une machine abstraite La clause INVARIANT Elle regroupe un ensemble de prédicats (conjonction). Définissant les propriétés mathématiques des variables de la machine Typer les variables et définir certaines contraintes que doit vérifier l'état de la machine à tout moment. Cette clause est obligatoire si la clauses VARIABLE est présente. Les invariants de typage var ENSEMBLE Les propriétés sur les variables de la machine ou propriétés de sûreté ( (var1=TRUE var2=TRUE)) Les propriétés ensemblistes f SET1 SET2 N)
26
Les clauses d’une machine abstraite La clause INVARIANT Revenons à notre exemple de la machine réservation, nous voulons ajouter le détail sur la capacité en nombre de places et que le nombre de places disponibles ainsi que la capacité sont des entiers naturels positifs entre 0..maxint MACHINE reservation VARIABLES nbPlaceLibre, capacite INVARIANT nbPlaceLibre NAT capacite NAT nbPlaceLibre ≤ capacite END
27
Les clauses d’une machine abstraite La clause INITIALISATION Elle se compose des substitutions qui définissent les valeurs initiales de chaque variable propre à la machine. État initial de la machine Toute variable propre à la machine doit être initialisée. Cette initialisation doit satisfaire l'invariant de la machine. Cette clause est obligatoire si la clause VARIABLES est présente.
28
Les clauses d’une machine abstraite La clause OPERATIONS Pour la définition d’une liste d’opérations. Une opération permet de modifier les variables d’état Structure/signature: u← nomO(w) = PRE Q THEN V END En-tête: u : liste paramètres de sortie nomO: nom significatif de l’opération w: liste paramètre d’entrée Pré-condition: Q: conditions d’activation de l’opération et de typage des paramètres d’entrée Le résultat n’est défini que si la précondition est satisfaite. Substitution: V: une transformation des données internes (variables d’état) et une affectation de valeurs aux paramètres de sortie
29
Les clauses d’une machine abstraite La clause OPERATIONS Les opérations peuvent être paramétrées optionnellement par des listes de scalaires Les paramètres d’entrée (w) sont typés explicitement dans la pré-condition Q de l’opération. Les paramètres de sortie (u) sont typés implicitement en fonction de type des expressions définissant la valeur de ces paramètres dans la substitution V qui définit le comportement de l’opération vis à vis de l’état de la machine. NB. Les opérations d’une machine ne peuvent pas être référencées dans la machine où elles sont définies. La définition des opérations s’appuie sur le langage des substitutions généralisées La transformation de base est la substitution simple : devient égal, notée := Les autres transformations permettent de modéliser le résultat de tous les changements d’états réalisables par algorithmique Les boucles en particulier sont souvent modélisées par des substitutions indéterministes
30
Les clauses d’une machine abstraite La clause OPERATIONS Exemples: Revenons à notre machine Unité_arithmétique MACHINE Unité_arithmétique … OPERATIONS ecrire_nombre (a)... ; a ‹ — lire_nombre... ; c ‹ — plus (a, b)... ; c ‹ — moins (a, b)... ; c ‹ — mult (a, b)... ; c, d ‹ — div_mod (a, b)... ; END c ‹ — plus (a, b) = PRE a ENTIER b ENTIER a + b ENTIER THEN c := a + b END ;
31
Les clauses d’une machine abstraite La clause OPERATIONS Exemples:Revenons à notre machine Unité_arithmétique MACHINE Unité_arithmétique … OPERATIONS ecrire_nombre (a)... ; a ‹ — lire_nombre... ; c ‹ — plus (a, b)... ; c ‹ — moins (a, b)... ; c ‹ — mult (a, b)... ; c, d ‹ — div_mod (a, b)... ; END c, o ‹ — plus (a, b) = PRE a ENTIER b ENTIER THEN IF a + b ENTIER THEN c := a + b || o := false ELSE o := true END END;
32
Les clauses d’une machine abstraite La clause OPERATIONS Encore des Exemples: Revenons à notre machine Chaudière MACHINE Chaudière SETS ETATS = {arm, dsm} VARIABLES T, Alarme INVARIANT T NAT Alarme ETATS (T > 130) ⇒ (Alarme = arm) OPERATIONS changerT (v) = PRE v NAT v ≤ 130 THEN T := v END; … END
33
Les clauses d’une machine abstraite La clause OPERATIONS Encore des Exemples: Revenons à notre machine reservation MACHINE reservation VARIABLES nbPlacesLibres, capacite INVARIANT nbPlacesLibres NAT capacite NAT nbPlacesLibres ≤ capacite OPERATIONS reserver…? END reserver(nbPlaces)= PRE nbPlaces NAT1 nbPlaces ≤ nbPlacesLibres THEN nbPlacesLibres := nbPlacesLibres-nbPlaces END
34
Les clauses d’une machine abstraite Machine reservation avec réservation de places sur un vol limité à maxi places MACHINE RESERVATION1 CONSTANT Maxi PROPERTIES Maxi NAT VARIABLES Nb INVARIANT Nb 0..Maxi /*nbre de places*/ INITIALISATION Nb := Maxi OPERATIONS Réserver = PRE Nb 0 THEN Nb := Nb –1 END ; Libérer = PRE Nb Maxi THEN Nb := Nb + 1 END
35
Les clauses d’une machine abstraite Machine reservation avec réservation de places sur un vol limité à maxi places + gestion de réservation MACHINE RESERVATION2(Maxi) CONSTRAINTS Maxi NAT SETS RES = {succès, échec} VARIABLES Nb INVARIANT Nb 0..Maxi /*nbre de places*/ INITIALISATION Nb := Maxi OPERATIONS R1 Réserver IF Nb 0 THEN R1, Nb := succès, Nb -1 ELSE R1 := Echec END ; R2 Libérer IF Nb Maxi THEN R2, Nb := succès, Nb + 1 Else R2 := Echec END
36
Les clauses d’une machine abstraite Machine reservation avec réservation de places sur un vol limité à maxi places + gestion de réservation + gestion de places MACHINE RESERVATION3(Maxi) CONSTRAINTS Maxi NAT DEFINITIONS Sièges == 1..Maxi VARIABLES Occupés INVARIANT Occupés Sièges INITIALISATION Occupés := OPERATIONS Place Réserver PRE Occupés Sièges THEN ANY pp WHERE pp Sièges – Occupés THEN Place, Occupés := pp, Occupés {pp} END END ; Libérer (place) PRE place Occupés THEN Occupés := Occupés \ {place} END
37
Les obligations de preuves C’est la dernière étape de la spécification consiste à prouver la cohérence de chaque machine abstraite On prouve que l’initialisation vérifie l’invariant On prouve pour chaque opération que lorsque la machine est dans un état correct les propriétés invariantes I sont supposées vérifiées lorsque l’opération est appelée avec la pré-condition Q d’appel est supposée vérifiée alors sa transformation V amène la machine dans un état correct un état qui satisfait l’invariant I Les points fort de B sont la génération automatique des obligations de preuve et le raffinement
38
Les obligations de preuves MACHINE M VARIABLES Var INVARIANT I INITIALISATION Init OPERATIONS u nomO(w) = PRE Q THEN V END Calcul de l’obligation de preuve: Pour l’initialisation: Prouver que l’initialisation établit l’invariant [Init]I Pour chaque opération: Prouver que chaque opération, lorsqu’elle est appelée sous sa précondition, préserve l’invariant: I Q => [V]I
39
Les obligations de preuves Notation et signification: [x:=E]P: représente la formule P dans laquelle toutes les occurences libres de x sont remplacées par E Si V est x:=E alors [V]I décrit l’état de l’invariant après l’exécution de V Si x est une des variables utilisées dans I alors la substitution traduit bien l’effet de V
40
Les obligations de preuves Exemple: Barrière de passage à niveau On se propose d’écrire une machine abstraite en langage B pour spécifier le fonctionnement d’une barrière de passage à niveau présenté dans le premier chapitre sachant ue: Il peut y avoir plus qu’un un train (un train qui cache un autre train), la barrière doit rester dans ce cas baissée. levée baissée Train_arrive/N:=1 N:=0 Train_arrive/N:=N+1 Train_quitte(N>1)/ N:=N-1 Train_quitte(N=1)/ N:=0
41
Les obligations de preuves Exemple: Barrière de passage à niveau MACHINE PassageBarriere SETS ETATS={levée, baissée} VARIABLES etat, N INVARIANT etat ETATS N NAT (N>0 => etat=baissée) INITIALISATION etat:=levée || N:=0
42
Les obligations de preuves Exemple: Barrière de passage à niveau OPERATIONS train_arrive= PRE TRUE THEN IF etat=levée THEN N:=1 || etat := baissée ELSE N:=N+1 END END; train_quitte= PRE etat=baissée THEN IF N >1 THEN N:=N-1 ELSE N:=0 || etat := levée END
43
Les obligations de preuves Exemple: Barrière de passage à niveau Preuve de cohérence: Calcul de l’obligation de preuve: 1/ Pour l’initialisation: [init]I = [etat:=levée || N:=0] (etat ETATS N NAT (N>0 => etat=baissée)) = Levée ETATS 0 NAT (0>0 levée=baissée) Vrai (d’après la définition dans SETS) Vrai (def de NAT=0..maxint) (Faux Faux) = VRAI =VRAI l’initialisation établit bien l’invariant
44
Les obligations de preuves Exemple: Barrière de passage à niveau 2/ Pour l’opération train_arrive: Faire sur le tableau par un étudiant après un petit temps d’essai (10 minutes max)
45
Les obligations de preuves Exemple: Barrière de passage à niveau 3/ Pour l’opération train_quitte: Faire sur le tableau par un étudiant après un petit temps d’essai (10 minutes max)
46
Les substitutions généralisées Généralisation de la substitution simple de la logique classique (pour modéliser des comportements d’opérations). x, y, z : variables E, F, V: expressions P, J: Prédicats S, T: substitutions NomSyntaxe Substitution simplex:=E Substitution multiplex,y:=E, F Substitution sans effet (vide)skip Substitution pré-conditionnéeP|S Substitution gardéeP => S (Si P Alors S) Substitution à choix bornéS [] T Substitution à choix non borné@z.(P => S) Séquence de substitutionsS;T Substitution d’itérationw(P, S, J, V)
47
Les substitutions généralisées Substitution multiple: Syntaxes x := E | | y := F (substitutions multiples larges) x, y := E, F Sémantique [x, y := E, F] I [z := F][x := E][y := z]I [x := E | | y := F] I z étant une variable (fresh)
48
Les substitutions généralisées Substitution multiple: Exemple montrant comment x et y sont permutées: [x, y := y, x] (x < y) = [z := x][x := y][y := z] (x < y)= [z := x][x := y] (x < z)= [z := x] (y < z)= (y < x)
49
Les substitutions généralisées Substitution sans effet: spécifie que l’état de la machine n’est pas modifié Syntaxes Skip Sémantique [skip]I réduction:I
50
Les substitutions généralisées Substitution pré-conditionnée: Syntaxes P|S Sémantique [P | S ] IP [S]I PRE P THEN S END Exemple PRE x>0 THEN y:=y+x END
51
Les substitutions généralisées Substitution gardée: Forme et syntaxeSémantique IF P THEN S END [P ⇒ S] [P ⇒ S]I P ⇒ [S]I [(P ⇒ S) ( P ⇒ skip)]I IF P THEN S ELSE T END[IF P THEN S ELSE T END ]I (P ⇒ [S]I) ( P ⇒ [T]I) IF P1 THEN S1 [ELSIF P2 THEN S2 … [ELSIF Pn THEN Sn] [ELSE SE] END P1 ⇒ [S1]I P1 P2 ⇒ [S2]I … P1 P2 … Pn-1 Pn ⇒ [Sn]I P1 P2 … Pn-1 Pn ⇒ [SE]I
52
Les substitutions généralisées Substitution gardée: Exemple : machine chaudière IF v > 130 THEN T := v | | Alarm := arm ELSE T := v END
53
Les substitutions généralisées Substitution à choix borné: Syntaxes S [] TCHOICE S OR T END Sémantique [S [] T]I [CHOICE S OR T END]I [S]I [T]I Spécifier une opération comme un choix entre S et T Non déterminisme borné
54
Les substitutions généralisées Substitution à choix borné: Exemple: CHOICE x1 := x1 + 1 OR x1 := x1 - 1 END
55
Les substitutions généralisées Substitution à choix borné + garde: Syntaxes SELECT P1 THEN S1 [WHEN P2 THEN S2 … WHEN Pn THEN Sn] [ELSE SE] END Sémantique P1 ⇒ [S1] I P2 ⇒ [S2] I … Pn ⇒ [Sn] I P1 P2 … Pn ⇒ [SE] I Si les prédicats P1, …, Pn des différentes branches ne s’excluent pas mutuellement: plusieurs comportements sont possibles et il n’est pas précisé lequel sera effectivement implanté!!! Dans ce cas le comportement de la substitution SELECT est non déterministe. Si aucun des prédicats P1, …, Pn n’est valide et si la branche ELSE n’existe pas la substitution est non implémentable!!!
56
Les substitutions généralisées Substitution à choix borné + garde: Exemple SELECT x ≥ 0 THEN y := x² WHEN x ≤ 0 THEN y := - x² END
57
Les substitutions généralisées Substitution à choix borné : Selon (Case) Syntaxes CASE E OF EITHER L1 THEN S1 [OR L2 THEN S2 … OR Ln THEN Sn] [ELSE SE] END END Sémantique E {L1} ⇒ S1 [] E {L2} ⇒ S2 [] … E {Ln} ⇒ Sn [] E {L1,L2…Ln} ⇒ SE (en l absence de ELSE, SKIP) E une expression Li des listes de constantes toutes 2 à 2 distinctes et de même type que E (type de base sauf le type STRING) Déterministe puisque les listes sont supposées disjointes
58
Les substitutions généralisées Substitution à choix borné : Selon (Case) Exemple CASE x/10 OF EITHER 0 THEN x:=0 OR 2,4,8 THEN x:=2 OR 3,9 THEN x:=1 ELSE x:=-1 END
59
Les substitutions généralisées Substitution à choix non borné : Syntaxes @z.(P ⇒ S) ANY z WHERE P THEN S END Sémantique [@z.(P ⇒ S)]I z.[P ⇒ S]I z.(P ⇒ [S]I)
60
Les substitutions généralisées Substitution à choix non borné : Exemples: ANY x WHERE x*(x+1)=2 THEN x1,x2:=1,-2 END ANY r1, r2 WHERE r1 ∈ NAT ∧ r2 ∈ NAT ∧ r12 + r22 = 25 THEN SommeR := r1 + r2 END
61
Les substitutions généralisées Substitution à choix non borné : ses dérivées Substitution « devient élément de » x: E = ANY y WHERE y E THEN x:=y END Exemple : i1 : ∈ INT b1 : ∈ BOOL ; x1 : ∈ -10.. 10 ;
62
Les substitutions généralisées Substitution à choix non borné : ses dérivées Substitution « devient tel que » x:(P) = ANY y WHERE [x := y] P THEN x := y END Exemple : x:(x x$0) = ANY y WHERE y x THEN x:= y END x$0 représente la valeur de la variable x avant l’application de la substitution (valeur précédente)
63
Les substitutions généralisées Exercice : Spécification du fonctionnement du contrôleur de feux de circulation d‘un carrefour Revenir sur l’énoncé fourni dans le premier chapitre A faire pour la prochaine fois avant de venir en classe
64
Fin de la première partie du deuxième chapitre … A suivre … Questions?
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.