Aller au contenu

Langage B

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.


Interwikis

Sur les autres projets Wikimedia :

Le langage B est issu de la Méthode B. Ce langage a été défini initialement par JR-Abrial. Il s'agit d'un langage formel qui permet d'exprimer des modèles conceptuels. L'intérêt de ce langage est de permettre d’établir des preuves sur le modèle ainsi défini. La plateforme B bénéficie d'un prouveur. Il est donc possible d'énoncer des propriétés invariantes sur l’ensemble du système quel que soit son état.


Utilisation du langage B

[modifier | modifier le wikicode]

Le B a été utilisé pour divers projets d'envergure tel que la ligne 14 du métro parisien. Grâce aux travaux effectués par Ericson sur ce projet le langage a pu progresser, ainsi que le prouveur.

Objectif de ce cours

[modifier | modifier le wikicode]

Le but de ce cours est de permettre de comprendre la syntaxe et les particularités du langage B.

Une Machine : Un modèle de système écrit en B

Première machine

[modifier | modifier le wikicode]

La première machine que nous allons voir permet de décrire un programme qui permute la valeur de deux variables.

MACHINE
	swap
VARIABLES
	xx, yy
INVARIANT
	xx : NAT & yy : NAT
INITIALISATION
	xx :: NAT ||
	yy :: NAT
OPERATIONS
	echange =
	BEGIN
		xx := yy
	||	yy := xx
	END
END

Comme vous pouvez le voir les machines sont composées de plusieurs éléments. Le nom de la machine précédé du mot clef MACHINE (Tous les mots clefs doivent être écrit en majuscule). Ensuite le nom de la machine. Ensuite arrivent les variables de la machine. C'est l'unique façon en B de déclarer une variable. À ce stade la variable n’est pas typée encore. Le typage se fait dans la partie INVARIANT. Dans cette partie se déclarent toutes les propriétés qui doivent être vérifiable en tout point du programme. Un Type se déclare donc de la manière suivante: nomDeVariable : TypeDeLaVariable Dans notre cas il s'agit de variable de type NAT, pour naturel. l'opérateur & permet de chainer les propriétés entre elles. Ensuite vient l'initialisation du système. Les variables sont définies par n’importe quelle valeur de type Naturel. Ici pour chainer les opérations nous utilisons l'opérateur ||. Cet opérateur défini que deux opérations sont exécutées en parallèle. En effet en B toute opération doit être effectué en parallèle.

Et finalement nous en arrivons à la partie OPERATION. C'est dans cette section que sont définies les fonctions de notre machine. Une opération se déclare de la façon suivante:

nomDeLOperation = 
BEGIN
operation1||operation2
END

Dans notre cas on peut voir que les deux variables prennent chacune la valeur de l'autre. Ceci peut se faire en seulement deux lignes, opération sur place, grâce au fait que les opérations sont toutes en parallèle.