La substitution identité

Post on 05-Jan-2016

28 views 0 download

description

La substitution identité. Objectif : permettre de spécifier le SI simple disposer d’une substitution qui spécifie que l’état de la machine n’est pas modifié skip Sémantique [skip]F  F Définition du IF IF P THEN S END . P==>S []  P==>skip. Forme générale du IF. - PowerPoint PPT Presentation

Transcript of La substitution identité

La substitution identité

Objectif : permettre de spécifier le SI simple disposer d’une substitution qui spécifie que l’état de la

machine n’est pas modifiéskip

Sémantique[skip]F F

Définition du IFIF P THEN S END P==>S [] P==>skip

Forme générale du IF

IF P1 THEN S1 P1==>S1 [][ELSIF P2 THEN S2 P1P2==>S2 []… …ELSIF Pn THEN Sn] P1P2…Pn-1Pn==>Sn

[][ELSE SE] P1P2…Pn-1Pn==>SE END (ou si pas de ELSE

skip)

Select = Garde et Choix Borné

Objectif : Exprimer un choix de substitution sous condition Idéal pour la spécification des interfaces utilisateurs

SELECT P1 THEN S1 P1==>S1 []

[WHEN P2 THEN S2 P2==>S2 []… …WHEN Pn THEN Sn] Pn==>Sn [][ELSE SE] P1P2…Pn==>SE END

Remarques Substitution non déterministe lorsque les Pi ne sont pas exclusifs Substitution infaisable lorsque la branche ELSE n’est pas présente

Construction d’un SELON

Soit E une expression et Li des listes de constantes toutes 2 à 2 distinctes et de même type que E

CASE E OFEITHER L1 THEN S1 E{L1}==>S1 [][OR L2 THEN S2 E{L2}==>S2 []… …OR Ln THEN Sn] E{Ln}==>Sn [][ELSE SE] E{L1,L2…Ln}==>SE END (ou si pas de ELSE skip)

END

Cette substitution est déterministe et toujours faisable !

Exemple de selon

CASE x/10 OFEITHER 0 THEN

x:=0OR 2,4,8 THEN

x:=1OR 3,9 THEN

x:=2ELSE

x:=-1END

END

Que vaut x après si x avant =3 ? 37 ? 142 ? 11 ? 46 ? 71?

Choix non borné

Objectif : généraliser le choix borné : laisser le choix entre plusieurs valeurs satisfaisant une propriété spécifiée On introduit une variable intermédiaire contrainte par une

formule P et on exprime la substitution avec cette variable

@z.(P==>S) ANY z WHERE P THEN S END

Sémantique [@z.(P==>S)]F z.[P==>S]F z.(P=>[S]F)

Comme pour le choix borné, il s’agit d’une substitution indéterministe qui de plus peut être infaisable si le prédicat P est insatisfiable.

Dérivées du choix non borné

Substitution « devient élément de » x:E @z.(zE==>x:=z)

Exemple : nbPlaceLibre:Natural

Substitution « devient tel que »x:(P) @z.([x:=z]P==>x:=z)

Exemple : x:(x<100 x>x$0)

Exemple

MACHINEReservation

VARIABLESCapacite, nbPlaceLibre

INVARIANTnbPlaceLibreNATURALcapaciteNATURAL

INITIALISATIONANY n WHERE

n NATURAL1THEN

capacite,nbPlaceLibre:=n,nEND

END

La substitution parallèle

Objectif : généraliser l’utilisation de la multiplicité à toutes les substitutions Donc conserver les propriétés basiques du parallélisme

[S||T] F [T||S] F[S||(T||U)] F [(S||T)||U] F

Mais interdire que deux substitutions « en parallèle » modifient la même variable !

Définition inductive vis-à-vis des autre substitutions x:=e || y:=f x,y:=e,f

skip || S S (P|S) || T P | (S||T) S[]T || U S||U [] T||U

P==>S || T P ==> (S||T) @x.(P==>S) || T @x.(P==>S||T) (x non libre dans

T)

Le bloc

Objectif : disposer d’un système de parenthésage

BEGIN S END

Ce n’est pas réellement une substitution mais cela fait partie du langage de modélisation des opérations

Sémantique[BEGIN S END]F [S]F

Base du langage des substitutions généralisés

x:=e

S||T

P|S

skip

S[]T indéterministe

P==>S infaisable (dans certains cas)

@x.(P==>S) indéterministe et infaisable (dans certains cas)

Application à la modélisation de services

Retour sur les réservations…

L’outil B : Atelier B ou B4free+Balbulette

La spécification (puis la conception) = rédaction de composants rassemblés dans un projet

Composant = Machine abstraite (MODEL ou MACHINE) Raffinement (REFINEMENT) Implantation (IMPLEMENTATION)

Module =

ModuleRef1.refModuleRef2.ref

…ModuleRefn.ref

Module.mch

ModuleImp.imp

Module.c

Activités de l’outil B

Analyse de composant Génération des obligations de preuve Preuve

Automatique Interactive

Génération de code

Analyse(s) de composant

Analyse lexicale Reconnaissance des différents catégories de

données = les lexèmes Remplacement des identificateurs de notions

définies par la définition associée Exemple : MOIS==1..12 Pas de définition récursive Un nouvel identificateur de notion pour chaque

définition Analyse syntaxique

Respect de la grammaire du B Analyse sémantique

Exemples d’application de définitions

OPERATIONSinitialiser = valeur := VAL_INIT ; incrementer = valeur := succ(valeur)

END

DEFINITIONSVAL_INIT == 1 ;succ(x) == x + 1 

END

OPERATIONSinitialiser = valeur := 1 ;incrementer = valeur := valeur+1

END

Analyse sémantique

Contrôle de typage Détermination du type de chaque identificateur Vérification de la bonne composition des expressions,

prédicats et substitutions Résolution des portées

Rattachement de chaque identificateur à son « introducteur »

Test de non-homonymie (nom de machine avec nom de variable…)

Contrôle de visibilité Respect des règles de réutilisation des autres

composants

Le typage B = les ensembles

Types de base Ensembles prédéfinis

Z (INTEGER) BOOL = {TRUE,FALSE} STRING

Ensembles abstraits et énumérés clause SETS paramètres formels majuscules de la machine)

Types complexes = des types construits à partir des types de bases à l’aide des opérateurs

x produit cartésien P ensemble des parties d’un ensemble

Règles de détermination du type d’une expression

Si e est un scalaire, type(e)= type de base auquel il appartient

Si e est identificateur, type(e) = déterminé par le prédicat de typage

Si e est de la forme e1|->e2, type(e)=T1xT2 où type(e1)=T, type(e2)= T2

Si e est un type de base E, type(e)=P(E)

Si e est un ensemble {e1,…}, type(e)=P(T) où T est le type des éléments de e

Si e est de la forme E1xE2, type(e)=P(T1xT2) où type(E1)=P(T1) et type(E2)=P(T2)

Si e est de la forme P(E) (ou un dérivé de cette notion : -->, <->,+->…), type(e)=P(T) où T est le type de E

Exemples : type(e)=

3 Z

Z P(Z)

{-5,2,-25} P(Z)

TRUE|->2 BOOL x Z

{2|->4,2|->5,3|->6} P(Z x Z)

{(5|->tom)|->TRUE, (3|->jean)|->TRUE} (avec tom et jean étant du type PERSONNE) P((Z x PERSONNE) x BOOL)

(0..10) x PERSONNE --> BOOL P(P((Z x PERSONNE) x BOOL))

Typage des identificateurs

Nécessité d’un prédicat de typage dès l’apparition de l’identificateur

VARIABLES INVARIANT CONSTANTS PROPERTIES Paramètres de MACHINE CONSTRAINTS ,… après la parenthèse ouvrante ANY, LET, VAR dès le WHERE

4 prédicats possibles idE avec type(E)=P(T) type(id)=T idE ou idE type(id)=type(E) id=e type(id)=type(e)

Cas particulier des paramètres de sortie Typés par la substitution

Exemples : type(v)=?

v Z Z

v (2000..2010) x ETUDIANT Z x ETUDIANT

v (2000..2010)<-->ETUDIANT P(Z x ETUDIANT)

v MODULE-->BOOL P(P(MODULExBOOL))

v = (0..4) x BOOL P(Z x BOOL)

Génération des obligations de preuve

1. Construction des formules à prouver

2. Application des substitutions

3. Normalisation

4. Simplification

Les formules à prouver

Chaque assertion Ai doit être déductible des propriétés invariantes I=>Ai

L’initialisation Init doit respecter les propriétés invariantes [Init]I 

Chaque opération simple Op doit maintenir les propriétés invariantes I => [Op]I 

Chaque opération pré-conditionnée P|Op doit maintenir les propriétés invariantes sous la pré-condition P I P => [Op]I 

Application des substitutions

On se ramène à des substitutions simples en utilisant les définitions du LSG [x<0==>x:=0 || y:=x] x<y [x<0==> (x:=0||y:=x)] x<y x<0 => [x:=0||y:=x] x<y x<0 => [z:=x][x:=0][y:=z] x<y

On applique les substitutions simples x<0 => [z:=x][x:=0]x<z x<0 => [z:=x]0<z x<0 => 0<x

Exemple

declarerSiPossible(s)=PRE

sSEXETHEN

IF x.(xPERSONNE-personne) THEN ANY p WHERE

pPERSONNE-personneTHEN

personne,sexe(p) :=personne{p},s END

ENDEND

Exemple

[IF x.(xPERSONNE-personne) THEN @p.(pPERSONNE-personne ==> personne,sexe(p) :=personne{p},s) END] (personnePERSONNE sexepersonneSEXE)

[x.(xPERSONNE-personne) ==> @p.(pPERSONNE-personne ==> personne,sexe(p) :=personne{p},s)] (personnePERSONNE sexepersonneSEXE) [x.(xPERSONNE-personne) ==> skip] (personnePERSONNE sexepersonneSEXE)

(x.(xPERSONNE-personne) => [@p.(pPERSONNE-personne ==> personne,sexe(p) :=personne{p},s)] (personnePERSONNE sexepersonneSEXE)) (x.(xPERSONNE-personne) => [skip] (personnePERSONNE sexepersonneSEXE))

(x.(xPERSONNE-personne) => p.(pPERSONNE-personne => [personne,sexe(p) :=personne{p},s)] (personnePERSONNE sexepersonneSEXE)) (x.(xPERSONNE-personne) => personnePERSONNE sexepersonneSEXE)

(x.(xPERSONNE-personne) => p.(pPERSONNE-personne => [new :=personne{p}][sexe :=sexe<+{p|->s}] [personne :=new](personnePERSONNE sexepersonneSEXE)) (x.(xPERSONNE-personne) => personnePERSONNE sexepersonneSEXE)

(x.(xPERSONNE-personne) => p.(pPERSONNE-personne => [new :=personne{p}][sexe :=sexe<+{p|->s}] (newPERSONNE sexenewSEXE)) (x.(xPERSONNE-personne) => personnePERSONNE sexepersonneSEXE)

(x.(xPERSONNE-personne) => p.(pPERSONNE-personne => [new :=personne{p}] (newPERSONNE sexe<+{p|->s}newSEXE)) (x.(xPERSONNE-personne) => personnePERSONNE sexepersonneSEXE)

(x.(xPERSONNE-personne) => p.(pPERSONNE-personne =>personne{p}PERSONNE sexe<+{p|->s}personne{p}SEXE) (x.(xPERSONNE-personne) => personnePERSONNE sexepersonneSEXE)

Normalisation

Objectif : limiter le nombre de règles à considérer Réécrire certains prédicats ou expressions des formules à

prouver par des prédicats ou expressions (sémantiquement) équivalents

Quelques exemples :n>m-1 mnm<n+1 mna<=>b (a=>b)(b=>a)aN aZ 0aAB AP(B)aB aB{x,y} {x}{y}rDA rD+->A dom(r)=D

Simplifications

Les preuves à faire sont des formules de la formeH1H2…Hm =>P1P2…Pn

On peut décomposer la preuve en n preuves plus simplesH1H2…Hm =>P1H1H2…Hm =>P2

…H1H2…Hm =>Pn

On peut éliminer les preuves dont le but apparaît comme une des hypothèses

H1H2…P … Hn=>P

Preuves triviales

Preuves

Séquents Règles d’inférences Axiomes Démonstration Théories Tactiques

Avant, arrière, « Ping-Pong »

Preuves interactives

Différents prouveurs [pr] le prouveur « théorie des ensembles »

Idem p0 et p1 extérieurs à [ip] [pp] le prouveur « FOL »

p0 et p1 internes à [ip]

Sélection des hypothèses prises en compte Introduction de lemme [ah] Preuve par cas [dc] Application de l’égalité [eh] [he]

Management des hypothèses

Hidden,Searched,Cached,Selected |-- Goal [sh] recherche d’hypothèses dans Hidden

Hidden Searched [sg] recherche d’hypothèses dans Searched

Searched Searched [sl] sélection d’hypothèses

Searched Selected ou Cached Selected [ds] désélection d’hypothèses

Selected Cached [dl] « suppression » d’hypothèses

Cached Hidden

Effet des prouveurs pp et pr

Ils travaillent Sur un ensemble réduit d’hypothèses

Selected |-- Goal En temps limité et interruptibles [it]

Résultats Bfalse : la formule n’est pas valide Fail to … : le but n’est pas démontrable avec

cette théorie et ces hypothèses Out of time… : on est certainement dans une

boucle infinie Success : la formule est démontrée

Réduire/Augmenter les hypothèses

Si trop d’hypothèses Risque de time-out [ds]

Si pas assez d’hypothèses Impossible à démontrer [sl]

Sélectionner juste les hypothèses nécessaires p1 sélectionne en + les hypothèses ayant un

identificateur commun avec ceux de selected et goal

Indication de lemme [ah]

Objectif : forcer un chemin dans l’arbre de preuve Le prouveur essai d’abord de prouver le

lemme à partir des hypothèses Le lemme devient donc le but courant

Puis le but final en utilisant le lemme comme hypothèse

Alternative : [as] fait l’inverse

La preuve par cas [dc]

Objectif : Lorsque le but est prouvable par des arguments différents selon les cas [dc] condition

on démontre le but sous cette condition puis on redémontre le but sous la condition

opposée : non(condition)

Application de l’égalité

Lorsque qu’une hypothèse est de la forme e1=e2

On peut remplacer dans selected et goal toutes les occurrences de e1 par e2 [eh] ou de e2 par e1 [he]