0% ont trouvé ce document utile (0 vote)
90 vues35 pages

ExercicesLogPropPredEnsRelFonc Cor22

Le document présente des exercices sur la logique des ensembles, des relations et des fonctions, en utilisant le langage B. Il inclut des formalismes pour modéliser des relations entre des ensembles abstraits tels que PERSONNES, PLATS, et VOITURES, ainsi que des questions sur des concepts comme les fonctions injectives et surjectives. Les exercices couvrent également des notions de famille, de genre, et d'abonnés dans un contexte de gestion de places.

Transféré par

chedenbenammar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
90 vues35 pages

ExercicesLogPropPredEnsRelFonc Cor22

Le document présente des exercices sur la logique des ensembles, des relations et des fonctions, en utilisant le langage B. Il inclut des formalismes pour modéliser des relations entre des ensembles abstraits tels que PERSONNES, PLATS, et VOITURES, ainsi que des questions sur des concepts comme les fonctions injectives et surjectives. Les exercices couvrent également des notions de famille, de genre, et d'abonnés dans un contexte de gestion de places.

Transféré par

chedenbenammar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Exercices

Logique Prop/Prédicats
Ensembles/Relation/Fonctions
CORRECTION
Notation :Soient S et T des ensembles et R une relation

Opérateurs Notation ASCII


Restriction de domaine S <| R
Restriction deco-domaine R |> S
(Restriction de l’image)
Soustraction de domaine S <<| R
(Anti-restriction de domaine)
Produit direct ><
Surcharge (overriding) <+
Soustraction de co-domaine R |>> S
(anti-restriction de co-domaine)
Fonction partielle S +-> T
Fonction totale S --> T
Fonction injective partielle S >+> T
Fonction injective totale S >-> T
Fonction surjective partielle S +- >> T
Fonction surjective totale S -- >> T
Fonction bijective partielle S >+>> T
Fonction bijective totale S >->> T

Exercice 1:
Soient deux ensembles abstraits PERSONNES et PLATS, et la relation repas qui associe à
chaque client d’une cafétéria ce qu’il a pris à manger. La relation repas est ainsi définie de la
façon suivante :

repas PERSONNES ↔ PLATS.

A. Formaliser en langage B, sans utiliser de quantificateur existentiel ou universel, les


ensembles et les relations correspondant aux définitions suivantes :
(utiliser seulement les opérations ensemblistes et relationnelles)

1. plat_consomme, l’ensemble des plats qui ont été consommés


2. client, l’ensemble des personnes qui ont mangé au moins un plat
3. personne_aucun_plat, l’ensemble des personnes qui n’ont rien mangé
4. client_pizza, l’ensemble des personnes qui ont mangé de la pizza
5. personne_pas_de_salade, l’ensemble des personnes qui n’ont pas mangé de salade
6. client_pas_de_salade, l’ensemble des personnes qui ont mangé mais qui n’ont pas mangé
de salade
7. plats_clients_pomme, l’ensemble des plats mangés par les personnes ayant mangé une
pomme.
8. client_plat_commun, la relation associant, deux à deux, les différentes personnes ayant
mangé au moins un plat semblable
9. plats_client_commun, la relation associant, deux à deux, les différents plats mangés par
une même personne.

B. Soient les instanciations suivantes pour la relation repas :


repas = {(ali, pizza), (ali, tarte), (asma, salade), (asma, pomme), (asma, tarte), (foued,
salade), (foued, pomme)}

Calculer le résultat des expressions suivantes :

1. ran (repas)
2. dom(repas)
3. repas -1([{pomme}])
4. repas|> {pomme}
5. repas([repas -1([{pomme}])])
6. (repas ; repas -1) – Id(PERSONNES)
7. repas |>>{pomme, pizza, salade}
8. repas  {(foued, carotte)}
Exercice 2:
1. Donner une formule équivalente à (x,y) S <| R uniquement en terme d’appartenance
à S et R
2. Donner une formule équivalente à (x,y)R ;Q uniquement en terme d’appartenance à
R et Q puis en utilisant l’anti-restriction (restriction de co-domaine) |>.
Exercice 3:
Soientle relations suivantes

- haswheels : WheeledVehicles  N1
haswheels = {(Unicycle,1), (Bicycle,2), (Tricycle ,3)}
- rides : Toms  WheeledVehicles
rides = {(Ben,Unicycle), (Ben, Bicycle), (Alice, Bicycle), (Henry, Bicycle)}
On voudrait construire une relation ridesonwheels, qui donne le nombre de roues du véhicule
conduit par chaque élément de Toms.

1. Donnez la relation ridesonwheels à l’aide de rides et haswheels,


2. Donnez en extension ridesonwheels.
3. Quelles sont les relations définies par
a. {Alice} <| (rides ; haswheels)
b. ({Alice} <| rides) ; haswheels
c. (rides ; haswheels)|>{2}
d. (rides ; haswheels) |>{2}
e. rides |>{Bicycle}

2/2
4. Qu’exprime-t-on avec
a. dom(rides |>{Bicycle})
b. # (dom(rides {Bicycle}))
5. Déterminez
a. rides([{Ben, Alice}])
b. rides([{Kate, Alice}])
c. rides−1([{Unicycle}])
6. Exprimez
a. L’ensemble des personnes qui conduisent un bicylce ;
b. Le nombre de personnes qui conduisent un unicycle ;
c. L’ensemble des personnes qui ne consuidsent pas d’unicycle.
Exercice 4:
Soient les ensembles abstraits PERSONNES, VOITURES et, la relation conduit telle que

conduit PERSONNES ↔VOITURES, et la fonction construit telle que

construit VOITURES→ MARQUES.

Par exemple, on peut instancier ces données de la manière suivante :

- PERSONNES= {ali, salah, foued, asma}


- VOITURES= {clio, C5, 307, 207}
- MARQUES = {renault, peugeot, citroen}
- conduit = {(ali, megane), (salah, megane), (salah, C5), (foued, 307)}
- construit ={(clio, renault),(C5, citroen), (307, peugeot), (207, peugeot)}

I. Sur la base de ces instantiations, donnez les resultats des expressions suivantes :
1. Id(MARQUES)
2. conduit ([{salah, foued}])
3. ran(conduit) dom(construit)
4. conduit |>{clio, 207}
5. {foued, asma} <<|conduit
6. conduit {(salah, C5), (asma, 207)}
7. conduit {(salah, C5), (asma, 207)}
8. conduit ; {(salah, C5), (asma, 207)}
9. conduit ο{(salah, C5), (asma, 207)}
10. construit(C5)

II. Formalisez maintenant en langage B, sans utiliser de quantificateur existentiel ou


universel, les ensembles correspondant aux définitions suivantes :
1. pietons, l’ensemble des personnes qui ne conduisent aucune voiture
2. conduit_peugeot, l’ensemble des personnes qui conduisent une voiture peugeot
3. possède_marque, la relation, liant PERSONNES à MARQUES associant les
personnes aux marques de voiture qu’elles conduisent
3/2
Exercice 5:
A l’aide des notions introduites dans ce chapitre, on souhaite formaliser, à partir d’un
ensemble de personnes PERSONNES, les ensembles abstraites suivants :

1. hommes, l’ensemble des hommes


2. femmes, l’ensemble des femmes
Dans un second temps, sur la base des ensembles hommes et femmes, et sans utiliser de
quantificateur existentiel ou universel, on se propose de modéliser les relations et / ou
fonctions suivantes :

1. a_pour_epoux, l’ensemble des couples liant une femme à son époux


2. a_pour_epouse, l’ensemble des couples liant un homme à son épouse
3. a_pour_mère, l’ensemble des couples liant une personne à sa mère
4. a_pour_père, l’ensemble des couples liant une personne à son père
5. a_pour_enfant, l’ensemble des couples liant un parent à chacun de ses enfants
6. a_pour_frère, l’ensemble des couples liant une personne à chacun de ses frères
7. a_pour_soeur, l’ensemble des couples liant une personne à chacun de ses sœurs

Note : Pour résoudre cet exercice, on s’attachera d’abord à modéliser des concepts primitifs
(par exemple l’ensemble hommes et les relations a_pour_epoux et a_pour_mère). En fonction
de ces derniers, il est ensuite possible de définir chacun des autres concepts.

Exercice 6:
En appliquant une approche similaire à celle mise en œuvre pour l’exercice précédent, on
cherche à formaliser en langage B les ensemble correspondant aux définitions suivantes :

1. père, l’ensemble des hommes qui sont pères d’au moins un enfant
2. mère, l’ensemble des femmes qui sont mères d’au moins un enfant
3. frère_ou_soeur, l’ensemble de couples associant les personnes qui sont frères ou
sœurs (personnes qui ont les deux mêmes parents).
4. Tante, l’ensemble des personnes qui son tantes d’au moins un enfant, c’est-à-dire
l’ensemble des personnes féminines dont le frère ou la sœur a au moins un enfant.
Pour répondre à ces questions, on dispose des ensembles prédéfinis PERSONNES (ensemble
abstrait) et GENRE tel que GENRE = {masculin, féminin}, et des trois fonctions
a_pour_genre, a_pour_père et a_pour_mère suivantes :

- a_pour_genrePERSONNES → GENRES
- a_pour_pèrePERSONNES -|->a_pour_genre-1[{masculin}])
- a_pour_mèrePERSONNES -|->a_pour_genre-1[{féminin}])
Exercice 7:
4/2
Soit un ensemble abstrait PERSONNE

• R1 : toute personne est soit un homme, soit une femme


• R2 : une personne ne peut être à la fois un homme et une femme
• R3 : seules les femmes peuvent avoir un mari qui est un homme
• R4 : les femmes ont au plus un mari
• R5 : les hommes ne peuvent être mariés qu’à au plus une femme
• R6 : les mères d’une personne sont des femmes mariées
Solution (Exercice 7):
R1 : toute personne est soit un homme, soit une femme
homme  PERSONNE, femme  PERSONNE, homme  femme = PERSONNE
R2 : une personne ne peut être à la fois un homme et une femme
homme femme = 
R3 : seules les femmes peuvent avoir un mari qui est un homme
mari femme ↔ homme
R4 : les femmes ont au plus un mari
mari femme -|->homme
R5 : les hommes ne peuvent être mariés qu’à au plus une femme
Mari-1 homme -|-> femme mari femme >-|-> homme
R6 : les mères d’une personne sont des femmes mariées
mères dom(mari )

Exercice 8:
Soit BADGES, CLIENTS et PLACES trois ensembles

▪ Les abonnés sont des clients particuliers

▪ Chaque badge appartient à un unique abonné

▪ Certaines places sont réservées

▪ Plan d’occupation des places

▪ Respect des réservations

Solution (Exercice 8):


Soit BADGES, CLIENTS et PLACES trois ensembles

− Les abonnés sont des clients particuliers


ABONNES ⊆CLIENTS
− Chaque badge appartient à un unique abonné:
5/2
badges∈BADGES >→ ABONNES (Injection totale)
− Certaines places sont réservées et tous les abonnés ont des places réservées
reservées∈ (PLACES -|->> ABONNES) (Surjection partielle)
− Plan d’occupation des places :
occupées∈PLACES -|-> CLIENTS (Fonction partielle)
− Respect des réservations :
∀p · (p ∈ dom(occupées) ∩ dom(réservée) ⇒occupées(p) = réservées(p))
Exercice 9 :(A modifier : prédicats ---> relations) ≠
Soient les ensembles suivants :

PERSONNE : ensemble contenant toutes les personnes (abstrait)

FEMININ : ensemble contenant toutes les personnes féminines (abstrait)

Soient les relations Père et Mère suivantes :

PèrePERSONNE ↔ PERSONNE définie de la manière suivante :

(p, e)  Père (ou p Père e) signifie la personne p est le père de la personne e

MèrePERSONNE ↔ PERSONNE

(m, e) Mère (ou m Mère e) signifie la personne m est la mère de la personne e

EpouxPERSONNE ↔ PERSONNE

(h, f) Epoux (ou h Epoux f)signifie h est l’époux (le mari) de f

Exprimez chacun des énoncés suivants en utilisant des ensembles, des relations et des
fonctions:

1- MASCULIN est l’ensemble de toutes les personnes masculines


MASCULIN = PERSONNE - FEMININ

2- Parent : (x, y)Parent signifie x est le père de youx est la mère de y


Parent = Père Mère
Parent PERSONNE ↔ PERSONNErelation

3- Parents : (x,y,z)Parents signifie x est le père de z et y est la mère de z


Parents = (Père-1Mère-1)-1produit direct
Parents (PERSONNE x PERSONNE)↔ PERSONNE relation

4- Epouse : (x, y)Epouse signifie x est l’épouse(la femme) de y


Epouse PERSONNE ↔ (PERSONNE x PERSONNE) relation
6/2
Epouse = Epoux-1

5- Enfant : (x, y, z)Enfant signifie y est le père de x et z est la mère de x


Enfant = Parents-1
Enfant PERSONNE ↔ (PERSONNE x PERSONNE) relation
Enfant PERSONNE → (PERSONNE x PERSONNE)fonction totale
6- Fils :(x, y)Fils signifie y est le père ou la mère dexqui est masculin
Fils = (MASCULIN<| Parent-1)
Fils PERSONNE ↔ PERSONNErelation
FilsMASCULIN↔ PERSONNErelation

7- Fille : (x, y)Fille signifie y est le père ou la mère dexqui est féminin
Fille = (FEMININ<| Parent-1)
Fille = Parent-1- Fils
Fille PERSONNE ↔ PERSONNErelation
FilleFEMININ↔ PERSONNErelation

8- Frère : (x, y)Frére signifie x est le frère dey (x et y ont même père et même mère)
Frère = (MASCULIN < |(Enfant ; Enfant-1)) – Id (MASCULIN)
=((MASCULIN <| Enfant) ; Enfant-1) – Id (MASCULIN)
Frère PERSONNE ↔ PERSONNErelation
FrèreMASCULIN↔ PERSONNErelation

9- Demi-frère-paternel : (x, y)Demi-frère-paternel signifie x est le frère dey (x et y


ont même père maisles mères sont différentes)
Demi-frère-paternel = (Fils ; Père-1 ;Père) – (Id (MASCULIN)Frère)
Demi-frère-paternel  PERSONNE ↔ PERSONNErelation
Demi-frère-paternel MASCULIN↔ PERSONNErelation
10- Demi-frère-maternel : (x, y)Demi-frère-maternel signifie x est le frère dey (x et y
ont même mère maislespères sont différents)
Demi-frère-maternel = (Fils ; mère-1 ; mère) – (Id (MASCULIN) Frère)
Demi-frère-maternel = Frère – Demi-frère-paternel
Demi-frère-maternel  PERSONNE ↔ PERSONNErelation
Demi-frère-maternel MASCULIN↔ PERSONNErelation

11- Frère1 : (x, y)Frére1 signifie x est le frère dey (x et y ont au moins un parent en
commun)
Frère1 = Demi-frère-paternelDemi-frère-maternelFrère
=(MASCULIN <| Parent-1 ; Parent) – Id (MASCULIN)
=(Fils ; Parent) – Id (MASCULIN)
Frère1 PERSONNE ↔ PERSONNErelation

7/2
Frère1MASCULIN↔ PERSONNErelation

12- Sœur : (x, y)Sœur signifie x est lasœur dey (x et y ont même père et même mère)
Sœur = (FEMININ < | (Enfant ; Enfant-1)) – Id (FEMININ)
=((FEMININ<| Enfant) ; Enfant-1) – Id (FEMININ)
Sœur PERSONNE ↔ PERSONNErelation
SœurFEMININ↔ PERSONNErelation

13- Demi-Sœur-paternelle : (x, y)Demi-Sœur-paternelle signifie x est lasœur dey (x et


y ont même père maisles mères sont différentes)
Demi-Sœur-paternelle= (Fille ; Père-1 ; Père) – (Id (FEMININ) Sœur)
Demi-Sœur-paternelle PERSONNE ↔ PERSONNErelation
Demi-Sœur-paternelleFEMININ↔ PERSONNErelation

14- Demi-Sœur-maternelle: (x, y)Demi-Sœur-maternel signifie x est lasœur dey (x et y


ont même mère maislespères sont différents)
Demi-Sœur-maternelle= (Fille ; mère-1 ; mère) – (Id (FEMININ) Sœur)
Demi-Sœur-maternelle= Sœur – Demi-Sœur-paternelle
Demi-Sœur-maternelle PERSONNE ↔ PERSONNErelation
Demi-Sœur-maternelleFEMININ↔ PERSONNErelation

15- Sœur1: (x, y)Sœur1 signifie x est laSœur dey (x et y ont au moins un parent en
commun)
Sœur1 = Demi-Sœur-paternelleDemi-Sœur-maternelle Sœur
=(FEMININ<| Parent-1 ; Parent) – Id (FEMININ)
=(Fille ; Parent) – Id (FEMININ)
Sœur1 PERSONNE ↔ PERSONNErelation
Sœur1FEMININ↔ PERSONNErelation

16- FrèreOuSoeur: (x, y)FrèreOuSoeur signifie x est le frère ou lasœur dey (x et y ont
même père et même mère)
FrèreOuSoeur = FrèreSœur
=(Enfant ; Enfant-1) – Id (PERSONNE)
FrèreOuSoeur PERSONNE ↔ PERSONNE relation

17- Demi-FrèreOuSoeur-paternel
18- Demi-FrèreOuSoeur-maternel
19- FrèreOuSoeur1
20- Grand-père-paternel
21- Grand-père-maternel
22- Grand-père
23- Grand-mère-paternel
8/2
24- Grand-mère-maternel
25- Grand-mère
26- Grand-parent-paternel
27- Grand-parent-maternel
28- Grand-parent
29- Grand-parents-paternel
30- Grand-parents-maternel
31- Grand-parents
32- Tante-paternelle
33- Tante-maternelle
34- Tante
35- Oncle-paternelle
36- Oncle-maternelle
37- Oncle
38- Cousin
39- Cousin-paternel
40- Cousin-maternel
41- Cousine
42- Cousine-paternelle
43- Cousine-maternelle
44- CousinOuCousine
45- Wafa a une fille (peut être plusieurs, et peut être des fils aussi).
(Mère {Wafa})FEMININ≠ou bien
Ran({Wafa} <| Mère)FEMININ≠ou bien
({Wafa} <| Mère); Id (FEMININ)≠ou bien
Card(Ran({Wafa} <| Mère)FEMININ)> 0ou bien
Card({Wafa} <| Mère); Id (FEMININ))> 0

46- Wafa a exactement une fille (mais peut aussi avoir des fils).
Card((Mère {Wafa})FEMININ)= 1ou bien
Card(Ran({Wafa} <| Mère)FEMININ)= 1ou bien
Card({Wafa} <| Mère); Id (FEMININ))= 1
47- Wafa a exactement un enfant, qui est une fille.
Card(Ran({Wafa} <| Mère)FEMININ)= 1etRan({Wafa} <| Mère)FEMININ

48- Wafa a au moins un enfant avec Jamel.

(Wafa, Jamel)({Wafa} <| (Mère ; Père-1))ou bien


Jamel(Mère ; Père-1){{Wafa}}ou bien
(Père-1Mère-1) |>{(Jamel, Wafa)}≠ou bien
Card((Père-1Mère-1) |>{(Jamel, Wafa)}) ≥ 1

(({Wafa} <| (Mère ; Père-1 )) |> {Jamel}) ≠(ou bien ={(Wafa, Jamel)})
9/2
Card(({Wafa} <| (Mère ; Père-1)) |> {Jamel} )= 1

49- Wafa a au moins un enfant avec Jamel, et aucun avec personne d’autre
{Wafa} <| (Mère ; Père-1)= {(Wafa, Jamel)} ou bien
-1
(Mère ; Père ){{Wafa}}={Jamel}

50- Jamel est le grand père de Wafa


(Jamel, Wafa)  (Père ; (Mère  Père ))

51- Jamel et Kamel sont des frères (deux personnes sont des frères s’ils ont au moins un
parent en commun)
((Mère  Père-1 ) {Jamel}) ((Mère-1 Père-1 ){Kamel}) ≠
-1 ou bien
({{Jamel}} <| (Mère  Père )) ;((Mère  Père )|>{{Kamel}}) ≠
-1 -1 ou bien
({{Jamel}} <| ((Mère-1 Père-1 ) ;(Mère  Père )))|>{{Kamel}} ≠ ou bien
(Jamel, Kamel)  ((Mère  Père ) ; (Mère  Père ))
-1 -1

52- Wafa n’a pas des frères


53- Wafa a des enfants qui sont tous des garçons
54- Wafa et Kamel sont des cousins
55- Jamel n’a pas des cousins

Exercice 1 :
En associant les énoncés élémentaires « Béchir est étudiant », « Kamel est étudiant »,

« Ridha est étudiant » aux propositions B, K, R, respectivement ; associer à chacun des


énoncés suivants la formule propositionnelle qui semble lui correspondre sémantiquement :
1) Exactement un seul parmi Béchir et Kamel est étudiant.
(B ¬ K) ˅ (¬ B K) ou
(B ¬ K) ou
¬ (B K)
2) Ni Béchir ni Ridha ne sont étudiants.
¬B¬R
3) Au moins l’un des trois n’est pas étudiant.
(¬B ˅ ¬ K˅¬ R)ou
¬ (B KR) ou
(¬B K R)˅(B  ¬K R)˅ (B K  ¬R)˅ (¬B  ¬K R)˅
(¬ B K  ¬ R) ˅ (B  ¬ K  ¬ R) ˅ (¬ B  ¬ K  ¬R)

4) Un seul parmi les trois n’est pas étudiant.


(¬ B K R) ˅ (B  ¬ K R) ˅ (B K  ¬ R)
5) Si Béchir est étudiant, Kamel l’est ; sinon Kamel ne l’est pas.
B Kou
(B K)(¬B ¬K)

10/2
6) Béchir est étudiant à condition que Ridha le soit.
B R

Exercice 2 :
On a un système de tuyaux et de vannes. L’état de chaque vanne est représenté par une variable
qui est vrai si la vanne est ouverte, fausse si elle est fermée. Les invariants, correspondant à des
règles de sécurité du système, sont :
F1 : si la vanne a est fermée, la vanne b doit être ouverte
F2 : si b est ouverte, soit c soit d est ouverte
F3 : si c est ouverte e est fermée
F4 : si d est ouverte f est ouverte
1. Exprimer les invariants Fi en logique propositionnelle
2. Un état correct du système est un état qui respecte tous les invariants. Exprimer cette
notion (état correct) en logique propositionnelle
3. Démontrer en utilisant la logique propositionnelle, Parmi les états suivants, quels
sont les états corrects et les états incorrects :
a. Toutes les vannes sont fermées
b. Toutes les vannes sont ouvertes
c. Les vannes a et e sont fermées et toutes les autres vannes sont ouvertes
4. Démontrer que la spécification (l’ensemble des invariants) du système est cohérente
(consistante) ?
5. Démontrer que dans un état correct les vannes ne peuvent jamais être ouvertes
simultanément.

Exercice 3 :
Lors d’un semestre un étudiant doit s’inscrire à des cours parmi les cinq cours proposés
C1,…, C5, en respectant les règles suivantes :

a) Un étudiant doit s’inscrire à au moins trois cours


b) Le cours C1 est obligatoire.
c) Les cours C4 et C5 sont incompatibles (il n’est pas possible de s’inscrire à la fois à
C4 et C5).
d) Si on veut s’inscrire à C2 il faut forcement s’inscrire à C5.
e) Si l’on s’inscrit à C4 et C3 on ne peut pas s’inscrire à plus de deux autres cours.

1. En utilisant les variables propositionnelles c1,…, c5 pour représenter l’inscription (ou la


non inscription) aux cours C1,…, C5, écrivez des formules de la logique propositionnelle
qui représentent les règles d’inscription définies ci-dessus.
2. Démontrez que cet ensemble de formule est consistant (n’est pas contradictoire).
3. Démontrez que d’après ces règles que les cours C3 et C2 sont incompatibles.
11/2
Remarque : Pour chacune des questions 2) et 3) indiquer de quelle notion logique il s’agit
(satisfiabilité, validité, conséquence logique, etc …) et écrire la formule correspondante à
démontrer. Pour les démonstrations utiliser le principe de résolution.

Exercice 4 :
1. Soit le connecteur  défini par : (P  Q) =déf (P → Q)
Transformer, en utilisant les lois d’équivalences, chacune des propositions suivantes
en une proposition équivalente (  ) qui contient seulement le connecteur

a- P, b- P  Q

a-  P  P˅ P  PP  (P  P)ou


 P  P˅ Faux  PFaux  P Vrai  (P Vrai)ou
 P  P˅ Faux   P˅ Vrai  VraiP  (VraiP)

Remarque : le connecteur est commutatif


(P  Q) =déf P → Q  Q→ P  (Q  P)

b- P Q  (P  Q)  (P ˅Q)  (P Q)


 (P Q)  (P  Q)  (P  Q)  (P Q)Vrai

2. Lesquelles parmi les implications suivantes sont vraies. Donner un contre exemple
(deux prédicats P et Q) pour les implications qui ne sont pasvraies
i. (  x (P(x) ˅ Q(x)) )  ( ( x P(x)) ˅ ( x Q(x)))
ii. ( ( x P(x)) ˅ ( x Q(x)) )  ( x (P(x) ˅ Q(x)))
iii. (  x (P(x)  Q(x)) )  ( ( x P(x))  ( x Q(x)) )
iv. ( ( x P(x))  ( x Q(x)) )  ( x (P(x)  Q(x)) )

i. Faux

Exemple 1 :
On considère le domaine d’objet D = N (l’ensemble des entiers
naturels), P(x) : x est un nombre pair, Q(x) : x est un nombre impair.

x (pair(x) ˅ impair(x)) est vrai mais


( x pair(x)) ˅ ( x impair(x))est faux puisque
( x pair(x)) est faux et ( x impair(x)) est faux aussi

Exemple 2 :
D est quelconque , P est quelconque et Q =  P

ii. Vrai
iii. Vrai
iv. Faux
12/2
Même exemples que i :
( x pair(x))  ( x impair(x)) est vrai puisque, par exemple,
pair(2)  impair(3) est vrai mais il n’existe pas un entier n qui
est à la fois pair et impair (c.-à-d. pair(n)  impair(n)) donc
 x (pair(x)  impair(x)) est faux.

Exercice 5 :
Soient les prédicatsU(x) : x est un utilisateur, Co(x) : x est connecté, E(x) : x est un
employé, Cl(x) : x est un client. Soit le domaine d’objets D : l’ensemble de toutes les
personnes. On a enregistré des personnes comme utilisateurs d’un système informatique.

Formalisez en logique des prédicats les propriétés suivantes :

1. Il y’a des utilisateurs qui ne sont pas connectés


 x U(x)  ¬ Co(x)

2. Il y’a au moins un utilisateur qui est connecté


 x U(x)  Co(x)

3. Chaque utilisateur est soit connecté soit déconnecté.


 x U(x)  Co(x) ˅ ¬Co(x)

4. Il y’a deux groupes d’utilisateurs : les employés et les clients


a. Dans le cas où il y’a seulement ces deux groupes
 x U(x)  E(x) ˅ Cl(x)

b. Dans le cas où l’existence d’autres groupes n’est pas exclue


( x U(x)  E(x))( x U(x) Cl(x))

4a. Il y’a seulement deux groupes d’utilisateurs : les employés et les clients
 x U(x)  E(x) ˅ Cl(x)

4b. Il y’a seulement deux groupes d’utilisateurs qui sont disjoints : les employés et
les clients
 x U(x) ( E(x)  ¬ Cl(x)) ˅ (¬E(x) Cl(x))
  x U(x) ¬ (E(x) Cl(x))
  x U(x) (¬E(x) Cl(x))

5. Il y’a au plus un utilisateur employé qui est connecté


( x U(x) E(x)  ¬ Co(x) ) ˅

( x (U(x)  E(x)  Co(x)  ( y . U(y)  E(y)  Co(y) x = y)))


ou bien
13/2
( x U(x) E(x) ¬ Co(x) ) ˅ ( ! x (U(x)  E(x)  Co(x)))

6. Tous les utilisateurs connectés sont des employés


 x U(x)  Co(x) E(x)

7. Les utilisateurs connectés sont soit tous des employés soit tous des clients
( x . U(x)  Co(x)  E(x)) ˅ ( x . U(x)  Co(x)  Cl(x))

7a. Les utilisateurs connectés sont tous des employés ou des clients
( x . U(x)  Co(x)  E(x) ˅ Cl(x)))

Exercice 6 :
En supposant les prédicats Père(p,q), Mère(p,q)(signifie p est père (mère) de q) et
Féminin(q)(signifie q est féminin) et les constantes Jamel, Kamel et Wafa, exprimez chacun
des énoncés suivants en logiques des prédicats :

56- Wafa a une fille (peut être plusieurs, et peut être des fils aussi).
 x Féminin(x) Mère(Wafa, x)

57- Wafa a exactement une fille (mais peut aussi avoir des fils).
 x (Féminin(x) Mère(Wafa, x)( y Féminin(y) Mère(Wafa, y) x = y))ou
bien
 ! x (Féminin(x) Mère(Wafa, x))

58- Wafa a exactement un enfant, qui est une fille.


 x (Féminin(x) Mère(Wafa, x)( yMère(Wafa, y) x = y))
ou bien
 ! x (Féminin(x) Mère(Wafa, x))

59- Wafa a au moins un enfant avec Jamel, et aucun avec personne d’autre.
 x (Mère(Wafa, x)Père(Jamel, x)
( yzMère(Wafa, y)Père(z, y)z =Jamel))

4’ Wafaet Jamel on exactement un enfant ensemble.


 x (Mère(Wafa, x) Père(Jamel, x)
( yMère(Wafa, y) Père(z, y)x=y))

60- Jamel est le grand père de Wafa


 x ((Mère(x, Wafa)˅ Père( x, Wafa)) Père(Jamel, x))

61- Jamel et Kamel sont des frères


14/2
a. Même père et même mère :

 p  m (Mère (m, Kamel)Mère(m, Jamel) Père(p, Kamel) Père(p, Jamel))

b. Au moins un parent en commun :


 x ((Mère (x, Kamel)Mère(x, Jamel))˅ (Père(x, Kamel)Père(x, Jamel)))

62- Wafa n’a pas des frères (elle peut avoir des sœurs)
a. Même père et même mère :

 m p xMère (m, Wafa)Mère(m, x) Père(p, Wafa) Père(p, x) 

Féminin(x)

b. Au moins un parent en commun :


 x y(Mère (x, Wafa)Mère(x, y))˅(Père(x, Wafa) Père(x, y))
Féminin(x)

63- Wafa a des enfants qui sont tous des garçons


( x Mère(Wafa, x)) y Mère(Wafa, y) ¬Féminin (y)

Exercice 7:
Soient les prédicats J et G et les constantes a et f définis de la manière suivante :

a : l’équipe d’Allemagne. f : l’équipe de France.

J(x;y) : x a joué un match contre y. G(x;y) : x a gagné contre y.

Exprimer en logique du premier ordre, en utilisant les prédicats et les constantes définis ci-
dessus, les assertions suivantes :

1. L’équipe de France a gagné un match et en a perdu un.


2. L’équipe de France et l’équipe d’Allemagne ont fait match nul.
3. Une équipe a gagné tous ses matchs.
4. Aucune équipe n’a perdu tous ses matchs.
5. L’équipe d’Allemagne a gagné tous ses matchs sauf un.
6. Tous ceux qui ont joué contre une équipe qui a gagné tous ses matchs, ont gagné au
moins un match

Exercice 8 :
Soient les prédicats suivants :

– R(x; y) pour x est en retard à l’examen dans la matière y.


– A(x; y) pour x est admis pour son examen dans la matière y.
– B(x; y) pour x est bon dans la matière y.
– S(x) pour x est sérieux.

15/2
Utiliser les prédicats ci-dessus pour formaliser les énoncés suivants :

1. Quelque soit la matière, il y a un élève sérieux ou bon dans cette matière.


2. Si un élève est sérieux, alors il sera à l’heure à tous ses examens.
3. Si un élève est bon dans une matière et qu’il n’est pas en retard à l’examen de cette
matière, alors il sera admis pour l’examen.
4. Si un élève est à l’heure à un examen alors, s’il est sérieux, il réussira son examen.
5. Si un élève est en retard à l’examen d’une matière, alors, s’il n’est pas bon dans cette
matière, il ratera l’examen.
6. Il y a un élève qui a réussi tous ses examens.

Exercice 9 :
Soit un vocabulaire possédant les symboles suivants :

Fonction : CouleurDeCarte (p) signifie la couleur du pays p sur la carte géographique

Prédicats: Pays (p) signifie p est un pays, Ville (v) signifie v est une ville,

Dans (v, p) signifie la ville v est dans le pays p et Frontière (p, q) signifie le pays p a des
frontières avec le pays q.

Constantes : Algérie, Tunisie, Sénégal (représentant des pays)


Sousse, Sfax (représentant des villes)
Utiliser le vocabulaire ci-dessus pour écrire les assertions suivantes en logique des prédicats :
1. Sousse et Sfax sont toutes deux en Tunisie.
2. Il existe un pays qui a des frontières à la fois avec la Tunisie et l’Algérie.
3. Tous les pays qui ont des frontières avec la Tunisie ont des frontières avec l’Algérie.
4. Aucun pays qui a des frontières avec la Tunisie n’a des frontières avec le Sénégal.
5. Il n’existe pas deux pays voisins ayant la même couleur de carte.
Exercice 10 :
Lors d’un semestre un étudiant doit s’inscrire à des cours parmi les cinq cours proposés
C1,…, C5, en respectant les règles suivantes :

a) Un étudiant doit s’inscrire à au moins trois cours


b) Le cours C1 est obligatoire.
c) Les cours C4 et C5 sont incompatibles (il n’est pas possible de s’inscrire à la fois à
C4 et C5).
d) Si on veut s’inscrire à C2 il faut forcement s’inscrire à C5.
e) Si l’on s’inscrit à C4 et C3 on ne peut pas s’inscrire à plus de deux autres cours.
Ecrire des formules de logique des prédicats qui représentent les règles d’inscription définies
ci-dessus. Utiliser l’égalité (=) et les prédicats suivants

Etudiant(x) : x est un étudiant Cours(x) : x est un cours

Inscription(x,y) : l’étudiant x est inscrit au cours y.

16/2
Exercice 8 (draft):
Soient relations suivantes : R, A et B

– x R y ssi x est en retard à l’examen dans la matière y.


– x A y ssi x est admis pour son examen dans la matière y.
– x B y ssi x est bon dans la matière y.

Et les ensembles suivant :

– E : ensemble de tous les étudiants


– M : ensemble de toutes les matières
– S : ensemble de toutes les étudiants sérieux

Formalisez en langage B, sans utiliser de quantificateur existentiel () ou universel


(), les ensembles et les propriétés correspondant aux définitions suivantes : (utiliser
seulement les opérations ensemblistes)

1. Quel que soit la matière, il y a un élève bon dans cette matière


ran(B) = M
2. Quel que soit la matière, il y a un élève sérieux ou bon dans cette matière.
( S ≠ ) ˅ (ran(B) = M)
3. Si un élève est sérieux, alors il sera à l’heure à tous ses examens.
S <| R = 
4. Si un élève est bon dans une matière et qu’il n’est pas en retard à l’examen de cette
matière, alors il sera admis pour l’examen.
5. Si un élève est à l’heure à un examen alors, s’il est sérieux, il réussira son examen.
6. Si un élève est en retard à l’examen d’une matière, alors, s’il n’est pas bon dans cette
matière, il ratera l’examen.
7. Il y a (au moins) un élève qui a réussi tous ses examens.

Dom(E x M – A) ≤ Dom(E x M)

8. Il y a un seul élève qui a réussi tous ses examens

Dom(E x M – A) = Dom(E x M) - 1

9. Aucun élève n’ a réussi tous ses examens

Dom(E x M – A) = Dom(E x M)

Exercice 9 (draft):
Soit un vocabulaire possédant les symboles suivants :

Fonction : CouleurDeCarte (p) signifie la couleur du pays p sur la carte géographique

Prédicats: Pays (p) signifie p est un pays, Ville (v) signifie v est une ville,

17/2
Dans (v, p) signifie la ville v est dans le pays p et Frontière (p, q) signifie le pays p a des
frontières avec le pays q.

Constantes : Algérie, Tunisie, Sénégal (représentant des pays)


Sousse, Sfax (représentant des villes)
Formalisez en langage B, sans utiliser de quantificateur existentiel () ou universel
(), les ensembles et les propriétés correspondant aux définitions suivantes : (utiliser
seulement les opérations ensemblistes)

1. Sousse et Sfax sont toutes deux en Tunisie.


2. Il existe un pays qui a des frontières à la fois avec la Tunisie et l’Algérie.
3. Tous les pays qui ont des frontières avec la Tunisie ont des frontières avec l’Algérie.
4. Aucun pays qui a des frontières avec la Tunisie n’a des frontières avec le Sénégal.
5. Il n’existe pas deux pays voisins ayant la même couleur de carte.
Exercice 10 (draft):
Lors d’un semestre un étudiant doit s’inscrire à des cours parmi les cinq cours proposés
C1,…, C5, en respectant les règles suivantes :

f) Un étudiant doit s’inscrire à au moins trois cours


g) Le cours C1 est obligatoire.
h) Les cours C4 et C5 sont incompatibles (il n’est pas possible de s’inscrire à la fois à
C4 et C5).
i) Si on veut s’inscrire à C2 il faut forcement s’inscrire à C5.
j) Si l’on s’inscrit à C4 et C3 on ne peut pas s’inscrire à plus de deux autres cours.
Formalisez en langage B, sans utiliser de quantificateur existentiel () ou universel (), les
règles d’inscription définies ci-dessus: (utiliser seulement les opérations ensemblistes)

Etudiant(x) : x est un étudiant Cours(x) : x est un cours

Inscription(x,y) : l’étudiant x est inscrit au cours y.

Exercice 11 :
Soit l’ensemble abstrait PERSONNES contenant toutes les personnes. On a enregistré des
personnes comme utilisateurs d’un système informatique. A un moment donné, certains
utilisateurs sont connectés à l’ordinateur. Il n’y’a pas de connexions multiples ; un
utilisateur est soit connecté soit déconnecté.

Formalisez en langage B, sans utiliser de quantificateur existentiel () ou universel


(), les ensembles et les propriétés correspondant aux définitions suivantes : (utiliser
seulement les opérations ensemblistes)

1. Utilisateurs, l’ensemble des personnes enregistrées comme utilisateurs.


Utilisateurs  PERSONNES

2. Connectés, l’ensemble des utilisateurs qui sont connectés


18/2
Connectés  Utilisateurs

3. Il y’a toujours des utilisateurs qui ne sont pas connectés


Connectés  Utilisateurs ou bien
Utilisateurs – Connectés≠  ou bien
Card(Utilisateurs – Connectés) ≥ 1

4. Il y’a toujours au moins un utilisateur qui est connecté


Connectés ≠  ou bien
Card(Connectés) ≥ 1

5. Il y’a une limite (entre 32 et 128) au nombre d’utilisateurs connectés à tout


moment
Card(Connectés) ≥ 32 et Card(Connectés) ≤ 128 ou bien
Card(Connectés)  32 ..128

6. Il y’a seulement deux groupes d’utilisateurs qui sont disjoints : les employés et les
clients
employés  clients = Utilisateurs et employés  clients =  ou bien
employés  Utilisateurs et clients = Utilisateurs – employés

7. Il y’a plus d’utilisateurs clients que d’utilisateurs employés


Card(clients) ≥ Card(employés)

8. Tous les utilisateurs actuellement connectés sont des employés


Connectés  employés

Note : Pour résoudre les questions 3-8, utilisez les ensembles Utilisateurs et Connectés et des
opérations ensemblistes

Exercice 12:

Soient deux ensembles abstraits PERSONNES et PLATS, et la relation repas qui associe à
chaque client d’une cafétéria ce qu’il a pris à manger. La relation repas est ainsi définie de la
façon suivante :

repas  PERSONNES ↔ PLATS.

C. Formaliser en langage B, sans utiliser de quantificateur existentiel () ou universel


(), les ensembles et les relations correspondant aux définitions suivantes :
(utiliser seulement les opérations ensemblistes et relationnelles)
10. plat_consomme, l’ensemble des plats qui ont été consommés

19/2
plat_consomme = ran(repas)

11. client, l’ensemble des personnes qui ont mangé au moins un plat

client = dom(repas)

12. personne_aucun_plat, l’ensemble des personnes qui n’ont rien mangé

personne_aucun_plat = PERSONNES - dom(repas)

13. client_pizza, l’ensemble des personnes qui ont mangé de la pizza

client_pizza = dom(repas |> {pizza}) ou bien


= (repas-1 ([{pizza}])

14. personne_pas_de_pizza, l’ensemble des personnes qui n’ont pas mangé de la pizza

personne_pas_de_pizza = PERSONNES - dom(repas |> {pizza}) ou bien


= PERSONNES - client_pizza

15. client_pas_de_pizza, l’ensemble des personnes qui ont mangé mais qui n’ont pas
mangé de la pizza

client_pas_de_pizza = dom(repas) - dom(repas |> {salade}) ou bien


= client - client_pizza

16. plats_clients_pizza, l’ensemble des plats mangés par les personnes ayant mangé de
la pizza.

plats_clients_pizza = repas ([ client_pizza ]) ou bien

= repas ([ repas -1([ pizza} ]) ]) ou bien

= repas ([dom(repas |> { pizza })]) ou bien

= ran ((repas |> { pizza })-1; repas)

17. client_plat_commun, la relation associant, deux à deux, les différentes personnes


ayant mangé au moins un plat semblable

client_plat_commun = (repas ; repas-1) – Id(PERSONNES)

20/2
18. pizza_non_salade : toute personne qui a mangé de la pizza, elle n’a pas mangé de
salade.

pizza_non_salade = (repas -1([ {pizza} ]))  (repas -1([ {salade} ])) =  ou bien
= client_pizza  (repas -1([ {salade} ])) = 

19. pizza_et_salade : il y’a au moins une personne qui a mangé de la pizza et de


salade.

pizza_et_salade = (repas -1([ {pizza} ]))  (repas -1([ {salade} ])) ≠  ou


bien
= client_pizza  (repas -1([ {salade} ])) ≠  ou bien
= ¬ pizza_non_salade

D. Soient les instanciations suivantes pour la relation repas :


repas = {(ali, pizza), (ali, tarte), (asma, salade), (asma, pomme), (asma, tarte),
(foued, salade), (foued, pomme)}

Calculer le résultat des expressions suivantes :

9. ran (repas)

ran (repas) = {pizza, tarte, salade, pomme}

10. dom (repas)

dom (repas) = {ali, asma, foued}

11. repas -1 ([ {pomme} ])

repas -1 ([ {pomme} ]) = {asma, foued}

12. repas |> {pomme}

repas |> {pomme}= {(asma, pomme), (foued, pomme)}

13. repas ([ repas -1([ {pomme} ]) ])

repas ([ repas -1([ {pomme} ]) ]) = {tarte, salade, pomme}

14. (repas ; repas -1) – Id (PERSONNES)


21/2
(repas ; repas -1) – Id (PERSONNES) =

{(asma, ali), (ali, asma), (asma, foued), (foued, asma)}

15. {pomme, pizza, salade} <<| repas -1

{pomme, pizza, salade} <<| repas -1 = {(tarte, asma), (tarte, ali)}

16. repas  {(foued, carotte)}

repas  {(foued, carotte)} =


{(ali, pizza), (ali, tarte), (asma, salade), (asma, pomme), (asma, tarte), (foued,
carotte)}

Exercice 13:
On veut modéliser en B un système d’enregistrement de l’attribution des places de passagers
sur un avion.

Les types concernés ici sont les ensembles suivants:

PERSONNE l’ensemble de toutes les personnes

SIEGE l’ensemble de tous les sièges de cet avion

Exprimer les énoncés suivant en B en utilisant les ensembles, les relations et les
fonctions (ne pas utiliser la logique des prédicats) :

1) La relation réservéPourentre l’ensemble des sièges et celui des personnes :


(p, s)réservéPourssi le siège s est réservés pour la personne p
réservéPour : PERSONNE  SIEGE
2) Un même siège ne peut être réservé que pour une seule personne, mais qu’une
même personne peut avoir plusieurs sièges réservés
réservéPour-1 : SIEGE -|-> PERSONNE (fonction partielle)
3) Tous les sièges sont libres
réservéPour =  ou bien
dom(réservéPour)=  ou bien
ran (réservéPour)= 
4) Les sièges réservés pour une personne p
réservéPour ([{p}])
5) Le nombre de sièges réservés par une personne p.
Card(réservéPour ([{p}]))

6) La personne p a réservé plus qu’un siège


Card(réservéPour ([{p}]))> 1
7) Tous les siège sont réservés.
22/2
ran (réservéPour) = SIEGE
8) Toutes les personnes qui ont des réservations.
dom (réservéPour)
9) Toutes les personnes qui ont réservé plus qu’un siège.
dom (réservéPour |> (dom ( (réservéPour-1 ;réservéPour) – Id(SIEGE) )))ou bien
réservéPour-1 ([dom ( (réservéPour-1 ;réservéPour) – Id(SIEGE) )]) ou bien
{ p | p  PERSONNECard(réservéPour ([{p}]))>1}
10) Toutes les personnes qui n’ont pas réservé
PERSONNE - dom (réservéPour)
11) Toutes les personnes ont réservé
dom (réservéPour) = PERSONNE
12) Le passager d’un siège donné s
réservéPour-1(s) (réservéPour-1 est une fonction)
13) Il y’a encore des sièges libres
SIEGE - ran(réservéPour) ≠  ou bien
ran (réservéPour)  SIEGE ou bien
Card(ran (réservéPour)) < Card(SIEGE)

Exercice 14:
On veut modéliser en B un système de gestion des patients et des médicaments. On doit
prescrire des médicaments aux patients. Certains patients sont allergiques pour certains
médicaments. Il faut donc que le système empêche la prescription de ces médicaments à un
patient. On peut prescrire plusieurs médicaments en même temps à un patient. Certains
médicaments sont incompatibles. Il faut donc que le système ne permette pas la prescription
de deux médicaments incompatibles en même temps pour un patient.
Les types concernés ici sont les ensembles suivants:

PERSONNES : l’ensemble de toutes les personnes


MEDICAMENTS : l’ensemble de tous les médicaments

Partie A :
Formaliser en langage B les relations et les fonctions suivantes (sans utiliser de
quantificateur existentiel () ou universel ()):

1) A_pour_médecin : la relation qui associe à chaque personne son médecin


(p, m)  A_pour_médecin : m est le médecin du patient p telle que :
− Une personne a au plus un médecin, et
− chaque médecin a au moins un patient ????
A_pour_médecin : PERSONNES -|-> PERSONNES (fonction partielle)

2) Prescription : la relation qui associe à chaque personne les médicaments qui l’ont été
prescrits
(p, m)  Prescription : le médicament m a été prescrit pour la personne p
Prescription : PERSONNES  MEDICAMENTS

23/2
3) Allergie : la relation qui associe à chaque personne les médicaments pour lesquels elle
est allergique.
(p, m)  Allergie : le patient p est allergique pour le médicament m
Allergie : PERSONNES  MEDICAMENTS

4) Incompatibilité : la relation qui exprime l’incompatibilité des médicaments


(m1, m2)  Incompatibilité : les deux médicaments m1 et m2 sont incompatibles
Incompatibilité: MEDICAMENTS  MEDICAMENTS
Partie B :
Formaliser en langage B les ensembles, les relations et les propriétés suivantes en utilisant les
relations et fonctions définies dans la Partie A (ne pas utiliser de quantificateur existentiel
() ou universel ()):

1) Patients : l’ensemble des personnes ayant un médecin

Patients = dom (A_pour_médecin)

2) Médecins : l’ensemble des personnes qui sont des médecins

Médecins = ran (A_pour_médecin)

3) Médicaments_non_allergique : l’ensemble de tous les médicaments pour lesquels


aucune personne n’est allergique
Médicaments_non_allergique = MEDICAMENTS - ran(Allergie)

4) Personnes_aucun_médicament : l’ensemble des personnes qui n’ont aucun


médicament prescrit

Personnes_aucun_médicament = PERSONNES - dom(Prescription)

5) Patient_doliprane : l’ensemble des personnes ayant doliprane comme médicament


prescrit

Patient_doliprane = dom(Prescription |> { doliprane }) ou bien


= Prescription -1 ([{ doliprane }])

6) Personnes_pas_de_doliprane : l’ensemble des personnes qui n’ont pas doliprane


comme médicament prescrit

Personnes_pas_de_doliprane = PERSONNES - dom(Prescription |> {doliprane}) ou bien


= PERSONNES - Prescription -1 ([{ doliprane }]) ou bien
= PERSONNES - Patient_doliprane

24/2
7) Patients_pas_de_doliprane : l’ensemble des personnes ayant des médicaments
prescrits mais pas doliprane

Patients_pas_de_doliprane = dom(Prescription) - dom(Prescription |> {doliprane})


ou bien
= dom(Prescription) - Prescription -1 ([{ doliprane }]) ou bien
= dom(Prescription) - Patient_doliprane

8) Médicaments_patients_doliprane : l’ensemble des médicaments prescrits aux


personnes ayant doliprane comme médicament prescrit.

Médicaments_patients_doliprane = Prescription ([Prescription -1([{doliprane}])]) ou bien

= Prescription ([dom(Prescription |> {doliprane})]) ou bien =

ran ((Prescription |> {doliprane})-1; Prescription) ou bien

= Prescription ([Patient_doliprane])

9) Patients_médecin_commun : la relation associant, deux à deux, les différentes


personnes ayant le même médecin

Patients_médecin_commun =
(A_pour_médecin ; A_pour_médecin -1) – Id(PERSONNES)

10) Patient_médecin_médicament : la relation qui associe à chaque personne le


médicament et le médecin qui l’a prescrit
(p,(médecin,médicament))  Patient_médecin_médicament :
(p,médecin)  A_pour_médecin et (p, médicament)  Prescription

Patient_médecin_médicament = A_pour_médecin  Prescription

11) Médecin_patient_pas_allergie : la relation qui associe à chaque médecin ses patients


qui n’ont pas d’allergie
(m, p)  Médecin_patient_pas_allergie signifie m est le médecin du patient p et p
n’est pas allergique.

Médecin_patient_pas_allergie =
({dom Allergie} <<| A_pour_médecin) -1

12) Un médicament ne peut pas être incompatible avec lui-même


id(MEDICAMENT)  Incompatibilité = 

13) Une prescription ne doit pas contenir des médicaments pour lesquels le patient est
allergique
25/2
Allergie  Prescription = 
14) Une prescription ne doit pas contenir des médicaments incompatibles
(Prescription-1 ; Prescription)  Incompatibilité = 
15) La personne p est allergique au pénicilline seulement

({p} <| Allergie) = {(p, pénicilline)} ou bien


16) Toute personne qui est allergique à l’aspirine elle n’est pas allergique au doliprane.

(Allergie -1([ {aspirine} ]))  (Allergie -1([ doliprane} ])) =  ou bien


dom(Allergie |>{aspirine})  dom(Allergie |> {doliprane}) = 

17) Il y’a une seule personne qui est allergique à l’aspirine et au pénicilline

card((Allergie -1([ {aspirine} ]))  (Allergie -1([ doliprane} ]))) = 1 ou bien


card(dom(Allergie |>{aspirine})  dom(Allergie |> {doliprane})) = 1

Exercice 14 (extended):
On veut modéliser en B un système de gestion des patients et des médicaments. On doit
prescrire des médicaments aux patients. Certains patients sont allergiques pour certains
médicaments. Il faut donc que le système empêche la prescription de ces médicaments à un
patient. On peut prescrire plusieurs médicaments en même temps à un patient. Certains
médicaments sont incompatibles. Il faut donc que le système ne permette pas la prescription
de deux médicaments incompatibles en même temps pour un patient.
Les types concernés ici sont les ensembles suivants :

PERSONNES : l’ensemble de toutes les personnes


MEDICAMENTS : l’ensemble de tous les médicaments

Exprimer les énoncés suivant en B en utilisant les ensembles, les relations et les fonctions :

5) A_pour_médecin : la relation qui associe à chaque personne son médecin

(p, m)  A_pour_médecin : m est le médecin du patient p telle que :

− Une personne a au plus un médecin, et

− chaque médecin a au moins un patient

6) Patients : l’ensemble des personnes ayant un médecin


7) Médecins : l’ensemble des personnes qui sont des médecins
8) Allergie : la relation qui associe à chaque personne les médicaments pour lesquels elle
est allergique.

(p, m)  Allergie : le patient p est allergique pour le médicament m

9) Incompatibilité : la relation qui exprime l’incompatibilité des médicaments

26/2
(m1, m2)  Incompatibilité : les deux médicaments m1 et m2 sont incompatibles

10) Un médicament ne peut pas être incompatible avec lui-même

11) Prescription : la relation qui associe à chaque personne les médicaments qui l’ont été
prescrits

(p, m)  Prescription : le médicament m a été prescrit pour la personne p

12) Une prescription ne doit pas contenir des médicaments pour lesquels le patient est
allergique

13) Une prescription ne doit pas contenir des médicaments incompatibles

14) Médicaments_non_allergique : l’ensemble de tous les médicaments pour lesquels


aucune personne n’est allergique

15) Patient_médecin_médicament : la relation qui associe à chaque personne le


médicament et le médecin qui l’a prescrit
(p,(médecin,médicament))  Patient_médecin_médicament :
(p,médecin)  A_pour_médecin et (p, médicament)  Prescription

16) Médecin_patient_pas_allergie : la relation qui associe à chaque médecin ses patients


qui n’ont pas d’allergie
(m, p)  Médecin_patient_pas_allergie : m est le médecin du patient p et p n’est pas
allergique.

17) Personnes_aucun_médicament : l’ensemble des personnes qui n’ont aucun


médicament prescrit
18) Patient_doliprane : l’ensemble des personnes ayant doliprane comme médicament
prescrit
19) Personnes_pas_de_doliprane : l’ensemble des personnes qui n’ont pas doliprane
comme médicament prescrit
20) Patients_pas_de_doliprane : l’ensemble des personnes ayant des médicaments
prescrits mais pas doliprane
21) Médicaments_patients_doliprane : l’ensemble des médicaments prescrits aux
personnes ayant doliprane comme médicament prescrit.
22) Patients_médecin_commun : la relation associant, deux à deux, les différentes
personnes ayant le même médecin
23) Allergie_aspirine_non_doliprane : toute personne qui est allergique à l’aspirine n’est
pas allergique au doliprane.
24) Aspirine_et_pénicilline : il y’a exactement une personne qui est allergique à l’aspirine
et au pénicilline
25) Médecin_patient_pas_allergie : la relation qui associe à chaque médecin ses patients
qui n’ont pas d’allergie

27/2
(m, p)  Médecin_patient_pas_allergie : m est le médecin du patient p et p n’est pas
allergique.

Exercice 15:
Soit l’ensemble abstrait EQUIPE et soient les relations J et G et les constantes a et f définis
de la manière suivante :

J  EQUIPE  EQUIPE G  EQUIPE  EQUIPE

(x, y)  J : x a joué un match contre y. (x, y)  G : x a gagné contre y.

(à considérer plus tard : J irreflexive, symetrique, « totale », …

G irreflexive, asymetrique,…..)

Formalisez en langage B, sans utiliser de quantificateur existentiel () ou universel


(), les ensembles et les propriétés correspondant aux définitions suivantes : (utiliser
seulement les opérations ensemblistes)

1. L’équipe de France a gagné un match et en a perdu un.

Fr  Dom(G)  Fr  ran(G)

2. L’équipe de France et l’équipe d’Allemagne ont fait match nul.

(Fr, GER)  J  ¬ ((Fr, GER)  G)  ¬ ((GER, FR)  G)

3. Les équipes qui ont gagné au moins un match

Dom(G)

4. Les équipes qui ont joué et qui n’ont gagné aucun match
Dom(J) - Dom(G)

5. L’équipe d’Allemagne a gagné tous ses matchs sauf un.


Card(({GER} <| J) - ({GER} <| G)) = 1
6. Les équipes qui ont gagné tous leurs matchs
GT = dom(J) – dom(J - G) (dom(J - G) : qui ont perdu au moins un match)
7. Une équipe a gagné tous ses matchs.
GT ≠ 
8. Tous ceux qui ont joué contre une équipe qui a gagné tous ses matchs, ont gagné au
moins un match
Dom (J |> GT)  Dom (G) (dom (J |> (dom(J) – dom(J - G)))  Dom (G) )
9. Les parties nulles
N = J – (G U G-1)
10. Les équipes qui ont fait au moins un match nul
Dom (J – (G U G-1))
11. Les équipes qui ont perdu tous leurs matchs.
28/2
PT = Dom(J) – (Dom(G) U Dom (J – (G U G-1)))

12. Aucune équipe n’a perdu tous ses matchs.


PT = 

Exercice 16 :
A- Quel est le type de chacune des expressions suivantes ?
a- {0, 1} b- 37 c- {{1, 2}, {2, 3}} d- (1, 2) e- ({1}, 1) f- {1, {1}}

B- Soient haswheels == {Unicycle  1, Bicycle  2, Tricycle 3}


rides : Toms  WheeledVehicles

haswheels : WheeledVehicles  N1

On voudrait construire une relation qui donne le nombre de roues du véhicule conduit par
chaque élément de Toms.

a. Donnez la relation ridesonwheels à l’aide de rides et haswheels,

b. Donnez en extension ridesonwheels.

On donne le diagramme de Venn suivant :

Toms wheeledVehicles N1

Ben Unicycle 1

Kate 2

Alice Bicycle 3

Henr

Tricycle

rides haswheels

1. Donnez la relation ridesonwheels à l’aide de rides et haswheels,

29/2
2. Donnez en extension ridesonwheels.

3. Quelles sont les relations définies par

a. {Alice}  (rides ; haswheels)

b . ({Alice}  rides) ; haswheels

c. (rides ; haswheels) {2}

d. (rides ; haswheels) {2}

e. rides  {Bicycle}

4. Qu’exprime-t-on avec

a. dom(rides  {Bicycle})

b. # (dom(rides  {Bicycle}))

5. Déterminez

a. rides([{Ben, Alice}])

b. rides([{Kate, Alice}])

c. rides−1([{Unicycle}])

6. Exprimez

– L’ensemble des personnes qui conduisent un bicylce ;

– Le nombre de personnes qui conduisent un unicycle ;

– L’ensemble des personnes qui ne consuidsent pas d’unicycle.

Exercice 17:
Soient X et Y deux ensembles et R une relation, R  X ↔ Y
Calculer le résultat des expressions suivantes :
R ; {}
R o {}
R  {}
R >< {} (Produit direct)
R ; Id(X)
R o Id(X)
R  Id(X)
R >< Id(X) (Produit direct)

30/2
Exercice 18 :
Nous considérons un système de gestion d'un annuaire. Le système est vu comme le
gestionnaire d'une base de données contenant des noms de personnes avec leurs numéros de
téléphone. Le système gère les personnes et les numéros de téléphones associés à ces
personnes. Les opérations classiques d'ajout, suppression, modification doivent être offertes
par le système.

On se propose d'étudier ici la spécification en Z du système. On donne pour ce faire quelques


éléments de travail qu'il va falloir compléter.

Exemples de machines pour d_emarrer

MACHINE

Ctx_ANNUAIRE

CONSTANTS

maxPers,

maxNums

PROPERTIES

maxPers : 0..MAXINT

&maxNums : 0 ..MAXINT

SETS

MESSAGE = {Ok, PasOk}

DEFINITIONS

PERSONNE == 0..maxPers

; NUMERO == 0..maxNums

OPERATIONS

res <-- Succes = /* quand une operation est effectuee */

BEGIN

res := Ok

END

res <-- Echec = /* quand une operation est non effectuee */


31/2
BEGIN

res := PasOk

END

END

MACHINE

Annuaire

SEES

Ctx_ANNUAIRE

DEFINITIONS /* les memes que dans le contexte */

PERSONNE == 0..maxPers

; NUMERO == 0..maxNums

VARIABLES

membres, telephones

INVARIANT

membres <: PERSONNE

& telephones : membres <-> NUMERO

INITIALISATION

membres, telephones := {},{}

OPERATIONS

ajoutMembre(lenom) =

PRE

lenom : PERSONNE & lenom /: membres

THEN

membres := membres \/ {lenom}

END

/* ;

autres operations
32/2
*/

END

lesnums <-- rechercherNumeros(lenom) =

/* ici, on renvoie un ensemble (donc abstrait) */

/* en vue d'une implantation, il faut renvoyer un type implantable,

comme une sequence ... _a faire plus tard */

PRE

lenom : PERSONNE & lenom : dom(telephones)

THEN

lesnums := telephones[{lenom}]

END

ajoutCoordonnees(lenom, lenum) =

/* deux hypotheses :

(a) soit le nom est membre,

(b) soit le nom n'est pas membre */

...

supprimerMembre(lenom) = /* hypothese, lenom est pas dans 'membres' */

...

supprimerCoordonnees(lenom, lenum) = /* enleve le couple (lenom, lenum) */

...
33/2
;

res <-- rechercherNoms(numero) = /* recherche des personnes ayant 'numero' */

...

/*---------- Operations auxilliaires : pour "tester" les PRE --------------*/

bb <-- dejaMembre(lenom) = /* signale que le nom est dans 'membres' */

... /* on renvoie un booleen True / False */

bb <-- pasMembre(lenom) = /* signale que le nom n'est pas dans 'membres'*/

...

res <-- coordonneesDejaDefini(lenom, lenum) =

...

res <-- coordonnesInconnues(lenom, lenum) =

...

res <-- numeroInconnu(lenum) = /* booleen : lenum n'est pas dans annuaire */

...

END

Exercice 19 :
On veut modéliser en Z un système d’enregistrement de l’attribution des places de passagers
sur un avion.
Les types concernés ici sont :

[PERSONNE] l’ensemble de toutes les personnes


[SIEGE] l’ensemble de tous les sièges de cet avion
OUIOUNON ::= oui | non
REPONSE ::= OK | déjaRéservé | nonRéservé | pasLeVotre | possèdePasDeRéservation

34/2
L’état du système Attribution est donné par la relation entre l’ensemble des sièges et celui des
personnes :

Attribution
réservéPour : PERSONNE  SIEGE

 s1 : SIEGE . ( p1,p2 : PERSONNE . (p1, s1)  réservéPour  (p2, s1) 


réservéPour → p1= p2)

Remarquer qu’un même siège ne peut être réservé que pour une seule personne, mais qu’une
même personne peut avoir plusieurs sièges réservés. ( : symbole pour les relations)

A. Donner les schémas suivants: (6.25 pts)


14) Le schéma Init de l’état initial du système.
15) Opération NbreSiègesRéservésPar qui permet de donner le nombre de sièges
réservés par une personne p.
16) Opération SiégesRéservés qui permet de retrouver tous les sièges réservés.
17) Opération PersonnesAvecRéservation qui permet de retrouver toutes les personnes
qui ont des réservations.
18) Opération SiègeRéservéOuNon qui permet de déterminer si un siège donné s est
réservé ou non.
19) Opération PersonneAréservé qui permet de déterminer si une personne p a réservé
un siège ou non.
B. Donner les schémas des opérations suivantes sans traiter les erreurs: (7.5 pts)
1) Opération Réservation0 qui permet de réserver pour une personne donnée p un
siège donné s.
2) Opération Annulation0 qui permet d’annuler la réservation d’une personne p pour
un siège donné s.
3) Opération Annulations0 qui permet d’annuler toutes les réservations d’une
personne p.
4) Opération ModifierRéservationSiège0 qui permet de modifier la réservation d’un
siège s (déjà réservé par une personne) pour une nouvelle personne p.
5) Opération SiègeDeQui0 qui permet de retrouver le passager d’un siège donné s.

C. Donner les schémas de traitement des erreurs ErreurRéservation, ErreurAnnulation,


ErreurAnnulations, ErreurModifierRéservationSiège, ErreurSiègeDeQui qui
établissent ce qui arrive si les pré-conditions des opérations correspondantes ne sont
pas satisfaites. (3.75 pts)

D. Donner les versions finales (avec traitement d’erreurs) des opérations Réservation,
Annulation, Annulations, ModifierRéservationSiège, SiègeDeQui. Les opérations
doivent renvoyer un message en cas de succès. (2.5 pts)

35/2

Vous aimerez peut-être aussi