methode b formation niveau 1 - atelierb.eu · une plateforme logicielle libre dédiée à b-system...

104
METHODE B Formation niveau 1 juin 2005

Upload: lamthuy

Post on 12-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

METHODE B – Formation niveau 1

juin 2005

2 / 104

Table des matières

introductionà B méthode

formelle……avec preuve

utilisation de B

fondements

apports

le langage B logique des

prédicats

théorie des ensembles

substitutions

typage des données

clauses des composants

décomposition modulaire

notions de B modules B

composants B

machines abstraites

raffinements

implantations

projets B

3 / 104

Présentation de B

Une méthode formelle … méthode de spécification fondée sur un formalisme mathématique

… avec preuve la preuve garantit que le modèle est cohérent (dans tous les cas

possibles d’utilisation)

Utilisée pour modéliser un système

développer un logiciel

4 / 104

B et l’Atelier B :une méthode formelle pour

B pour modéliser des Systèmes

but : aider à comprendre, spécifier, concevoir, vérifier un système

une méthode pour aider à créer ou vérifier un système

nécessité d’accéder aux connaissances métier des concepteurs du système

pour comprendre en détails le fonctionnement du système

un modèle B système formalise

le système (matériel et logiciel)

son environnement (d’autres systèmes, les infrastructures, des procédures

gérées par des opérateurs)

couvre les aspects fonctionnels logiques du système, pas les calculs

numériques, (a priori) pas les exigences temps réel

5 / 104

B et l’Atelier B :une méthode formelle pour

B pour développer des logiciels (critiques de sécurité)

but : produire un code source conforme à ses spécifications par

construction (savoir exactement ce qui est prouvé)

un modèle B-Logiciel formalise le logiciel lui-même, à travers une

décomposition modulaire de procédures

couvre une sous partie du logiciel complet : le cœur fonctionnel logique,

pour 1 tâche/1 thread, (a priori) pas pour le logiciel de bas niveau (OS),

pas d’entrée/sortie directe

6 / 104

B-Logiciel : Références Industrielles

KVB: AlstomAutomatic Train Protection pour la SNCF,installé sur 6.000 trains depuis 199360.000 lignes de B; 10.000 lemmes; 22.000 lignes d’Ada

SAET METEOR: Siemens Transportation SystemsAutomatic Train Control: ligne 14 du métro, sans conducteur, à Paris(RATP), 1998. 3 logiciels de sécurité: bord, sol, ligne107.000 lignes de B; 29.000 lemmes; 87.000 lignes d’Ada

Roissy VAL: ClearSy (pour STS)Pilote Automatique Double Sens : pour le VAL de Roissy (ADP), 200628.000+155.000 lignes de B; 43.000 lemmes; 158.000 lignes d’Ada

7 / 104

B-Système : Références Industrielles

Peugeot Principes Formels de Fonctionnement des sous-systèmes

(éclairage, airbags, moteur, …) sur 3 modèles de voiture (307, 206, 407)pour l’après-vente de Peugeot

But : comprendre précisément le fonctionnement du véhicule,afin de construire des outils d’aide au diagnostique

RATP Modélisation du système de portes palières automatiques devant

équiper une ligne de métro déjà existante But : vérifier la cohérence des Spécifications Système

8 / 104

B-Système : Références

EADS Modélisation de l’ordonnancement des tâches du logiciel contrôlant

la séparation des étages d’une fusée Ariane

Étude d’un protocole de communication Preuve que l’algorithme d’un protocole de communication respecte

ses exigences

INRS (Institut National de Recherche sur la Sécurité) Modélisation d’une presse mécanique respectant les exigences

de sécurité (protection des mains de l’opérateur de la presse) Construction des spécifications logicielles du contrôleur de la presse

9 / 104

Notions de base

B est une méthode de spécification (et éventuellement de

programmation)

B permet de modéliser les propriétés d’un système, (description statique, description dynamique)

B est basé sur un langage mathématique

prédicats, booléens, ensembles, relations, fonctions

B est structuré

notion de module

notion de refinement

B est une méthode de création de modèles, validés par la preuve

validation par la preuve : debug systématique

10 / 104

Structuration

la notion de modules

pour décomposer un système ou un logiciel en sous parties

un module a une spécification, où formaliser :

les propriétés système

les exigences statiques

les exigences dynamiques

11 / 104

Structuration

la notion de raffinement la spécification d’un module est raffinée : elle est ré-exprimée avec

plus d’information :

ajout d’exigences

raffinement de notions générales par des notions plus détaillées(choix de conception)

en B-Logiciel, terminer par du code implémentable

un raffinement doit être cohérent avec ses spécifications(ceci doit être prouvé)

un raffinement peut à son tour être raffiné (colonne de raffinement)

en B-Logiciel, le dernier raffinement est appelé l’implémentation

12 / 104

Structuration

module B

Implémentation ou raffinement

spécification B

spécification du module

1er raffinement du module

2ème raffinement du module

3ème raffinement du module

13 / 104

Validation par la preuve

PreuveAutomatique

Examen des lemmes

lemme fauxPreuve

Interactive

100%

jusqu’à 97%des lemmes justes

16 lemmes / jour

Source B

BUG 10%

Génération automatique de lemmes

14 / 104

Développement B

Modèle abstraitSpécifications logicielles

Modèle concret

Code (ADA, C, …)

Traduction

Modélisation

ImplémentationPreuve de bonneimplémentation

Preuve depropriétés

Relecture

modèle B

15 / 104

B-Système

Modèle BSpécifications système

Réexpression en langage naturel

Remarques sur les doc système

Modélisation

Preuve decohérence

Conception système

16 / 104

Structuration B-Logiciel

module B

implémentation ou raffinement

spécification B

lien de décomposition

Modèle

Abstrait

Modèle

Concret

17 / 104

Avantages de B-Logiciel

Le Modèle Abstrait Les exigences sont exprimées en B module par module

Les spécifications informelles et formelles sont très proches (elles expriment toutes ce que le logiciel doit faire) pour minimiser les risques d’erreur

Certaines propriétés du logiciel sont modélisées en BElles renforcent le modèle B, puisqu’il faut prouver qu’elles sont préservées lorsque les modules sont assemblés

Le Modèle Concret Il faut prouver que le modèle concret implémente correctement

sa spécification (le modèle abstrait)

18 / 104

Avantages de B-Logiciel

L’ensemble du Modèle PAS d’erreur classique de programmation dans le code

(débordement, division par 0, indice hors limite, boucle infinie, alias)

Une architecture logiciel saine

Inutilité des Tests Unitaires

Les erreurs sont détectées plus tôt

Ces avantages perdurent même après quelques modifications/évolutions

19 / 104

Cycle de développement traditionnel

Spécification

Analyse système

Conception

Code

Tests Unitaires

TestsValidation

Tests Intégration

20 / 104

Cycle de développement B

Analyse système

Code

Tests Unitaires

Tests IntégrationSpécification

ConceptionPreuve

Preuve

TestsValidation

Preuve

21 / 104

Comparaison avec d’autres langages

assembleur pas de contrôle

C contrôles statiques limités (i.e. taille du type des données)

Ada contrôles statiques étendus (i.e. typage fort)

Méthode B contrôles statiques + contrôle du sens du programme

(en prouvant que les propriétés sont respectées par le modèle abstrait et en prouvant que le modèle concret implémente correctement le modèle abstrait)

22 / 104

Avantages de B-Système

Le Modèle B-Système Le principe fondamental est de comprendre de manière fine le système à

travers la modélisation B

Un travail en coopération avec les experts métier liés au système

Détecter plus tôt les erreurs, lors de la conception système,produire de meilleures Spécifications Logicielles

Remarques sur le système la plupart des questions sur le système apparaît lors de la création du modèle

quelques incohérences peuvent également être détectées grâce à la preuve du modèle B (puisque le modèle doit être cohérent dans tous les cas possibles qu’il décrit)

Produit des remarques intéressantes sur le système

une ré-expression du modèle en langage naturel qui décrit le système de manière précise, concise et fortement structurée

23 / 104

Les Outils

Atelier B (ClearSy)

créé pour supporter le développement de projets B-Logiciel industriels

un ensemble d’outils intégrés dans un outil de gestion de projets B vérificateurs statiques

génération automatique des obligations de preuve (lemmes)

prouveurs automatique et interactif

traducteurs de code : Ada, C, …

est également utilisé pour B-Système

B4free (www.b4free.com)

gratuit pour les universitaires/chercheurs et les détenteurs de l’Atelier B

le noyau de l’Atelier B + une nouvelle interface x-emacs

La plateforme Rodin (Septembre 2007)

une plateforme logicielle libre dédiée à B-System (en construction)

24 / 104

ClearSy : Activités liées à B

utilise B-Système de manière interne pour aider à comprendre,spécifier, vérifier un développement système

utilise B-Logiciel pour développer des logiciels critiques de sécurité(et aussi pour finir la preuve ou valider la preuve d’un logiciel B)

fait partie de la communauté B et s’emploie à créer desprocessus utiles basés sur B

formations à la Méthode B et à l’Atelier B

maintenance, distribution et support de l’Atelier B

25 / 104

Enseignement B

30 Universités/Laboratoires équipés

300 jeunes diplômés formés par an

26 / 104

Conclusion

B est un langage

B est une méthode de développement

B permet la modélisation cohérente de systèmes et la construction correcte de logiciels

B est utilisé dans l'industrie

B est supporté par l'Atelier B

B apporte des bénéfices à ses utilisateurs

27 / 104

Notions de B : modules

un module B correspond à la modélisation d’un sous système (éventuellement logiciel)

chaque module B gère son propre espace de données (encapsulation)

cf. classe (langages orienté objet)

type abstrait de données

paquetage (ADA)

un module B développé est constitué de plusieurs composants B :

une machine abstraite (la spécification du module)

d’éventuels raffinements (de cette spécification)

et une implantation (raffinement final : code)

ces composants sont organisés dans un projet B

28 / 104

Notions de B : composants

aspect statique

définition de l’espace d’état : ensembles, constantes, variables

définition des propriétés statiques des variables d’état : invariant

aspect dynamique

définition de la phase d’initialisation des données (variables d’état)

définition des opérations de consultation ou de modification de l’état

obligations de preuve

les propriétés statiques doivent être cohérentes

l’initialisation doit établir ces propriétés

les opérations doivent les préserver

29 / 104

Notions de B : machines abstraites

une machine abstraite constitue la spécification d’un module logiciel

elle définit un modèle mathématique de ce sous système :

description abstraite de son espace d’état et de ses états initiaux possibles

description abstraite des opérations pour consulter ou modifier l’état

ce modèle établit l’interface externe du module concerné :

propriétés respectées par toute implantation éventuelle

cette garantie est assurée par les preuvesau cours du développement formel

30 / 104

Notions de B : une machine abstraite

MACHINE

NomMachine

SETS

noms d’ensembles

CONSTANTS

noms de constantes

PROPERTIES

prédicat

ABSTRACT_VARIABLES

noms de variables

INVARIANT

prédicat

INITIALISATION

substitution

OPERATIONS

définitions d’opérations

END

aspect

statique

aspect

dynamique

forme générale

31 / 104

Notions de B : raffinements

composants qui raffinent une machine abstraite (ou l’un de ses raffinements)

il permettent d’enrichir et de concrétiser le modèle mathématique précédent

ils sont plus déterministes et plus concrets

raffinement des données :introduction de nouvelles variables avec invariant de liaison (changement de variables)

raffinement des opérations :transformation des opérations du composant raffiné

correction de développement :

chaque raffinement doit préserver les propriétés du modèle précédent

32 / 104

Notions de B : raffinements

REFINEMENT

NomMachine_nREFINES

NomMachine

...

ABSTRACT_VARIABLES

noms de variablesINVARIANT

prédicat

INITIALISATION

raffinement d’initialisationOPERATIONS

raffinements d’opérations END

forme générale

les données du composant raffiné

(ensembles, constantes et variables)

sont conservées

il n’est pas possible d’introduire

de nouvelles opérations

nouvelles variables

avec

leurs propriétés

+ invariant de liaison

33 / 104

Notions de B : implantation

un raffinement final, qui contient le programme informatique du module

IMPLEMENTATION

NomMachine_nREFINES

NomMachineVALUES

valuationsCONCRETE_VARIABLES

noms de variablesINVARIANT

prédicat

INITIALISATION

implantation d’initialisationOPERATIONS

implantations d’opérations END

forme générale

valuation des ensembles fixes

et constantes

variables d’implantation

avec

leurs structures de données

+ invariant de liaison

34 / 104

Notions de B : projets

un projet B est composé de modules B reliés entre eux

chaque module est formé de composants : une machine abstraite (sa spécification)

avec éventuellement des raffinements et une implantation

les principaux liens entre modules sont :

les liens IMPORTS (l’arbre de décomposition modulaire)

les liens SEES (consultations transversales dans cet arbre)

des sous projets peuvent être regroupés en librairies,et réutilisés dans différents projets

un projet B permet de développer un logiciel (traduction en Ada, C, C++)

ce logiciel peut être utilisé par un logiciel développé de manière classique

il peut également utiliser des logiciels classiques

35 / 104

Notions de B : que prouve-t-on ?

Appel 1 Opération

Appel n Opération

Spécification Spécification Spécification

Appel de l’initialisation

Appel 1 Opération

Appel n Opération

Implantation Implantation Implantation

l’invariantn’est pas

établi

est consistant avec

l’invariantest

établi

l’invariantest

établi

l’invariantest

établi

est consistant avec est consistant avec

Appel de l’initialisation

36 / 104

Le Langage B

ordre de présentation logique des prédicats

théorie des ensembles

substitutions

typage des données

forme des composants

décomposition modulaire

37 / 104

Le Langage B : logique des prédicats

prédicats ce sont les constructions de base pour exprimer des propriétés

un prédicat est une formule logique qui peut être vraie ou fausse

les équations, inéquations et tests d’appartenance sont des prédicats

ex. : x = 3

5 < 2x : {1, 2, 3}

leurs négations, conjonctions ou disjonctions sont également les prédicats

ex. : x + y = 0 & x < y

38 / 104

Le Langage B : logique des prédicats

propositionsn P négation de P (NON logique)

P & Q conjonction de P et Q (ET logique)

P o Q disjonction de P et Q (OU logique)

P y Q implication : n P o Q

utilisation : si P est vrai, alors Q doit être vraiP e Q équivalence : P y Q & Q y P

prédicats quantifiés! x. ( Px y Qx ) universel

# x. ( Px ) existentiel : n ! x. (n Px )

sur le

papiern&oye!#

sur les

claviers

not

&

or

=>

<=>

!

#

39 / 104

Le Langage B : logique des prédicats

prédicats d'égalité soient x et y deux expressions

x = y x égal à y

x y non égalitén ( x = y )

prédicats d’inégalité soient x et y deux entiers

x < y x strictement inférieur à yx < y x inférieur ou égal à y

x > y x strictement supérieur à yx > y x supérieur ou égal à y

sur le

papier

=d<<>>

sur les

claviers=

/=

<

<=

>

>=

40 / 104

Le Langage B : logique des prédicats

prédicats ensemblistes soient x une expression,

X et Y deux expressions d’ensemblesx : X appartenance : x est un élément de X

x / X non appartenance

X ( Y inclusion : X est un sous ensemble de Y

X - Y non inclusion

X è Y inclusion stricte : X è Y e X ( Y & X d Y

sur le

papier:/(-è_

sur les

claviers:

/:

<:

/<:

<<:

/<<:

41 / 104

Le Langage B

Les expressions décrivent les valeurs des données

Le prédicat x+1 = 0 correspond à l’égalité de 2 expressions

Elles sont basées sur la théorie des ensembles ensembles

sous ensembles

ensemble booléen

ensembles numériques

ensembles de couples

relations

fonctions

suites

42 / 104

Le Langage B : théorie des ensembles

ensembles explicites ensemble vide : 0 ensemble fini, défini en extension : {x1, …, xn}

ex. : {a, b, c}{1, x + 1, y - 2}

intervalle d’entiers : x .. y

ensemble fini d’entiers compris entre x et y :z : x..y e z > x & z < y

ex. : 1..3 = …3..2 = ...

ensembles définis en compréhension{ x | Px } ensemble des valeurs de x vérifiant le prédicat P

ex. : { x | x : 1..5 & x mod 2 = 0 } = ...

sur le

papier0

sur les

claviers

{}

43 / 104

Le Langage B : théorie des ensembles

expressions d’ensemble soient X et Y deux expressions d’ensembles union de X et de Y : X u Y

z : (X u Y) e z : X o z : Yex. : {1, 3, 5} u 1..3 = ...

intersection de X et de Y : X i Yz : (X i Y) e z : X & z : Yex. : {1, 3, 5} i 1..3 = ...

différence de X et de Y : X - Yz : (X - Y) e z : X & z / Y

ex. : {1, 3, 5} - 1..3 = ...1..3 - {1, 3, 5} = ...

sur le

papierui

sur les

claviers\/

/\

44 / 104

Le Langage B : théorie des ensembles

Ensemble des parties soit X un ensembleP (X ) ensemble des parties (ou des sous ensembles) de X

x : P(X ) e x ( X

P 1 (X ) ensemble des parties non vides de XP1(X ) = P(X ) - {0}

ex. : P ({a, b, c}) = ...P1 ({a, b, c}) = ...

F (X ) ensemble des parties finies de X

F1(X ) ensemble des parties finies et non vides de XF1(X ) = F(X ) - {0}

sur le

papierPP1

FF1

sur les

claviersPOW

POW1

FIN

FIN1

45 / 104

Le Langage B : théorie des ensembles

constantes booléennes TRUE, FALSE constantes prédéfinies

ensemble des booléensBOOL ensemble fini prédéfini :

BOOL = {FALSE, TRUE}

expressions booléennessoit P un prédicat

bool(P ) vaut TRUE si P est vrai, FALSE sinonex. : bool(P) = bool(Q) e ...

46 / 104

Le Langage B : expressions numériques

cardinal d’un ensemble fini (nombre d ’éléments) : card (X )ex. : card ({1,3,5}) = ...

card (3..2) = ...

maximum, minimum d’un ensemble fini non vide d’entiers :max (X ), min (X )

ex. : max ({1,3,5}) = ... min ({1,3,5}) = ...

opérateurs arithmétiques (sur les entiers relatifs)

pred (x ), succ (x ) prédécesseur, successeur

x + y, x - y addition, soustractionx * y, x / m multiplication, division entière

x mod m modulo

x n puissance

sur le

papier*

x n

sur les

claviers*

x ** n

47 / 104

Le Langage B : expressions numériques

ensembles d’entiersZ ensemble des entiers relatifs (> 0 et < 0)

N ensemble des entiers naturels (> 0)

N1 ensemble des entiers naturels positifs (> 0)

constantes numériques MAXINT plus grand entier relatif implémentable

MININT plus petit entier relatif implémentable

INT = MININT .. MAXINT

NAT = 0 .. MAXINT

NAT1 = 1 .. MAXINT

sur le

papierZNN1

sur les

claviersINTEGER

NATURAL

NATURAL1

48 / 104

Le Langage B : couples

expressions de couplesoient x et y deux éléments

x, y couple ordonnéx m y « maplet » (x est associé à y)

x m y = x, y

produit cartésienproduit cartésien de 2 ensembles X et Y :X * Y ensemble des couples x m y tels que x : X et y : Y

ex. : {0, 1} * {a, b, c} = ...

sur le

papierm*

sur les

claviers

|->

*

49 / 104

Le Langage B : relations

relations une relation d’un ensemble de départ X dans un ensemble

d’arrivé Y est un sous ensemble du produit cartésien X * Y,c’est a dire un ensemble de couples (x m y) dont le premier

élément appartient à X et le second à Y

conséquence : les opérations sur les ensembles s’appliquent également aux relations

ensemble de relations ensemble des relations de X dans Y : X 1 Y

X 1 Y = P (X * Y )

sur le

papier1

sur les

claviers

<->

50 / 104

Le Langage B : relations

relations explicitesex. : 0 (relation vide)

{2 m a,2 m c,3 m d,4 m b,4 m d}

1

2

3

4

a

b

c

d

e

51 / 104

Le Langage B : opérations sur des relations

soient R une relation de X dans Y

dom (R) domaine de la relation R (sous ensemble de X )x : dom (R) e # y. ( y : Y & x m y : R )

ex. : dom ({2 m a, 2 m c, 3 m d, 4 m b, 4 m d}) = ...

ran (R) range de la relation R (sous ensemble de Y ) :y : ran (R) e # x. ( x : X & x m y : R )

ex. : ran ({2 ma, 2 m c, 3 m d, 4 m b, 4 m d}) = …

soient R une relation de X dans Y, et S un sous ensemble de X

R [S] image par la relation R (sous ensemble de Y ) de l’ensemble Sy : R [S] e # s. ( s : S & s m y : R )

ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} [ {1,2,3} ] = ...

52 / 104

Le Langage B : expressions relationnelles

soit X un ensemble

id (X ) identité sur Xx m x : id (X ) e x : X

ex. : id ({a, b, c}) = ...

soient R une relation de X dans Y

R -1 relation inverse, de Y dans Xy m x : R-1 e x m y : R

ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d}-1 = ...

sur le

papier

R -1

sur les

claviers

R ~

53 / 104

Le Langage B : expressions relationnelles

composition des relations R1 et R2 : R1 ; R2x m z : (R1 ; R2) e # y. (y : Y & x m y : R1 & y m z : R2)

ex. : { 0 m 0, 1 m 0, 1 m 1 } ; {2 m0, 2 m1, 2 m2} = ...

1

2

3

4

a

b

c

d

e

0

1

2

3

4

54 / 104

Le Langage B : expressions relationnelles

restriction sur l’ensemble de départ : S r R

conservation des couples dont le premier élément appartient à SS r R = id (S ) ; R

ex. : {1, 2, 3} r {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} = ...

restriction sur l’ensemble d’arrivée : R R S

conservation des couples dont le second élément appartient à S

R R S = R ; id ( S )

ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} R {b, c, d} = ...

sur le

papierrR

sur les

claviers

<|

|>

55 / 104

Le Langage B : expressions relationnelles

suppression sur l’ensemble de départ : S a R

suppression des couples dont le premier élément appartient à SS a R = id (dom(R) - S) ; R

ex. : {1, 2, 3} a {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} = ...

suppression sur l’ensemble d’arrivée : R A S

suppression des couples dont le second élément appartient à SR A S = R ; id (ran(R) - S)

ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} A {b, c, d} = ...

sur le

papieraA

sur les

claviers

<<|

|>>

56 / 104

Le Langage B : expressions relationnelles

soient R1 et R2 deux relations de X dans YR1 + R2 surcharge de la relation R1 par la relation R2, relation

dont les éléments sont les couples de R1 tels que le premier élément n’appartient pas à dom(R2), ainsi que tous les couples de R2 :R1 + R2 = (dom(R2) a R1) u R2

ex : {0 m 1, 1 m 1} + {0 m 0} = ...

{2 m a, 2 m c, 3 m d, 4 m b, 4 m d}+ {1 ma, 2 m b, 2 m c, 3 m e} = ...

sur le

papier+

sur les

claviers

<+

57 / 104

Le Langage B : fonctions

rappel

définition : une relation d’un ensemble de départ X dans un ensemble d’arrivé Y est un sous ensemble du produit cartésien X * Y, c’est-à-dire un

ensemble de couples dont le premier élément appartient à X et le second à Y

conséquence : les opérations sur les ensembles s’appliquent également aux relations

cas spécial

définition : une fonction d’un ensemble de départ X dans un ensemble d’arrivé Y est une relation de X dans Y, où chaque élément de X est associé à au plus un élément de Y

conséquence : les opérations sur les relations s’appliquent également aux fonctions

58 / 104

Le Langage B : fonctions

applications de fonctionsvaleur de la fonction F en x (un élément de dom(F)) : F (x)

c’est l’unique élément associé à x par F : x mF (x) : Fex : f = { 0 m a, 1 m b, 2 m a }

f (1) = ...

fonctions définies par expressionssoient x un nom, X un ensemble et E une expression (en x)% x. ( x : X | Ex ) définition explicite en forme de %-expression :

fonction constituée des couples x m Ex, où x : Xex. : plus2 = % z. ( z : Z | z + 2 )

plus2 (1) = ...

sur le

papier%

sur les

claviers

%

59 / 104

Le Langage B : ensembles de fonctions

définition : une fonction de l’ensemble X dans l’ensemble Y s’appelle une fonction partielle

ensemble des fonctions partielles de X dans Y : X 2 Y

F : X 2 Y e F : X 1 Y & (F-1 ; F) ( id(Y)

définition : une fonction totale de X dans Y est une fonction partielle de Xdans Y dont le domaine est égal à X

ensemble des fonctions totales de X dans Y : X 3 Y

F : X 3 Y e F : X 2 Y & dom(F) = X

sur le

papier23

sur les

claviers

+->

-->

60 / 104

Le Langage B : ensembles de fonctions

fonctions injectives définition : une injection partielle est une fonction partielle de

X dans Y tel que chaque élément du range a un et un seul antécédent

ensemble des injections partielles de X dans Y : X 4 Y

F : X 4 Y e F : X 2 Y & F -1 : Y 2 X

définition : une injection totale est une injection de X dans Ydont le domaine est égal à X

ensemble des injections totales de X dans Y : X 5 Y

X 5 Y = X 4 Y i X 3 Y

sur le

papier45

sur les

claviers

>+>

>->

61 / 104

Le Langage B : ensembles de fonctions

fonctions surjectives définition : une surjection partielle est une fonction de X dans Y

dont le range est égal à Y ensemble des surjections partielles de X dans Y : X 6 Y

F : X 6 Y e F : X 2 Y & ran(F) = Y

définition : une surjection totale est une surjection de X dans Ydont le domaine est égal à X

ensemble des surjections totales de X dans Y : X 7 Y

X 7 Y = X 6 Y i X 3 Y

sur le

papier67

sur les

claviers

+->>

-->>

62 / 104

Le Langage B : ensembles de fonctions

fonctions bijectives définition : une bijection partielle est une fonction de X dans Y

qui est injective et surjective ensemble des bijections partielles de X dans Y : X 6 Y

X 8 Y = X 4 Y i X 6 Y

définition : une bijection totale est une fonction totale de X dans Yqui est injective et surjective

ensemble des bijections totales de X dans Y : X 9 Y

X 9 Y = X 5 Y i X 7 Y

L’inverse d ’une bijection partielle est une ...

sur le

papier89

sur les

claviers

>+>>

>->>

63 / 104

Le Langage B : suites

suites

définitionsune suite dont les «éléments» appartiennent à un ensemble X est une fonction totale d’un intervalle 1..n dans X, où n : Nles éléments de la suite correspondent aux seconds éléments des couples de cette fonction, et ils sont ordonnés par les premiers

ex. : {1 m a, 2 m b, 3 m c}

conséquence : les opérations sur les fonctions s’appliquent également aux suites

suites explicites

suite vide : []

suite en énumérationex. : [a, b, c] = {1 m a, 2 m b, 3 m c}

64 / 104

Le Langage B : opérations sur les suites

taille de la suite S : size (S )

ex. : size ([]) = 0size ([a, b, c]) = 3

premier élément d’une suite non vide S : first (S) = S (1)

ex. : first ([a, b, c]) = a

dernier élément d’une suite non vide S : last (S) = S (size(S))

ex. : last ([a, b, c]) = c

inversion de la suite S : rev (S)

ex : rev ([a, b, c]) = [c, b, a] insertion de l’élément x en tête de la suite S : x k S

ex : a k [b, c] = [a, b, c]

insertion de l’élément x en queue de la suite S : S j x

ex : [a, b] j c = [a, b, c]

sur le

papierjk

sur les

claviers

<-

->

65 / 104

Le Langage B : opérations sur les suites

concaténation des suites S1 et S2 : S1 ) S2

ex : [a, b, c] ) [c, b, a] = [a, b, c, c, b, a]

restriction aux n éléments en tête de la suite S : S q nex. : [a, b, c] q 2 = [a, b]

suppression des n éléments en tête de la suite S : S w nex. : [a, b, c] w 2 = [c]

suppression du premier élément en tête de la suite S : tail (S)

ex. : tail ([a, b, c]) = [b, c]

suppression du dernier élément de la suite S : front (S)

ex. : front([a, b, c]) = [a, b]

sur le

papier) qw

sur les

claviers

^

/|\

\|/

66 / 104

Le Langage B : ensembles de suites

ensemble des suites de X : seq (X )

ensemble des suites non vides de X : seq1 (X )

ensemble des suites injectives de X : iseq (X )

ensemble des suites injectives non vides de X : iseq1 (X )

ensemble des suites bijectives de X : perm (X )(ensemble des permutations de X)ex. : perm ({a,b,c}) = {[a,b,c], [a,c,b], [b,a,c], [b,c,a], [c,a,b], [c,b,a] }

67 / 104

Le Langage B : substitutions

les substitutions permettent de représenter les transformations qu’opèrent les programmes sur les données

donc elles permettent de transformer l’état d’un système

elles concernent une certaine liste de variables

on définit mathématiquement comment un prédicat P est transformé par l’application d’une substitution S, que l’on note : [S] P

ex. : [x := 2] (x > 1) e (2 > 1)

68 / 104

Le Langage B : substitutions

les substitutions servent à décrire à la fois la dynamique des spécifications (machine abstraite) et du code B0 (implantation)

spécifications [Spec]elles décrivent les propriétés d’un programmeelles peuvent être non déterministes

ex. : substitutions « devient tel que »

implantation [Code B0]instructions classiques d’un langage de programmation(":=", ";", IF, CASE, WHILE, appel d’opération, instruction nulle, variable locale, bloc d’instructions)

69 / 104

Le Langage B : substitutions

substitution nulle [Spec, Code B0]

skip aucune variable n’est modifiée (quelle liste de variables ?)

substitution « devient égal » [Spec, Code B0]

on remplace une variable par une expressionex. : v := 0

x := y + 1f(i) := m

substitution « devient élément de » [Spec]

on remplace une variable par un élément d’un ensembleex. : v :: (1..3)

70 / 104

Le Langage B : substitutions

substitution « devient tel que » [Spec]

v : (Pv)la variable v est remplacée par une valeur qui établis le prédicat Px

ex. : x :(x : NAT & x mod 3 = 1)

résultats de la division de n par m, où n : N et m : N1

(q, r) : (q : N & r : N & n = (m * q)+ r & r < m)

la valeur précédente de v peut être référencée dans Pv par v$0ex. : x :(x : INT & x > x$0)

71 / 104

Le Langage B : substitutions

substitution simultanée [Spec]

S1 || S2

accomplissement simultané des substitutions S1 et S2,où les variables modifiées doivent être distinctes

ex. : x := 1 || y := 2x := y || y := x

séquencement de substitutions [Code B0]

S1 ; S2

accomplit la substitution S1 et puis la substitution S2

ex. : x := 1 ; y := 2x := y ; y := x +1

72 / 104

Le Langage B : substitutions

substitution bloc [Spec, Code B0]

BEGIN S ENDparenthèse des substitutions

ex. : BEGIN x := y || y := x ENDBEGIN x := y ; y := x +1 END

substitution variables locales [Code B0]

VAR v1,…,vn IN S END

introduction de variables locales v1,…,vn dans la substitution Sex. : VAR t IN t := x ; x := y ; y := t END

73 / 104

Le Langage B : substitutions

substitutions qui nécessitent qu’une propriété soit vraie ces substitutions ne peuvent être utilisées que dans un contexte où le

prédicat P est vrai

précondition [Spec] PRE P THEN S END

utilisation : en début de la spécification d’une opération, pour contrôler que l’opération est appelée dans son cadre d’utilisation

ex. : PRE x : NAT1 THEN x := x - 1 END

assertion [Spec, Code] ASSERT P THEN S END

utilisation : aider à la preuve de l’opération qui contient l’assertion(cf. formation niveau 3)

74 / 104

Le Langage B : substitutions

substitution ANY [Spec]

ANY x WHERE Px THEN S END

substitution S dans laquelle on accède (en lecture seulement) à des variables x qui vérifient P

ex. : ANY x WHEREx : 1..5

THENy := y + x

END

rq : la substitution ANY est très généraleskip ANY x WHERE x = y THEN y := x ENDy := a ANY x WHERE x = a THEN y := x ENDy :: E ANY x WHERE x : E THEN y := x END

y :(Py) ANY x WHERE Px THEN y := x END

75 / 104

Le Langage B : substitutions

substitution choix [Spec]

CHOICE S1 OR S2 … OR Sn END

la substitution appliquée est l’une des substitutions S1 à SN

ex. : CHOICE x := x + 1 OR x := x - 1 OR x := x + 2 OR skip END

substitution sélection [Spec]

SELECT P1 THEN S1 WHEN P2 THEN S2 … ELSE Sn END

définit plusieurs branches de substitutions Si gardées par des prédicats Pi

– pour qu’une substitution Si s’applique, il faut que la garde Pi soit vraie

– si toutes les gardes sont fausses, c’est la substitution Sn de la branche ELSE qui s’applique

ex. : SELECT x > 10 THEN x := x - 10 WHEN x < 10 & x > 0 THEN x := 2 * (x – 10)

ELSE x := x - 1END

76 / 104

Le Langage B : substitutions

substitution conditionnelle IF [Spec, Code B0]

IF P1 THEN S1 ELSIF P2 THEN S2 … ELSE Sn END

la substitution appliquée est– soit Si si la condition Pi est vraie et si les conditions précédentes

sont toutes fausses,

– soit Sn si les conditions précédentes sont toutes fausses

par défaut, Sn vaut skipex. : IF x > 10 THEN

x := x - 10ELSIF x = 0 THEN

x := x + 1ELSE

x := 1END

77 / 104

Le Langage B : substitutions

substitution conditionnelle par cas [Spec, Code B0] CASE v OF EITHER V1 THEN S1 OR V2 THEN S2 … ELSE Sn END END

la substitution appliquée est Si si v appartient à l’une des valeurs littérales de la liste Vi, ou bien Sn sinon

par défaut, Sn vaut skip

ex. : CASE x OFEITHER 0, 1, 2 THEN x := x + 1OR 3, 4 THEN x := x - 1OR 10 THEN skipELSE x := x + 10END

END

78 / 104

Le Langage B : substitutions

boucle « tant que » [Code B0]

WHILE P DO S INVARIANT I VARIANT V END

boucle « tant que » : tant que la condition P est valide, on applique la substitution S

– la négation de P est donc la condition de sortie de la boucle

– la clause INVARIANT définit les propriétés des variables transformées à l’entrée dans la boucle, à la ième itération et à la sortie de la boucle

– la clause VARIANT doit définir (à partir des indices de boucles) une expression entière, positive et strictement décroissante entre 2 itérations, de façon à prouver que le nombre d'itérations de boucle est fini, donc que la boucle est convergente

79 / 104

Le Langage B : substitutions

appels d’opération [Spec, Code B0]

Si le corps de la spécification de l ’opération op est la substitution S, un appel à op consiste à appliquer S en remplaçant les paramètres formels par les paramètres effectifs (passage par valeur)

ex. : op1

op2 (y - 1)x c op3

x, y c op4 (x + 1, TRUE)

sur le

papierc

sur les

claviers

<--

80 / 104

Le Langage B : typage des données

principes du typage toute donnée doit être typée avant d’être utilisée

les types en B reposent sur la théorie des ensembles

chaque prédicat, expression ou substitution doit respecterune certaine règle de typage, vérifiée statiquement

ces règles servent à éviter des énoncés trivialement dénués de sens (ne pas mélanger les choux et les carottes)

ex. : 2 = TRUE

définition le type d’une donnée est le plus grand ensemble B auquel elle

appartient

81 / 104

Le Langage B : typage des données

les types B

sont décrits à partir des types de bases et des constructeurs de type

les types de base sont :

– BOOL– Z

– les SETS fixes ou les ensembles énumérésex. : TRUE : BOOL

2 : Z

les constructeurs de types sont :– ensemble des parties, P (T )

– produit cartésien, T1 * T2

ex : {1, 3, 5} : P ( Z )(0 m FALSE) : Z * BOOL

82 / 104

Le Langage B : typage des données

comment typer les données ? en général les données sont typées au moyen de prédicats de

typage, qui sont des prédicats particuliers de la forme :donnée non typée opérateur typant (‘=’, ‘:’ ou ‘(’) expression déjà typée

ex. : x : 1..10 & y : BOOL 3 INT & z = x + 1 & S ( INT

ces prédicats de typage doivent être situés au plus haut niveaud’analyse syntaxique dans une liste de conjonctions (ET logiques)

les variables locales et les paramètres de retour d’opération sont typés par des substitutions typantes

ex. : VAR t IN … t := x + 1 ;… ENDr c op( p ) = PRE p : NAT1 THEN … r := p - 1 … END

83 / 104

Le Langage B

composants B (rappel) aspect statique

définition de l’espace d’état : ensembles, constantes, variables

définition des propriétés statiques des variables d’état : invariant

aspect dynamique

définition de la phase d’initialisation des donnés (variables d’état)

définition des opérations de consultation ou de modification de l’état

obligations de preuve

les propriétés statiques doivent être cohérentes

l’initialisation doit établir ces propriétés

les opérations doivent les préserver

84 / 104

Le Langage B : les composants

aspect statique définition d’ensembles constants (clause SETS)

définition de constantes (clauses CONSTANTS, PROPERTIES)

définition de variables (clauses VARIABLES, INVARIANT)

valuation des ensembles et constantes (clause VALUES)

abréviations textuelles (clause DEFINITIONS)

assertions supplémentaires (clause ASSERTIONS)

aspect dynamique phase d’initialisation (clause INITIALISATION)

définition des opérations (clause OPERATIONS)

85 / 104

Composants B : aspect statique

ensembles fixes et ensembles énumérés

SETS S1;…;Sn

déclaration des ensembles fixes et énumérés dans un composant

un ensemble fixe est défini par son nom Si

ex : SETS ETUDIANTS

un ensemble fixe est supposé fini et non videsa valeur sera fournie dans l’implantation (clause VALUES)c’est un intervalle d’entiers implémentables, non vide, dont on veut cacher la valeur en spécification pour réaliser du typage fort

un ensemble énuméré est défini par son nom suivi de la liste de ses éléments Si = {x1,…, xn},

ex. : SETS COULEURS = {Rouge, Vert, Bleu}

86 / 104

Composants B : aspect statique

définition de constantes soit x1,…xn une liste de noms

(CONCRETE_)CONSTANTS x1,…,xn

ABSTRACT_CONSTANTS x1,…,xn

clauses servant à introduire les noms de constantes (données non modifiables) dans un composant

une constante concrète est une donnée directement implémentable(scalaire, tableau), qui n’a pas à être raffinée et qui devra être valuéesen implantation

une constante abstraite est une donnée du type quelconque qui pourra être raffinée au cours du développement,la définition de constantes abstraites est interdite en implantation

87 / 104

Composants B : aspect statique

définition de constantes soit P un prédicat (en x1,…, xn)

PROPERTIES Px1,…,xn

la clause PROPERTIES contient un prédicat qui définit les propriétés des constantes du composant

ex : CONSTANTSc1, c2

PROPERTIESc1 : 0..10 &c2 : 0..10 &c1 + c2 < 15

88 / 104

Composants B : aspect statique

définition de variables soit v1,…,vn une liste de noms

(ABSTRACT_)VARIABLES v1,…,vn

CONCRETE_VARIABLES v1,…,vn

clauses servants à introduire les noms de variables (données modifiables) dans un composant

une variable abstraite est une donnée de type quelconque,qui pourra être raffinée au cours du développement,la définition de variables abstraites est interdite en implantation

une variable concrète est une donnée directement implémentable (scalaire, tableau), qui n’a pas à être raffinée

89 / 104

Composants B : aspect statique

définition de variables soit P un prédicat (en v1,…vn)

ex : VARIABLESA, B

INVARIANTA ( T &B ( T &card (A i B) = 1

la clause INVARIANT contient un prédicat qui définit les propriétés des variables

il s’agit de propriétés invariantes, quelque soit l’évolution des variables du système (cf. aspect dynamique)

90 / 104

Composants B : aspect statique

exempleMACHINE

RegistreSETS

ETUDIANTSCONCRETE_CONSTANTS

max_étudiantsPROPERTIES

max_étudiants : NAT

ABSTRACT_VARIABLES

InscritsINVARIANT

Inscrits ( ETUDIANTS &card (Inscrits) < max_étudiants

...END

} nom de la machine

} ensemble fixe

} type de constante

} type de variable

} et contrainte

91 / 104

Composants B : aspect statique

valuation des ensembles fixes et constantes ex. : VALUES

max_etudiants = 255 ;

ETUDIANTS = 0.. max_etudiants ;transfert = { 0 m FALSE, 1 m TRUE , 2 m FALSE} ;note = (0.. max_etudiants) * {0}

la clause VALUES n’existe qu’en implantation

elle sert à préciser les valeurs effectives des– SETS fixes du module B

– des constantes concrètes du module B

les ensembles fixes seront en définitive des intervalles entiers, non vides et implémentables

92 / 104

Composants B : aspect statique

abréviations textuelles la clause DEFINITIONS sert à définir des abréviations textuelles, qui

peuvent être utilisées dans le composant (cf. #define du C)

les définitions peuvent être paramétrées et peuvent être factorisées dans des fichiers de définition (attention aux parenthèses)

ex. : DEFINITIONSNMAX == 255 ;NMAXm1 == NMAX - 1 ;non(b) == bool(b = FALSE) ;"mesdef.def"

assertions supplémentaires ASSERTIONS P

cette clause définit des corollaires sur les variables du composant

les assertions servent à factoriser la preuve de propriétés qui se déduisent de l’invariant (cf. formation niveau 3)

93 / 104

Composants B : aspect dynamique

clause d’initialisation soit S une substitution

INITIALISATION S

cette clause sert à définir les valeurs initiales des variables du composantl’initialisation de l’état doit établir l’invariant

ex. : ABSTRACT_VARIABLESInscrits

INVARIANTInscrits ( ETUDIANTS

INITIALISATIONInscrits := 0

94 / 104

Composants B : aspect dynamique

définition d’opérations la clause OPERATIONS introduit les opérations du composant

toute opération définie dans une machine abstraite doit être raffinée

il n’est pas possible d’introduire de nouvelles opérations dans les raffinements

les opérations peuvent avoir des paramètres d’entrée et de retour, définis dans l’en tête de l’opération (passage par valeur),

les paramètres d’entrée sont définis en précondition

les paramètres de retour sont modifiés comme des variables

le corps de l’opération est une substitution qui définit comment sont transformées toutes les variables du composant

95 / 104

Composants B : aspect dynamique

définition d’opérations (suite) syntaxe des opérations

op = S

op ( p1,…pn ) = Sr1,…rm c op = S

r1,…rm c op ( p1,…pn ) = S

les définitions qui changent des variables d’état sont les opérations de modification ;

les opérations doivent préserver l’invariant

les opérations qui ne modifient aucune variable d’état sont les opérations de consultation

le raffinement ou l’implantation d’une opération doit satisfaire sa spécification

sur le

papierc

sur les

claviers

<--

96 / 104

Composants B : aspect dynamique

exemple

MACHINE

Registre

SETS

ETUDIANTS

DEFINITIONS

max_etudiants ==

card (ETUDIANTS)

ABSTRACT_VARIABLES

Inscrits

INVARIANTInscrits ( ETUDIANTS

ASSERTIONScard (Inscrits) < max_etudiants

/* aspect dynamique */

INITIALISATIONInscrits := 0

...

...

OPERATIONSn c nb_inscrits =

n := card (Inscrits) ; b c etudiant _inscrit ( e ) =

PRE e : ETUDIANTS

THEN b := bool (e : Inscrits)

END ;

inscrire_etudiant ( e ) =PRE e : ETUDIANTS - Inscrits

THEN Inscrits := Inscrits u {e}

END ;

rayer_etudiant ( e ) =PRE e : Inscrits

THEN Inscrits := Inscrits - {e}

END

END

97 / 104

Composants B : aspect dynamique

opérations locales pour éviter un nombre excessif de niveaux de modules dans un projet

elles ne sont utilisables que dans une implantation

elles peuvent être appelées dans l’implantation d’opérations (globalesor locales)

elles sont spécifiées dans la clause LOCAL_OPERATIONS(spécification abstraite sur les variables visibles en implantation)

leur invariant est constitué du typage des variables concrètes

elles sont implantées dans la clause OPERATIONS (comme les opérations globales)

98 / 104

Composants B : aspect dynamique

opérations locales : exempleIMPLEMENTATION

...

LOCAL_OPERATIONSr c GetMax(x, y) =

PRE x : INT & y : INT THEN

r := max ({x, y})

END

OPERATIONSr c GetMax(x, y) =

IF x < y THEN r := y

ELSE r := x

END ;

…op =

…v c GetMax(z, 10);

END

99 / 104

Le Langage B

décomposition modulaire le langage B supporte la (dé)composition des spécifications de

façon modulaire

mécanismes de décomposition importation d’autres machines (clause IMPORTS)

visibilité d’autres machines (clause SEES)

100 / 104

Le Langage B : décomposition modulaire

importation d’autres machinesex : IMPLEMENTATION

A_i

REFINESA

IMPORTSB, C

la clause IMPORTS ne s’applique qu’aux implantations

une implantation importe des machines afin d’implémenter ses données et ses services, à l’aide de ceux de machines de plus bas niveaux : c’est la décomposition de la Méthode B

les variables d’une machine importée M sont modifiables dans l’implantation par appel des opérations de M

101 / 104

Le Langage B : décomposition modulaire

visibilité d’autres machinesex : MACHINE

A

SEESB, C

lorsqu’un composant voit une machine M, les données de M sont accessibles en lecture, mais elle ne peuvent pas être modifiées par le composant

102 / 104

Liens B-Logiciel

module B

implémentation ou raffinement

spécification B

lien de décomposition (IMPORTS)

Modèle

Abstrait

Modèle

Concret

lien en lecture seule (SEES)

103 / 104

Le Langage B : le B0

C’est le langage de programmation intégré au langage B

Il est composé nom de la spécification et liens de l’implantation

données de l’implantation : ensemble fixes et énumérés,constantes (concrètes), variables concrètes et valuation de l’implantation

initialisation et opérations de l’implantation : paramètres des opérations et parties implémentables des substitutions

Les données doivent être concrètes INT, BOOL, ensemble abstrait ou énuméré

intervalle de INT

tableau implémentable

104 / 104

Formations B

Niveau 1 : présentation de la Méthode B présentation de la Méthode B et du Langage B

TD et TP avec l’Atelier B : spécification, écrire un programme simplecohérent avec ses spécifications, notions de preuve

Niveau 2 : notions avancées de B notions avancées de B : décomposition modulaire, raffinement,

homonymie, théorie des Obligations de Preuve, les boucles

TD et TP avec l’Atelier B : décomposition modulaire d’un gros projet,introduction à B système, Obligations de Preuve

Niveau 3 : prouver comment prouver les lemmes avec l’Atelier B

TP : preuve automatique et interactive, outils de preuve,règles utilisateur