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_genrePERSONNES → GENRES
- a_pour_pèrePERSONNES -|->a_pour_genre-1[{masculin}])
- a_pour_mèrePERSONNES -|->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èrePERSONNE ↔ 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èrePERSONNE ↔ PERSONNE
(m, e) Mère (ou m Mère e) signifie la personne m est la mère de la personne e
EpouxPERSONNE ↔ 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-1Mè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
FilsMASCULIN↔ 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
FilleFEMININ↔ 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èreMASCULIN↔ 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-paternelDemi-frère-maternelFrère
=(MASCULIN <| Parent-1 ; Parent) – Id (MASCULIN)
=(Fils ; Parent) – Id (MASCULIN)
Frère1 PERSONNE ↔ PERSONNErelation
7/2
Frère1MASCULIN↔ 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œurFEMININ↔ 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-paternelleFEMININ↔ 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-maternelleFEMININ↔ 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-paternelleDemi-Sœur-maternelle Sœur
=(FEMININ<| Parent-1 ; Parent) – Id (FEMININ)
=(Fille ; Parent) – Id (FEMININ)
Sœur1 PERSONNE ↔ PERSONNErelation
Sœur1FEMININ↔ 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èreSœ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-1Mère-1) |>{(Jamel, Wafa)}≠ou bien
Card((Père-1Mè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 KR) 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 PP (P P)ou
P P˅ Faux PFaux P Vrai (P Vrai)ou
P P˅ Faux P˅ Vrai VraiP (VraiP)
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)
( yzMè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 PERSONNECard(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