• Aucun résultat trouvé

A.3 Theorie des ensembles

A.3.1 Les types

EORIE DES ENSEMBLES 153

r =p )q r est egal a p impliqueq. L'implication est de nie de la m^eme facon que :p _q. r a la valeurvrai si petq ont la valeurvrai ou si p a la valeur faux

r =p ,q r est egal a p equivaut a q. L'equivalence est de nie de la m^eme facon que p )q ^q )p. r a la valeurvrai si p et q ont la m^eme valeur

p q :p p ^q p _q p )q p ,q

vrai vrai faux vrai vrai vrai vrai

vrai faux faux faux vrai faux faux

faux vrai vrai faux vrai vrai faux

faux faux vrai faux faux vrai vrai

A.2.2 Quanti cation

La logique des predicats etend la logique propositionnelle avec la quanti cation des variables:

8X p quel que soitX, alors p

9X p il existe X pour quep ait la valeur vrai

9

1X p il existe un unique X pour lequel p a la valeur vrai

A.3 Theorie des ensembles

Le langage Z n'est en fait pas base directement sur une theorie des ensembles mais sur les axiomesde Zermelo-Fraenkel,sans l'axiomedu choix et sans le schemade remplacement [Monin96]. Ceci permet d'assurer l'existence d'une classe d'ensembles cloisonnes appeles types. Ces types sont disjoints. Il n'est pas possible de les reunir ou de former un ensemble comportant des individus choisis parmi plusieurs d'entre eux. Il existe cependant quelques operateurs permettant de construire des types composes.

L'utilisation des types dans le langage Z est tres restrictive. Par contre les types per-mettent de veri er que les operations sur les ensembles ne sont pas des non sens et ils aident donc a la structuration des speci cations.

A.3.1 Les types

Les types sont de quatre sortes: les types construits, les types libres, les types de base et les schemas.

Le seul type construit estZ.Nou N

1 ne sont pas des types (bien qu'ils soient reguliere-ment utilises tels quels), mais des sous-ensembles deZ.Rn'est pas non plus un type, bien que certains auteurs proposent de l'inclure dans le langage Z en tant que type construit.

Les types de base permettent de declarer des types sans se soucier de ce que sont reellement les individus (ou presque). Par exemple, si nous voulons utiliser des ensembles de villes et de personnes dans une speci cation, nous devons declarer les types:

[VILLE;PERSONNE]

Il faut cependant supposer que les individus sont de nis de maniere unique. Si nous identi ons les personnes par leur nom,((dupont ))ne peut representer qu'un seul individu d'un ensemble de type PERSONNE. Il pourrait tout aussi bien representer un individu d'un ensemblede type VILLE, par contre il ne peut pas exister en m^emetemps un individu

((durand ))d'un ensemble de type PERSONNE et un autre d'un ensemble de type VILLE. Les types libres sont des types dont les individus possibles des ensembles de ce type sont enumeres. Par exemple, si nous voulons que les ensembles de villes ne comportent que certaines villes, nous pouvons declarer le type:

Ville ::=Lille jLyonjMarseille jParis jToulouse

Il est egalement possible de construire un type libre a partir d'autres types ou de lui-m^eme ([Spivey94], page 83, pour plus de details):

TypeLibre2 ::= element1jconstr1hhTypeLibre1iijconstr2hhTypeLibre2iij:::

Cette possibilite est tres utile pour decrire des structures recursives tellesque les arbres. Un schema peut egalement^etre utilisse commetype (voir section A.4.4). La declaration d'un type schema consiste a ecrire le schema, comme n'importe quel schema (voir section A.4) pour tout ce qui concerne les schemas).

Un type peut egalement ^etre declare par l'utilisation d'une de nition abregee. Elle permet de:

{ rede nir un type pour un besoin particulier:

DATE =b N

{ de de nir un type en comprehension (voir section sur les ensembles):

A.3. TH 

EORIE DES ENSEMBLES 155

{ de de nir un type comme le produit cartesien de plusieurs types:

PERSONNE =b NOM PRENOM

A.3.2 Les ensembles

A partir de maintenant, le terme ensemble ne comprendra pas les types presentes pre-cedemment. Un ensemble est une collection d'individus. Tout ensemble ou tout individu doit ^etre declare, c'est a dire type. Par exemple:

durand :PERSONNE signi e quedurandest une variable qui prend commeva-leur un individu de type PERSONNE (pour faire plus court, on ecrira plut^ot par la suite: durand est un indi-vidu de typePERSONNE),

homme :PPERSONNE signi e quehommeest une variable qui prend commeva-leur un ensemble de type PERSONNE (pour faire plus court, on ecrira plut^ot par la suite: homme est un en-semble de type PERSONNE).

Il existe d'autres declarations possibles:

homme :FPERSONNE signi e que homme est un ensemble ni de type

PERSONNE,

homme :P

1PERSONNE signi e que homme est un ensemble non vide de type

PERSONNE,

homme :F

1PERSONNE signi e quehomme est un ensemble ni non vide de type

PERSONNE.

Un ensemble peut ^etre declare par enumeration: A =b f1;2;3;5;7g signi e que l'en-semble A est egal a l'enl'en-semble comprenant les individus 1, 2, 3, 5 et 7. L'enl'en-semble vide peut s'ecrire de deux manieres: ; et fg. En fait, il n'existe pas un seul ensemble vide, mais un par type de ni, cependant son ecriture et sa de nition sont generiques.

Les individus de type produit cartesien de plusieurs types (X Y) sont appeles des n-uplets. Ils s'ecrivent (x;y;z) (ou x 7!y 7!z, voir section relations), et un n-uplet est ordonne. On appelle couple un n-uplet forme de deux types, triplet un n-uplet forme de trois types, quadruplet un n-uplet forme de quatre types, etc.

Les operateurs habituels d'operation sur les individus et sur les ensembles sont utili-sables en Z. On retrouve ainsi:

x =y l'expression x est egale a l'expressiony x 6=y l'expression x n'est pas egale a l'expressiony a 2A a est un individu de l'ensembleA

a 2= A a n'est pas un individu de l'ensembleA

AB l'ensembleA est un sous-ensemble de l'ensembleB AB A est un sous-ensemble propre de B (AB ^A6=B)

C =A[B l'ensembleC est egal a l'union des ensemblesA etB

C =A\B l'ensembleC est egal a l'intersection des deux ensemblesA et B C =AnB l'ensembleC est egal a la di erence des deux ensemblesAet B

8A;B :PX AnB =fx :X jx 2A^x 2= Bg

B =S

A l'ensembleB est egal a l'union generalisee de l'ensembled'ensemblesA

8A:P(PX) S

A=fx :X j(9S :Ax 2S)g

B =T

A l'ensemble B est egal a l'intersection generalisee de l'ensemble d'en-semblesA

8A:P(PX) T

A=fx :X j(8S :Ax 2S)g

n = #A n est egal a la cardinalite de l'ensembleA (nombre d'individus deA)