Vous êtes sur la page 1sur 84

La méthode B

modélisation, validation et implémentation

Nicole Levy1

1 CNAM

Nicole Levy (CNAM) La méthode B 2014-2015 1 / 84


Spécification / Programmation

Spécifier 6= Programmer
Spécification : description précise de ce que doit faire (ou fait) le
logiciel
Programme: description de comment il le fait
Objectifs visés:
Maîtriser la complexité
Permettre la validation des logiciels
Faciliter la maintenance et l’évolution

Nicole Levy (CNAM) La méthode B 2014-2015 2 / 84


Exigences / Spécifications
Exigences : écrites par ou avec le client, en langage naturel
Spécifications : description précise, complète, cohérente,
document de référence
Problèmes rencontrés
oublis ou incomplétudes
redondance ou incohérences
sur spécifications ou choix prématurés
ambiguïtés, jargon ou connaissances implicites
Formalismes existants
langue naturelle
notations graphiques ou semi formelles
méthodes formelles
ou un mélange de tous !
Nicole Levy (CNAM) La méthode B 2014-2015 3 / 84
Techniques de spécification: informelles ou formelles ?

langage naturel langage formel


communicabilité élevée difficile
pouvoir illimité plus/moins limité
d’expression
inclinaison aux dé- ambiguité, bruit, pas d’inclinaison
fauts rêve, sur spécif,... induite
règles précises non oui (sémantique
d’interprétation formelle)
règles pour inférer non oui (théorie de la
nouveaux énoncés preuve)
validation automa- non oui : sémantique
tisable statique, contradic-
tions, complétude,
prototypage,...

Nicole Levy (CNAM) La méthode B 2014-2015 4 / 84


Méthodes formelles

Point de départ: méthode de Hoare (1969)

Plusieurs domaines ⇒ plusieurs formalismes


I Formalismes orientés processus : algèbres des processus tels
que CSP, LOTOS,... pour décrire les interactions entre processus.
Modélisation de systèmes parallèles, distribués, communicants
Logiques temporelles
Systèmes de transitions : automates, réseaux de Pétri

I Formalismes algébriques, orientés propriétés : types abstraits


algébriques tels que OBJ, LARCH, CASL

I Formalismes orientés modèles telsque Z, VDM, B


Modèle mathématique de l’état du système et des changements
d’états

Nicole Levy (CNAM) La méthode B 2014-2015 5 / 84


La Méthode B: de la spécification à l’implémentation

Développement de logiciel critique:


Tester ou Prouver ?
... et développer par transformations successives : idée du MDA

La Méthode B: de la spécification à l’implémentation


Décrire les besoins : spécification abstraite
vérifier que tout est dit de manière consistante
puis par raffinements successifs, aller vers l’implémentation
en prouvant à chaque étape que les propriétés restent valides

Nicole Levy (CNAM) La méthode B 2014-2015 6 / 84


Brève introduction
La Méthode B: de la spécification à l’implémentation

La méthode B de développement est basée sur

la preuve

Les preuves:
réalisées au fur et à mesure du développement
effectuées, non pas sur le programme (il n’existe pas encore)
mais sur les différents modèles que l’on est amené à élaborer

Nicole Levy (CNAM) La méthode B 2014-2015 7 / 84


Conçue par Jean-Raymond Abrial

Conçue vers la mi 80 comme une

méthode de développement de logiciel prouvé.

Le but: permettre de découvrir les inévitables erreurs produites lors du


développement d’un logiciel le plus tôt possible sur le lieu et dans
le temps même de leur production.

Techniques de validation:
test: les erreurs sont (partiellement) découvertes et (en principe)
corrigées après la phase de codage.
Model checking: simulation en laboratoire avec étude exhaustive
de toutes les exécutions possibles.

Nicole Levy (CNAM) La méthode B 2014-2015 8 / 84


Bref Historique:
1949 Alan M. Turing, Checking a large routine, Cambridge University
1967 Robert Floyd, Assigning meanings to programs, AMS
1969 C.A.R. Hoare, An axiomatic basis for computer programming,
CACM
1972 D.L. Parnas, A Technique for Software Module Specification with
Examples, CACM
1975 Edsger Dijkstra, Guarded commands, nondeterminacy and
formal derivation of programs, CACM
1978 Jean-Raymond Abrial, Manuel du langage Z et mécanismes de
transformation du langage Z, Notes Z/1 à Z/14, EDFq
1986 Cliff B. Jones, Systematic Software Development using VDM,
Prentice-Hall
1988 C.A.R. Hoare, Jifeng He, Natural transformations and data
refinement, PRG, Oxford
1990 Caroll Morgan, Programming from Specifications, Prentice-Hall
1996 Jean-Raymond Abrial, The B-Book, Assigning programs to
meanings, Cambridge University Press
Nicole Levy (CNAM) La méthode B 2014-2015 9 / 84
Modèle d’un programme

Modèle initial: les propriétés qui permettent de qualifier le programme


Exemple: un programme de tri:
Propriété: relation entre donnée (un tableau à trier) et résultat
(tableau trié)
Le résultat doit comprendre les mêmes éléments que la
donnée, mais ils doivent être classés entre eux suivants un
certain critère.
Modèle terminal: le programme
Exemple: un des multiples programmes de tri:

Nicole Levy (CNAM) La méthode B 2014-2015 10 / 84


Autre exemple: un protocole de communication

Modèle initial:
Propriété : transmettre une suite d’éléments, en
respectant l’ordre et la continuité des éléments
entre deux partenaires.
Hypothèse hostile : la transmission peut être totale ou
partielle.

Modèle terminal: description fine du protocole en terme de


séquencement des différents messages échangés entre les deux
partenaires.

Nicole Levy (CNAM) La méthode B 2014-2015 11 / 84


Les grandes étapes de la méthode B

A partir du Cahier des charges


Construction d’un modèle formel : modèle abstrait
Preuves de correction mathématique: “complétude” et
consistance
Construction par raffinements successifs prouvés d’un modèle
plus concret
jusqu’à la définition d’un modèle concret en B0
Codage automatique (par génération)

Nicole Levy (CNAM) La méthode B 2014-2015 12 / 84


Développement d’un modèle abstrait
Définition du système
1 Déclarations globales
2 Etat du système: variable et invariant
3 Etat initial du système
4 Définition des opérations

Déclaration des variables et de leurs types


Définition des opérations
Vérification à l’aide de l’Atelier B

Nicole Levy (CNAM) La méthode B 2014-2015 13 / 84


Une machine abstraite

un état: variables MACHINE


typées NOM MACHINE
VARIABLES
des propriétés /* liste des variables */
invariantes INVARIANT
une initialisation: état /* typage des variables
initial du système et propriétés invariantes */
INITIALISATION
des opérations /* initialisation des variables */
modifiant ou observant OPERATIONS
l’état du système /* définition des opérations */
END

Nicole Levy (CNAM) La méthode B 2014-2015 14 / 84


Exemple: un distributeur de carnets de timbres (1/3)

INVARIANT
MACHINE
Somme versee ∈ NAT ∧
DISTRIBUTEUR
Nb demandes ∈ NAT ∧
CONSTANTS
Nb disponibles ∈ NAT ∧
Prix ,
Nb demandes ≤
Valeur piece
Nb disponibles ∧
PROPERTIES
Somme versee ≤
Prix ∈ NAT ∧
(Nb demandes × Prix)
Valeur piece ∈ NAT ∧
INITIALISATION
Prix mod Valeur piece = 0
BEGIN
ABSTRACT VARIABLES
Somme versee := 0 ||
Somme versee,
Nb demandes := 0 ||
Nb demandes,
Nb disponibles :∈ NAT
Nb disponibles
END

Nicole Levy (CNAM) La méthode B 2014-2015 15 / 84


Exemple: un distributeur de carnets de timbres (2/3)

OPERATIONS
Indiquer nbre (nbc ) =
PRE nbc ∈ NAT1 ∧ nbc < Nb disponibles ∧
Somme versee = 0 ∧ Nb demandes = 0
THEN
Nb demandes := nbc
END ;
Introduire piece =
PRE Nb demandes > 0 ∧
Somme versee + Valeur piece ≤ Nb demandes × Prix
THEN
Somme versee := Somme versee + Valeur piece
END ;

Nicole Levy (CNAM) La méthode B 2014-2015 16 / 84


Exemple: un distributeur de carnets de timbres (3/3)
Distribuer =
PRE Somme versee = Nb demandes × Prix
THEN
Somme versee := 0 ||
Nb disponibles := Nb disponibles - Nb demandes ||
Nb demandes := 0
END ;

rendu ← Annuler =
BEGIN
Somme versee := 0 ||
Nb demandes := 0 ||
rendu := Somme versee
END
END

Nicole Levy (CNAM) La méthode B 2014-2015 17 / 84


Autre Exemple: Système d’alimentation en eau

valve de test

bassin

chemin 2 valve du réservoir

valve du bassin
pompe chemin 1
Max réservoir

Min

Nicole Levy (CNAM) La méthode B 2014-2015 18 / 84


Système d’alimentation en eau

Le système est composé d’un bassin, d’un réservoir, d’une pompe et


de trois valves le tout étant connecté à l’aide de tuyaux. Des capteurs
permettent de connaître le niveau de l’eau dans le réservoir.
Le système remplit automatiquement le réservoir avec l’eau du bassin
par le chemin 1 quand le niveau de l’eau du réservoir est trop bas.
Quand le niveau est trop haut, le système arrête le remplissage en
faisant circuler l’eau par le chemin 2.
Il y a deux interrupteurs ou commandes, un d’arrêt et un de test.
Quand la commande arrêt est actionnée, le système s’arrête sauf si le
niveau de l’eau est trop bas.
Quand la commande test est actionnée, le système fait circuler l’eau
par le chemin 2 pour tester l’équipement.

Nicole Levy (CNAM) La méthode B 2014-2015 19 / 84


1. Déclarations globales
ensembles, constantes et leurs propriétés

Déclarations globales, visibles pour toute la machine


Clause SETS
Clause CONSTANTS
Clause PROPERTIES

Nicole Levy (CNAM) La méthode B 2014-2015 20 / 84


Clause SETS
Définition et syntaxe

Définit la liste
des ensembles abstraits et des ensembles énumérés
qui seront utilisés pour typer les variables

Un type est un ensemble


Un SET est un type de base

Clause-sets ::== "SETS" Ensemble+;


Ensemble ::== Ident ← ens abstrait
| Ident "=" "{" Ident +, "}" ← ens énuméré

Nicole Levy (CNAM) La méthode B 2014-2015 21 / 84


Clause SETS
Exemples

Un ensemble abstrait est défini simplement par son nom.


Tout ensemble abstrait est implicitement fini et non vide.
Exemple :
SETS
NIVEAU, NOM
Un ensemble énuméré est défini par son nom et la liste ordonnée
et non vide de ses éléments énumérés
Exemples :
SETS
ETAT POMPE = {marche, arret} ;
ETAT NIVEAU EAU = {trop haut, correct, trop bas} ;
ETAT VALVE = {ouverte, fermee}

Nicole Levy (CNAM) La méthode B 2014-2015 22 / 84


Clause SETS
Ensembles de base prédéfinis

Notation Notation Définition


Math ASCII
Z INTEGER Ensemble des entiers relatifs
Z INT Ensemble fini des entiers relatifs concrets
N NATURAL Ensemble des entiers naturels {0, 1, ...}
N1 NATURAL1 Ensemble des entiers naturels non nuls
N NAT Ensemble fini des entiers naturels concrets
N1 NAT1 Ensembles fini des entiers naturels non nuls
concrets
BOOL BOOL Ensembles des booléens: TRUE FALSE
STRING STRING Ensembles des chaînes de caractères

Nicole Levy (CNAM) La méthode B 2014-2015 23 / 84


Clause CONSTANTS
Définition, syntaxe et exemples

Définit la liste des constantes


Une constante est une donnée dont la valeur ne peut pas varier
pendant l’exécution du programme

Clause-constants ::== "CONSTANTS" { Ident } +,

Exemples :
CONSTANTS
Hauteur Max , Hauteur Min

Chaque constante doit être typée et ses propriétés décrites


dans la clause PROPERTIES de la machine.

Nicole Levy (CNAM) La méthode B 2014-2015 24 / 84


Clause PROPERTIES
Définition, syntaxe et exemples

Décrit les propriétés des constantes :


leur type et propriétés invariantes

Clause properties ::== "PROPERTIES" Prédicat

Prédicat : expression du calcul des prédicats du premier ordre


Exemple :
PROPERTIES
Hauteur Max ∈ NAT ∧
Hauteur Min ∈ NAT ∧
Hauteur Min ≤ Hauteur Max

Nicole Levy (CNAM) La méthode B 2014-2015 25 / 84


2. État du système : variables et invariant

Décrit l’état mémoire d’une machine à un instant donné :


les variables et pour chacune
son type et ses propriétés invariantes

Clause VARIABLES
Clause INVARIANT

Nicole Levy (CNAM) La méthode B 2014-2015 26 / 84


Clause VARIABLES
Syntaxe et exemple

Liste des variables

Clause variables ::== "VARIABLES" { Ident }+,

Exemple :
VARIABLES
Pompe , /* Etat de la pompe */
Niveau eau , /* Etat du niveau de l’eau dans le réservoir */
V reservoir , V test , V bassin /* Etat des 3 valves */

Nicole Levy (CNAM) La méthode B 2014-2015 27 / 84


Clause INVARIANT
Définition et syntaxe

Décrit les propriétés invariantes du système :


type de chaque variable et
propriétés invariantes des variables :
propriétés qui doivent être vérifiées à chaque état du système

Clause invariant ::== "INVARIANT" Prédicat

Prédicat : expression du calcul des prédicats du premier ordre.

Nicole Levy (CNAM) La méthode B 2014-2015 28 / 84


Clause INVARIANT
Exemple

INVARIANT
Pompe ∈ ETAT POMPE ∧
Niveau eau ∈ ETAT NIVEAU EAU ∧
V reservoir ∈ ETAT VALVE ∧
V test ∈ ETAT VALVE ∧
V bassin ∈ ETAT VALVE ∧
(( Pompe = marche ) ⇒
(V reservoir = ouverte ∧ V test = fermee ∧ V bassin = ouverte )

(V reservoir = fermee ∧ V test = ouverte ∧ V bassin = ouverte ))

(( Pompe = arret) ⇒
(V reservoir = fermee ∧ V test = fermee ∧ V bassin = fermee))

Nicole Levy (CNAM) La méthode B 2014-2015 29 / 84


Prédicat : expression du calcul des prédicats du
premier ordre

Opérateurs booléens :
¬ (non), ∨ (ou), ∧ (et), ⇒ (implique), ⇔ (équivalent)
Quantificateurs :
∀ x . P (pour tout x tel que P)
∃ x . P (il existe x tel que P )
Prédicat d’égalité : =

Nicole Levy (CNAM) La méthode B 2014-2015 30 / 84


3. État Initial du système : Clause INITIALISATION
Définition et syntaxe

Décrit l’état initial


Permet d’initialiser toutes les variables de la machine

Clause initialisation ::== "INITIALISATION" Substitution

Il faut PROUVER que l’initialisation établit l’invariant

Nicole Levy (CNAM) La méthode B 2014-2015 31 / 84


Substitutions

Substitutions devient égal pour:


a := x - une variable, substitution simple
a, b := x, y - une liste de variables
f (x) := y - un élément de fonction
a’b := x - un record
BEGIN S END Substitution bloc
skip Substitution identité, sans effet
a, b :∈ A Substitution devient élément de
a, b : (P) Substitution devient tel que
S || T Substitution simultanée

Nicole Levy (CNAM) La méthode B 2014-2015 32 / 84


Substitutions

PRE P THEN Substitution précondition


S
END
ASSERT P THEN Substitution assertion
S
END
CHOICE Substitution choix borné
S
OR
T
END

Nicole Levy (CNAM) La méthode B 2014-2015 33 / 84


Substitutions

IF P THEN Substitution conditionnelle IF


S
[ELSIF Q THEN T ]∗
[ELSE U]
END
SELECT P THEN Substitution sélection
S
[WHEN P THEN T ]∗
[ELSE U]
END
CASE x OF Substitution condition par cas
EITHER a, b THEN S
[OR a0 , b0 THEN T ]∗
[ELSE U]
END
END
Nicole Levy (CNAM) La méthode B 2014-2015 34 / 84
Substitutions

ANY a, b Substitution choix non borné


WHERE P THEN S
END
LET a, b BE Substitution définition locale
a = x & b = y
IN S END
S ; T Substitution séquencement
a, b < −− f (x, y ) Substitution appel d’opération

Nicole Levy (CNAM) La méthode B 2014-2015 35 / 84


État Initial du système : Clause INITIALISATION
Exemple

INITIALISATION
Pompe := arret || Niveau eau := correct ||
V reservoir := fermee || V test := fermee ||
V bassin := fermee

Preuve:
(( Pompe = arret) ⇒
(V reservoir = fermee ∧ V test = fermee ∧ V bassin = fermee))
(vrai ⇒ (vrai ∧ vrai ∧ vrai)) = vrai

Nicole Levy (CNAM) La méthode B 2014-2015 36 / 84


4. Opérations modifiant ou observant le système:
Clause OPERATIONS
Permet de déclarer les services offerts par un système et
de spécifier leur comportement.

Clause operation ::== "OPERATIONS" Opération+;


Opération ::== Entete Operation "=" Corps Operation
Entete operation ::== [ { Ident } +, "←"] Ident [ "(" { Ident } +, ")" ]
Corps Operation ::== Substitution

Exemples :

OPERATIONS
Oper1 = ...
Oper2 (param1, param2)= ...
r 1, r 2 ← Oper3 (param1, param2)= ...

Nicole Levy (CNAM) La méthode B 2014-2015 37 / 84


Remarques

Les paramètres d’entrée et de sortie sont optionnels.


Une opération permet de modifier les variables d’état du système.
Le passage de paramètres est par valeur.
Les données (paramètres en entrée) sont accessibles uniquement
en lecture.
Les données sont généralement typées dans la précondition de
l’opération.
La précondition fixe les conditions sous lesquelles l’opération doit
être appelée. Le résultat n’est défini que si la précondition est
satisfaite.
Les résultats sont typés par leur utilisation dans l’opération.

Nicole Levy (CNAM) La méthode B 2014-2015 38 / 84


Exemple : système d’alimentation en eau (1/5)
SYSTEM ALIMENTATION
SETS
ETAT POMPE = {marche, arret} ;
ETAT NIVEAU EAU = {trop haut, correct, trop bas} ;
ETAT VALVE = {ouverte, fermee}
VARIABLES
Pompe , Niveau eau , V reservoir , V test , V bassin
INVARIANT
Pompe ∈ ETAT POMPE ∧ Niveau eau ∈ ETAT NIVEAU EAU ∧
V reservoir ∈ ETAT VALVE ∧ V test ∈ ETAT VALVE ∧
V bassin ∈ ETAT VALVE ∧
(( Pompe = marche ) ⇒ (V reservoir = ouverte ∧ V test = fermee ∧
V bassin = ouverte )
∨ (V reservoir = fermee ∧ V test = ouverte ∧ V bassin = ouverte ))

(( Pompe = arret) ⇒ (V reservoir = fermee ∧ V test = fermee ∧
V bassin = fermee))
Nicole Levy (CNAM) La méthode B 2014-2015 39 / 84
Exemple : système d’alimentation en eau (2/5)

INITIALISATION
Pompe := arret ||
Niveau eau := correct ||
V reservoir := fermee ||
V test:= fermee ||
V bassin := fermee

Nicole Levy (CNAM) La méthode B 2014-2015 40 / 84


Exemple : système d’alimentation en eau (3/5)

OPERATIONS
Tester =
PRE Niveau eau 6= trop bas THEN
Pompe := marche ||
V reservoir := fermee ||
V test := ouverte ||
V bassin := ouverte
END ;

Nicole Levy (CNAM) La méthode B 2014-2015 41 / 84


Exemple : système d’alimentation en eau (4/5)

Arreter =
PRE Niveau eau 6= trop bas THEN
Pompe := arret ||
V reservoir := fermee ||
V test := fermee ||
V bassin := fermee
END ;
Remplir =
BEGIN
Pompe := marche ||
V reservoir := ouverte ||
V test := fermee ; V bassin := ouverte
END

Nicole Levy (CNAM) La méthode B 2014-2015 42 / 84


Exemple : système d’alimentation en eau (5/5)

Trop haut =
BEGIN
Niveau eau := trop haut
END ;
Trop bas =
BEGIN
Niveau eau := trop bas
END ;
Correct =
BEGIN
Niveau eau := correct
END
END

Nicole Levy (CNAM) La méthode B 2014-2015 43 / 84


Logique des substitutions

Correction partielle: P { S } Q
Si l’état satisfait P avant l’exécution de S et si S termine,
Alors l’état satisfait Q après.
Correction totale : la plus faible précondition wp(S, Q) est notée
en B : [S] Q
Si l’état satisfait [S] Q avant l’exécution de S
Alors S termine et l’état satisfait Q après.
Remarque:
P { S } Q en correction totale est équivalent à P ⇒ [S] Q

Nicole Levy (CNAM) La méthode B 2014-2015 44 / 84


Plus faible précondition des substitutions

Substitution Réduction Condition


[x := E]R [x := E]R
[x, y := E, F ]R [z := F ][x := R][y := z]R z 6∈ E, F , R
[skip]R R
[PRE P THEN S END]R P ∧ [S]R
[SELECT P THEN S END]R P ⇒ [S]R
[CHOICE S OR T END]R [S]R ∧ [T ]R

Nicole Levy (CNAM) La méthode B 2014-2015 45 / 84


Plus faible précondition des substitutions

Substitution Réduction
x := E||y := F x, y := EF
IF P THEN S CHOICE (SELECT P THEN S END) OR
ELSE T END (SELECT ¬ P THEN T END) END

Nicole Levy (CNAM) La méthode B 2014-2015 46 / 84


Décrire l’état d’un système

Introduire les variables représentant l’état du système


Les typer à l’aide des structures de données mathématiques
I Les produits cartésiens,
I les ensembles,
I les fonctions,
I les suites,
I les arbres,...
Restreindre le type aux valeurs acceptables, définissant les états
corrects

Nicole Levy (CNAM) La méthode B 2014-2015 47 / 84


Introduire les variables représentant l’état du système

Définir les objets :

Un objet a une valeur


Cette valeur peut évoluer au cours du temps
=⇒ un objet mémorisé est appelé une variable

Si cette valeur n’évolue pas au cours du temps


=⇒ l’objet mémorisé est appelé une constante

La valeur d’une variable est toujours un élément d’un ensemble


L’ensemble de toutes les valeurs possibles d’une variable est appelé
son TYPE

Nicole Levy (CNAM) La méthode B 2014-2015 48 / 84


Type d’une variable

Le type d’une variable décrit l’ensemble de toutes ses valeurs


possibles
Remarque : la valeur d’une variable doit pouvoir être
représentée dans la mémoire d’un ordinateur
=⇒ seuls des ensembles dénombrables
L’ensemble des réels R n’est pas un ensemble admissible

Le type d’une variable implique les opérations de base de


manipulation de cette variable.
La définition d’un type se fait en 2 étapes :
L’ensemble général (en général appelé TYPE) : n ∈ NAT
Une restriction du TYPE: n ≤ 20

Nicole Levy (CNAM) La méthode B 2014-2015 49 / 84


Type d’une variable: exemples
Une station de métro de Paris: l’ensemble énuméré {Opéra,
Monge, Italie,... }
Un numéros d’une ligne du métro parisien : l’intervalle d’entiers
[1..14]
L’âge d’une personne : un entier naturel inférieur à 130 [0..130] ou
{n | n ∈ N ∧ n ≤ 130}
La somme que j’ai dans ma poche : un entier naturel 0, 1, 2, 3, 4,
5, ... N mais inférieur à ???
Le nom d’une personne : NOM (à définir plus tard et pas
forcément simplement STRING)
Le numéro de téléphone d’une personne : TELEPHONE (à définir
plus tard)
mais aussi plus compliqué :
les cartes que j’ai : un ensemble de CARTES: P (CARTES) où
CARTE = {CId, CCred„ CVit,...}
Un répertoire de téléphone : un ensemble de couples (NOM,
TELEPHONE) : P (NOM x TELEPHONE)
ou une
Nicole fonstion qui à un objet
Levy (CNAM) de type
La méthode B NOM associe un2014-2015
objet de50 / 84
Exemple : un horodateur
Un horodateur distribue des tickets de stationnement aux utilisateurs
disposant d’une carte de stationnement prépayé. L’utilisateur introduit
sa carte et indique le nombre d’unités de temps qu’il désire. Si sa
carte permet de payer la somme correspondante, alors l’horodateur
imprime le ticket en y indiquant notamment l’heure limite de
stationnement autorisé et rend à l’utilisateur la carte débitée de la
somme due. Dans le cas contraire, l’horodateur rend simplement la
carte non débitée à l’utilisateur.

Synthèse:
1 Un horodateur traite un utilisateur à la fois.
2 Un horodateur ne peut lire qu’une carte à la fois.
3 L’horodateur peut lire la somme mémorisée sur la carte. Celle-ci
peut être nulle.
4 La durée est un nombre entier d’unités de temps. Une unité est
définie pour chaque horodateur et elle est constante.
5 Une carte ne reste pas indéfiniment dans l’horodateur.
Nicole Levy (CNAM) La méthode B 2014-2015 51 / 84
Exemple : les variables de l’horodateur

L’horodateur peut lire la somme mémorisée sur la carte. Celle-ci


peut être nulle. ⇒ carte lue ∈ N
La durée est un nombre entier d’unités de temps.
⇒ duree ∈ N
On peut limiter cette durée, par exemple à 40: duree ≤ 40
Une carte ne reste pas indéfiniment dans l’horodateur.
⇒ presence carte ∈ BOOL

Nicole Levy (CNAM) La méthode B 2014-2015 52 / 84


Déclaration du type d’une variable

var ∈ TYPE
signifie qu’à chaque instant la variable var
a pour valeur un des éléments de l’ensemble TYPE.

Différents Types peuvent etre définis, introduits et/ou


utilisés
Types Prédéfinis : NAT ou N , INT ou Z, BOOL, CHAR,
STRING,...
Types Enumérés ou en Extension :
COULEUR = {noir, blanc, bleu, rouge, jaune}
Types Abstraits : NOM, TELEPHONE, PERSONNE, PAYS,...
Types Structurés : Couple, Ensemble, Relation, Fonction,
Suite,...

Nicole Levy (CNAM) La méthode B 2014-2015 53 / 84


Les expressions de couples

X × Y Produit cartésien
(x 7→ y ) = (x, y )Correspondance binaire

Exemples:
X = {1, 2, 3}
Y = {4, 5}
X × Y = {(1 7→ 4), (1 7→ 5), (2 7→ 4), (2 7→ 5), (3 7→ 4), (3 7→ 5)}

(12, TRUE) est un couple de 0..20 × BOOL

Nicole Levy (CNAM) La méthode B 2014-2015 54 / 84


Les ensembles

Déclaration
var ∈ P TYPE signifie qu’à chaque instant la variable var a pour
valeur un ensemble des éléments de l’ensemble TYPE, autrement dit,
une partie de TYPE.
Remarque: l’ensemble des parties de l’ensemble TYPE se note
P TYPE

Exemples:
Lignes d une Station: P LIGNE
Stations d une Ligne: P STATION

Nicole Levy (CNAM) La méthode B 2014-2015 55 / 84


Ensemble des parties d’un ensemble
Cartes : Carte d’Identité, Pass Navigo, Carte Professionnelle,
Carte Vitale, Permis de Conduire, Carte Fnac, Carte Velib...

Cartes = {CId, PN, CPro, CVit, PdC, CF, CV }

CartesOfficielles = {CId, CVit, PdC}


= {CVit, CId, PdC}
= {CId, CVit, PdC, CId, CVit}

CartesOfficielles ∈ P Cartes

CId ∈ CartesOfficielles

P CartesOfficielles = {∅, {CId}, {CVit}, {PdC},


{CId, CVit}, {CId, PdC}, {CVit, PdC},
{CId, CVit, PdC}, }
Nicole Levy (CNAM) La méthode B 2014-2015 56 / 84
Définition d’ensembles en compréhension

{ Liste de variables | Pr édicat }


Définit l’ensemble de toutes les valeurs possibles du produit cartésien
des variables de Liste de variables rendant vraie la propriété
Pr édicat.
La propriété Pr édicat contient le typage des variables de
Liste de variables.
Exemples :
{n|n ∈ N ∧ n mod 2 = 0}
{n|n ∈ N ∧ n ∈ 6 . . 8} = {6, 7, 8}
{n|n ∈ N ∧ (∃ m . m ∈ N ∧ m ∗ m = n)}

Nicole Levy (CNAM) La méthode B 2014-2015 57 / 84


Les relations

Une relation est un ensemble de n-uplets : X ↔ Y = P(X ×Y )

Exemples: Stations = {Italie, Auber , Pasteur , ...}


Lignes = 1 . . 14

Reseau ∈ Stations ↔ Ligne


Reseau = {(Italie 7→ 5), (Italie 7→ 6), (Italie 7→ 7),
(Jussieu 7→ 7), (Jussieu 7→ 10),
(Pasteur 7→ 6), (Pasteur 7→ 12), ...}
La relation binaire Reseau est un ensemble de couples (station,ligne)
Par chaque station peuvent passent une ou plusieurs lignes.
Chaque ligne passe par plusieurs stations.

Nicole Levy (CNAM) La méthode B 2014-2015 58 / 84


Les fonctions

Dans un langage de programmation :


une fonction permet de calculer un résultat,
de spécifier un traitement.
Ici :
On va mémoriser les résultats
Une fonction est une structure de données.
Dans les 2 cas :
étant données une ou plusieurs valeurs,
une fonction leur associe un résultat.
Une fonction est un cas particulier de relation:
chaque donnée du domaine a une et une seule image :
f : X → Y ⇒ f : X ↔ Y ∧ ∀ x (x˙ ∈ dom (f ) ⇒ card(f [{x}]) = 1)

Nicole Levy (CNAM) La méthode B 2014-2015 59 / 84


Exemples de fonctions

l’âge d’une personne


toute personne a un âge: fonction totale
Age : PERSONNE → N
le numéro d’identité d’une personne
toute personne a un numéro d’identité: fonction totale
Ident : PERSONNE → N
le numéro de portable d’une personne
toute personne n’a pas un portable: fonction partielle
NumeroPortable : PERSONNE → 7 PORTABLE

Nicole Levy (CNAM) La méthode B 2014-2015 60 / 84


Deux classes de fonctions

Fonction totale : dom (f ) = A f ∈A→B


tout élément du type A appartient au domaine de f :
f (x) est toujours défini.
s → t = {f|f ∈ s → 7 t ∧ dom(f ) = s}
Fonction partielle : dom (f ) ⊂ A f ∈A→
7 B
le domaine de F est inclu dans A:
f (x) n’est pas toujours défini.
s→ 7 t = {r|r ∈ s ↔ t ∧ (r −1 ; r ) ⊆ id(t)}

Nicole Levy (CNAM) La méthode B 2014-2015 61 / 84


Type d’une variable

Nous avons vu l’utilisation des types:


Produit Cartesien (couples,...)
Ensemble
Relation
Fonction
Il existe aussi les Suites, les Arbres...

Nicole Levy (CNAM) La méthode B 2014-2015 62 / 84


Définition des Opérations

En fonction du type des variables, différents opérateurs peuvent être


utilisés.
Nous allons étudier les opérateurs pour les types
Produit Cartesien (couples,...)
Ensemble
Relation
Fonction

Nicole Levy (CNAM) La méthode B 2014-2015 63 / 84


Opérateurs Sur les Produits Cartésiens ("Records")

struct((a : x), (b : y )) Ensemble de records


rec((a : x), (b : y )) Records en extension
x 0a Accès à un champ de record

Nicole Levy (CNAM) La méthode B 2014-2015 64 / 84


Opérateurs ensemblistes

Ensemble vide : ∅ ensemble sans élément


Appartenance : ∈
CId ∈ CartesOfficielles
CartesOfficielles ∈ PCartes
Pour tout ensemble E:
E ∈ PE
∅ ∈ PE

Non Appartenance : ∈
/
CV ∈/ CartesOfficielles
{CId, CVit, CF , CV } ∈
/ PCartesOfficielles
x∈/∅

Nicole Levy (CNAM) La méthode B 2014-2015 65 / 84


Opérateurs ensemblistes

Cardinal : card nombre d’éléments d’un ensemble


card(∅) = 0
card(Benelux) = 3
card(P(Benelux)) = 2card(Benelux) = 8
Pour tout ensemble E: card(P(E)) = 2card(E)
Inclusion : ⊂ et ⊆ relation est inclus dans ou est contenu dans
Benelux ⊂ UE
Pour tous ensembles E et F :
E ⊆ F ⇔ E ∈ PF
∅⊆E
E ⊆ E Mais ¬ (E ⊂ E)

Nicole Levy (CNAM) La méthode B 2014-2015 66 / 84


Opérateurs ensemblistes

Union, Intersection et Différence d’ensembles : ∪ et ∩ et \


Pour tous ensembles E et F :
E =E ∪E =E ∩E =E ∪∅=E \∅
∅=S∩∅=S\S =∅\S

Nicole Levy (CNAM) La méthode B 2014-2015 67 / 84


Opérateurs de relations

Appartenance : ∈
(a 7→ b) ∈ R ⇔ (a, b) ∈ R
(Pasteur 7→ 12) ∈ Reseau ⇔ (Pasteur , 12) ∈ Reseau

Domaine d’une relation : dom (R)


ensemble source d’une relation R
R ∈ A ↔ B ⇒ dom (R) = {a|a ∈ A ∧ ∃ b.(b ∈ B ∧ (a 7→ b) ∈ R)}

Co-domaine d’une relation : ran (R)


ensemble cible d’une relation R
R ∈ A ↔ B ⇒ ran (R) = {b|b ∈ B ∧ ∃ a.(a ∈ A ∧ (a 7→ b) ∈ R)}

Nicole Levy (CNAM) La méthode B 2014-2015 68 / 84


Opérateurs de relations

Image : R[A]
Ensemble des valeurs du codomaine de R en relation
avec les valeurs de A
Exemples:
Reseau[{Italie, Jussieu}] = {5, 6, 7, 10}
Reseau[{Jussieu, Pasteur }] = {6, 7, 10, 12}
Reseau[{Jussieu}] = {7, 10}
Pour toute relation R ∈ A ↔ B , A1 ⊆ A et A2 ⊆ A :
R[A1] = {b|b ∈ B ∧ ∃ a.(a ∈ A1 ∧ (a 7→ b) ∈ R)}
R[∅] = ∅
R[A1 ∪ A2] = R[A1] ∪ R[A2]
R[A1 ∩ A2] ⊆ R[A1] ∩ R[A2]
R[dom (R)] = ran (R)

Nicole Levy (CNAM) La méthode B 2014-2015 69 / 84


Opérateurs de relations
Restriction de domaine : A C R
Relation R restreinte à la partie dont le domaine est A
A C R désigne l’ensemble des couples (a 7→ b) de R pour
lesquels a appartient à A
(a 7→ b) ∈ (A C R) ⇔ (a 7→ b) ∈ R ∧ a ∈ A

Exemples:
{Italie, Jussieu} C Reseau = {(Italie 7→ 5), (Italie 7→ 6), (Italie 7→ 7),
(Jussieu 7→ 7), (Jussieu 7→ 10)}
{Jussieu, Pasteur } C Reseau = {(Jussieu 7→ 7), (Jussieu 7→ 10),
(Pasteur 7→ 6), (Pasteur 7→ 12)}
Pour toute relation R et tout ensemble A : A C R ⊆ R
dom (R) C R = R
∅CR =∅
dom(A C R) = A ∩ (dom (R))

Nicole Levy (CNAM) La méthode B 2014-2015 70 / 84


Opérateurs de relations

Restriction de co-domaine : R B B
Relation R restreinte à la partie dont le co-domaine est B
R B B désigne l’ensemble des couples (a 7→ b) de R pour
lesquels b appartient à B :
(a 7→ b) ∈ (R B B) ⇔ (a 7→ b) ∈ R ∧ b ∈ B

Exemples:
Reseau B {6, 7} = {((Italie 7→ 6), (Italie 7→ 7),
(Jussieu 7→ 7), (Pasteur 7→ 6), ...}
Reseau B {7} = {(Jussieu 7→ 7), (Italie 7→ 7), ...}
Pour toute relation R et tout ensemble B : R B B ⊆ R
R B ran (R) = R
RB∅=∅
ran(R B B) = ran (R) ∩ B

Nicole Levy (CNAM) La méthode B 2014-2015 71 / 84


Opérateurs de relations

Antirestriction de domaine : A − CR
Complément de la relation A C R dans R
A−C R désigne l’ensemble des couples (a 7→ b) de R pour
lesquels a n’appartient pas à A :
(a 7→ b) ∈ (A −C R) ⇔ (a 7→ b) ∈ R ∧ a ∈/ A Pour toute
relation R et tout ensemble A : A −
C R = (X \ A) C R
A−CR ⊆R
(dom (R)) −CR =∅
∅−CR =R
dom(A − C R) = (dom (R)) \ A

(A C R) ∪ (A −
C R) = R
(A C R) ∩ (A −
C R) = ∅

Nicole Levy (CNAM) La méthode B 2014-2015 72 / 84


Opérateurs de relations

Antirestriction de co-domaine : R − BB
Complément de la relation R − B B dans R
R− B B désigne l’ensemble des couples (a 7→ b) de R pour
lesquels
b n’appartient pas à B :
(a 7→ b) ∈ (R −
B B) ⇔ (a 7→ b) ∈ R ∧ b ∈ /B
Pour toute relation R et tout ensemble B : R −
BB⊆R
R− B ran R = ∅
R− B ∅ = R ran(R −B B) = ran (R) \ B

(R B B) ∪ (R −
B B) = R
(R B B) ∩ (R −
B B) = ∅

Nicole Levy (CNAM) La méthode B 2014-2015 73 / 84


Opérateurs de relations

Composition avant : R1 o9 R2
Soient R1 ∈ A ↔ B et R2 ∈ B ↔ C
Alors R1 o9 R2 représente la composition de R1 et R2.
Elle contient l’ensemble des couples (a 7→ c) tels que
il existe un élément b de B tel que (a 7→ b) ∈ R1 et
(b 7→ c) ∈ R2 :
(a 7→ c) ∈ R1 o9 R2 ⇔ ∃ b : B.(a 7→ b) ∈ R1 ∧ (b 7→ c) ∈ R2

R1 ∈ A ↔ B & R2 ∈ B ↔ C ⇒ R1 o9 R2 ∈ A ↔ C

R1 o9 (R2 o9 R3) = (R1 o9 R2) o9 R3

Nicole Levy (CNAM) La méthode B 2014-2015 74 / 84


Opérateurs de relations
Relation Identité : id(A)
Relation qui applique tous les x ∈ A sur eux-même
id(A) représente la relation construite sur A qui associe à
tout élément de A ce même élément :
id(A) = {a1, a2|a1 ∈ A ∧ a2 ∈ A ∧ a1 = a2}

(a1 7→ a2) ∈ id A ⇔ a1 ∈ A ∧ a2 ∈ A ∧ a1 = a2
Relation Inverse : R−1
R−1 représente la relation composée des couples
inverses de ceux de R.
(b 7→ a) ∈ R−1 ⇔ (a 7→ b) ∈ R

(R−1 )−1 = R
(id A)−1 = id A
dom (R−1 ) = ran (R)
ran (R−1 ) = dom (R)
Nicole Levy (CNAM) La méthode B 2014-2015 75 / 84
Opérateurs de relations

Surcharge : R1 −
−R2
C
R1 −
−R2 désigne la relation constituée des éléments de
C
R2 et des éléments de R1 dont le premier élément
n’appartient pas au domaine de R2.
Dans R1 −C−R2, les éléments a 7→ c de R2 surchargent les
éventuels éléments a 7→ b de R1.
∀ R1, R2 • (R1 ∈ A ↔ B ∧ R2 ∈ A ↔ B) ⇒
R1 −
−R2 = (dom (R2) −
C C R1) ∪ R2

R−
−R = R
C
∅−
−R = R −
C −∅ = R
C

dom (R1 −
−R2) = dom (R1) ∪ dom (R2)
C
dom (R1) ∩ dom (R2) = ∅ ⇒ R1 − −R2 = R1 ∪ R2
C

Nicole Levy (CNAM) La méthode B 2014-2015 76 / 84


La relation Pays Limitrophes (1/4)

SYSTEM
PAYS
SETS
LESPAYS = {B , Lux , NL , Ger , CH };
VARIABLES
relref ∈ LESPAYS ↔ LESPAYS
pays ∈ LESPAYS ↔ LESPAYS
reltrans ∈ LESPAYS ↔ LESPAYS
ens pays ⊆ LESPAYS

Nicole Levy (CNAM) La méthode B 2014-2015 77 / 84


La relation Pays Limitrophes (2/4)

INVARIANT
( ∀ aa . (aa ∈ LESPAYS ⇒ (aa 7→ aa) ∈ relref )) ∧
( ∀ (aa, bb) . ( (aa 7→ bb) ∈ pays ⇒ (bb 7→ aa) ∈ pays )) ∧
( ∀ (aa, bb, cc).(((aa 7→ bb) ∈ reltrans ∧ (bb 7→ cc) ∈ reltrans)
⇒ (aa 7→ cc) ∈ reltrans))
INITIALISATION
relref := { (B 7→ B),(NL 7→ NL),(Ger 7→ Ger), (NL 7→ Lux),
(Lux 7→ Lux), (NL 7→ Ger),(Ger 7→ NL),(Ger 7→ CH),
(CH 7→ CH) } ;
pays := { (B 7→ Lux),(B 7→ NL),(Lux 7→ B), (Lux 7→ NL),
(B 7→ Ger),(Lux 7→ Ger),(NL 7→ B),NL 7→ Lux),
((NL 7→ Ger),(Ger 7→ B),(Ger 7→ Lux),(Ger 7→ NL),
(Ger 7→ CH),(CH 7→ Ger) } ;

Nicole Levy (CNAM) La méthode B 2014-2015 78 / 84


La relation Pays Limitrophes (3/4)

reltrans:= {(B 7→ Lux),(Lux 7→ NL ),(B 7→ NL), (NL 7→ Ger),


(Lux 7→ Ger), (B 7→ Ger)} ;
ens pays := ∅
OPERATIONS
Limitrophes (unpays ∈ LESPAYS ) =
ens pays := {pp | pp ∈ LESPAYS ∧
((unpays 7→ pp) ∈ pays ∨ (pp 7→ unpays) ∈ pays ) }
AutreLimitrophes (unpays ∈ LESPAYS ) =
ens pays := pays[{unpays}]

Nicole Levy (CNAM) La méthode B 2014-2015 79 / 84


La relation Pays Limitrophes (4/4)

LimitrophesLimitrophes (unpays ∈ LESPAYS ) =


ens pays := ran(({unpays} C pays) ; pays)
DeuxLimitrophes (unpays ∈ LESPAYS ) =
ens pays := {pp | pp ∈ LESPAYS ∧ card({pp} C pays)=2 }
NouvPays (unp1,unp2 ∈ LESPAYS ) =
pays := pays −
− {(unp1 7→ unp2) , (unp2 7→ unp1)}
C
END

Nicole Levy (CNAM) La méthode B 2014-2015 80 / 84


Opérateurs de fonctions

Une fonction est un cas particulier de relation



tous les opérateurs sur les relations
s’appliquent aussi sur les fonctions

Nicole Levy (CNAM) La méthode B 2014-2015 81 / 84


Opérateurs de fonctions
Modification d’un objet de type fonction

Une fonction peut être modifiée en lui ajoutant ou en lui retirant des
couples d’éléments :
SYSTEM
STOCK
SETS
ARTICLE ;
MESSAGE = {RAS, erreur}
VARIABLES
stock ∈ ARTICLE → 7 N
INITIALISATION
stock := ∅

Nicole Levy (CNAM) La méthode B 2014-2015 82 / 84


Opérateurs de fonctions
Modification d’un objet de type fonction

OPERATIONS
CompleterStock (art ∈ ARTICLE , qt ∈ N ) =
IF art ∈ dom(stock) THEN
stock := stock −
− { art 7→ stock(art) + qt }
C
ELSE
stock := stock ∪ { art 7→ qt }
END;
mess ← Retirer Article Stock (art ∈ ARTICLE) =
IF art ∈ dom(stock) ∧ stock(art) = 0 THEN
stock := stock - { art 7→ stock(art) } ;
mess := RAS
ELSE
mess := erreur
END
END

Nicole Levy (CNAM) La méthode B 2014-2015 83 / 84


Correction d’une machine: les obligations de preuve
"La dynamique doit respecter la statique"

Un système est dans un état correct


ssi
ses variables vérifient l’invariant

Il faut prouver qu’un système est toujours dans un état correct:


ses variables doivent toujours vérifier l’invariant.

Preuve par récurrence:


L’invariant est vérifié par l’initialisation : [Init]INV
Pour chaque opération : Il faut PROUVER que l’opération
préserve l’invariant:
Si l’invariant est satisfait avant son application
Alors il l’est aussi après
P ∧ INV ⇒ [S] INV

Nicole Levy (CNAM) La méthode B 2014-2015 84 / 84

Vous aimerez peut-être aussi