Академический Документы
Профессиональный Документы
Культура Документы
TRAVAUX DIRIGS
Introduction la logique
QUESTIONS DE COURS
Exercice 1 Les profs de maths de lyce sont-ils menteurs ? (contrle 2001 Objectif 1.1.2.)
Tout au long de votre scolarit, on vous a parl en mathmatiques de thormes. Mais en utilisant cette notion, ne vous
aurait-on pas menti par omission ? Que pensez-vous en particulier des assertions suivantes :
On considre un systme logique qui est sain (consistant) mais pas complet. Que pensez-vous des deux affirmations
suivantes, prises globalement :
En utilisant les atomes S (le soleil brille), P (il pleut), B (il bruine), A (il y a un arc en ciel), O (il a un vent d'Ouest), E
(il y a du vent d'Est) Traduire dans la logique des propositions les noncs suivants :
1) Sil pleut et que le soleil brille en mme temps, alors il y a un arc en ciel
2) Si le vent douest amne la pluie, on na jamais vu quun vent dest soit porteur de pluie.
3) La bruine est une forme de pluie.
TRADUCTION EN LP : EXERCICES
Reprsenter dans le formalisme de la logique des propositions les thormes de gomtrie suivants :
Traduire chacune des phrases suivantes en une formule du langage des propositions :
a Jamais il ne me rencontre sans me dire bonjour.
b Lorsquil ne me dit pas bonjour, cest quil est fch.
c Il sarrange pour ne jamais me rencontrer lorsquil est fch..
d Ou bien on va se dire bonjour ou bien il est fch..
Angoiss l'ide d'avoir son avenir suspendu au climat social au sein de la SNCF, Alphonse Oboulo tente d'carter ses
ides noires en traduisant en logique des propositions son raisonnement. Saurez-vous l'aider ?
2 Mme question avec lnonc suivant : Il ny a pas ncessairement que des islamistes extrmistes parmi les
Afghans et les Pakistanais.
2. De mme, quelle(s) fbf(s) reprsente(nt) lnonc suivant : Ne pas perdre ce nest pas obligatoirement obtenir une
victoire, alors quobtenir une victoire cest toujours ne pas perdre
Victoire Perdre
Perdre Victoire
Perdre Victoire
Victoire Perdre
(Victoire Perdre) (Perdre Victoire)
( Perdre Victoire) (Victoire Perdre)
(Perdre Victoire) (Victoire Perdre)
De tous temps, les logiciens ont cherch reprsenter le langage, manifestation par excellence de la pense humaine,
sous forme logique. A premier abord, ce projet peut paratre raisonnable. Par exemple, reprsentez dans le formalisme
de la logique des propositions les citations suivantes :
a Je pense, donc je suis (Descartes, Discours de la mthode)
b Je me rvolte, donc je suis (Camus, L'Et)
c Cet animal est triste, et la crainte le ronge. (La Fontaine, Fables: Le livre et les grenouilles)
d Il n'y a pas d'amour de vivre sans dsespoir de vivre (Albert Camus, L'Envers et l'endroit)
e Qu'on cde la peur du mal, on ressent dj le mal de la peur (Beaumarchais, Le barbier de Sville)
f Ventre affam n'a point d'oreilles (La Fontaine, ib. : Le milan et le rossignol)
g Je meurs si je vous perds, mais je meurs si j'attends (Racine, Andromaque)
Trs vite, on ralise cependant que la tche est complexe : les reprsentations logiques ont du mal rendre compte de
certaines subtilits de comprhension traduites par des verbes de modalit (croire que, penser que, savoir que..), par de
petits mots outils (dj, seulement, toujours, mais...) voire par certaines tournures. Des logiques complexes telles que la
logique modale ou encore la logique floue ont t inventes pour atteindre un niveau de finesse plus important. Bien des
dtails de la langue chappent cependant toujours la reprsentation logique. Tentez tout de mme de reprsenter les
citations suivantes en logique des propositions, tout en relevant les insuffisances de cette reprsentation :
a Aller jusqu'au bout, ce n'est pas seulement rsister, c'est aussi se laisser aller (Camus, Carnets)
b Prouver que j'ai raison serait accorder que je puis avoir tort (Beaumarchais, Le mariage de Figaro)
c Je le harais davantage [Voltaire] si je le mprisais moins (Rousseau, Correspondance)
d [ Va, ] je ne te hais point (Corneille, Le Cid)
QUESTIONS DE COURS
Donnez les interprtations des atomes P, Q et R (par exemple P = Vrai ; Q = Faux ; R = Faux) qui rendent fausses les
formules suivantes :
1) R P ( Q (R P))
2) [ Q (R P) ] R P
1 Prcisez, en utilisant la mthode des tables de vrit, si les formules suivantes sont des tautologies, des
contradictions, ou des propositions simplement satisfaisables. On cherchera limiter au maximum les calculs.
a) ( PQ) (P Q) b) P (P Q)
c) P (P Q)
d) (P Q) (Q P)
e) (P Q) (Q R) (P R)
Rponse tautologies : b, e ; formules satisfaisables : a, c, d
2 Quelle remarque peut on faire au sujet du rsultat d) ?
Exercice 19 Tautologies (objectif 2.2.2) d'aprs A. Aho & J. Ullman, Concepts fondamentaux de l'informatique, Dunod
Prcisez, en utilisant la mthode des tables de vrit, quelles sont les expressions, parmi les formules suivants, qui sont
des tautologies. On cherchera limiter au maximum les calculs.
1(PQ)P
2PQRPQ
3 ( P ( Q R ) ) ( Q P R )
Rponse tautologie : b
Exercice 20 Tables de vrit et ou exclusif (objectif 2.2.2)
On considre la fbf suivante : (A B) (C B) (A B).
1) Donnez le nombre d'interprtations pour lesquelles la formule est vraie :
2) Donnez le nombre d'interprtations pour lesquelles la formule est fausse :
3) Que peut-on dire de la formule :
Tautologique uniquement Tautologique et satisfaisable
Satisfaisable (sans plus) Contradictoire
Prcisez, en utilisant la mthode des tables de vrit, la nature (tautologique, satisfaisable, contradictoire) des
expressions suivantes. On cherchera limiter au maximum les calculs.
a) (P Q) ( (RQ) (P Q)) b) (P Q) ( (R Q) (P Q))
Retrouvez, laide de la mthode des tables de vrit, les rgles d'quivalence suivantes :
a) P (Q R) (P Q) (P R) (distributivit de la disjonction sur la conjonction)
b) (P Q) P Q (1re loi de De Morgan)
c) P P (P Q) P (P Q) (rgle d'absorption)
Exercice 25 Dduction laide de la mthode des tables de vrits (objectifs 2.2.1. et 2.2.3)
QUESTIONS DE COURS
Montrez les quivalences suivantes en appliquant les formules de transformation de la logique des propositions :
a) P Q (P Q) P
b) PQ P (P Q)
Dans chacun des couples de formules suivantes, les deux formules sont-elles logiquement quivalentes?
(1) AB C (A C) (B C)
(2) AB C (A C) (B C)
(3) A (A B) A
Rponse quivalence pour les cas 1 et 3 ; vous pouvez trouver un contre-exemple pour le cas 2)
Exercice 30 Tautologies (objectif 2.2.5) d'aprs A. Aho & J. Ullman, Concepts fondamentaux de l'informatique, Dunod
En cherchant mettre les formules suivants sous forme normale, prciser si ces expressions sont des tautologies, des
contradictions ou simplement des formules satisfaisables.
1PQRPQ
2 ( ( P Q) ( Q R ) ) ( P R )
3(PQ)P
4 ( P ( Q R ) ) ( Q P R ) Rponse Tautologies : 1, 2.
Rpondez, en utilisant la mthode de votre choix (tables de vrit ou formules dquivalence), aux question suivantes :
1 Que peut-on dire de la formule (A C) ( A C B )
Rponse : tautologique satisfaisable contradictoire
En logique, le terme "compltude" peut revtir diverses acceptations. Il peut ainsi caractriser la capacit d'un systme
formel dmontrer toutes les consquences logiques du langage sur lequel il est dfini (thorme d'incompltude de
Gdel, par exemple). Il peut galement servir caractriser la difficult algorithmique des problme de dcidabilit.
Ainsi, savoir si une expression logique est une tautologie constitue un problme NP-complet, c'est dire faisant partie
des problmes que l'on ne sait rsoudre qu'avec un temps exponentiel la dimension du problme. Dans cet exercice,
nous nous intresserons la troisime acceptation de ce terme, qui concerne les ensembles de connecteurs logiques.
Un ensemble de connecteurs est en effet dit complet si et seulement si toute expression logique peut s'exprimer
uniquement l'aide de ces oprateurs. Ainsi, nous avons vu en cours que l'ensemble { , , , , } constituait un
systme complet de connecteurs pour la logique des propositions. Pour montrer qu'un ensemble de connecteurs logiques
est complet, il faut et il suffit de montrer qu'on peut exprimer les connecteurs d'un autre systme complet dans ce nouvel
ensemble. Partant de { , , , , }, on montre ainsi que { , , }constitue un systme complet en vertu des rgles
d'quivalences suivantes :
PQ P Q
PQ ( P Q) (P Q)
1 On considre ici l'oprateur NAND (NON-ET) not dfini comme la ngation de la conjonction :
PQ (P Q)
Montrez que l'ensemble { } rduit ce seul oprateur constitue un systme complet. Cet oprateur est de
premire importance en informatique et en lectronique, puisqu'il permet lui seul de reprsenter l'ensemble des
fonctions logiques ncessaire la mise en uvre des circuits des ordinateurs.
Indication Montrer quun systme de connecteur est un systme complet revient montrer que tout connecteur
quelconque peut se rcrire sous la forme dune combinaison de connecteurs du systme ... et non linverse !
2 On considre maintenant l'oprateur NOR (NON-OU) not et dfini comme la ngation de la disjonction.
Montrez que l'ensemble { } constitue lui aussi un systme complet de connecteurs.
Dduction en LP
QUESTIONS DE COURS
Vrifiez, en utilisant les tables de vrit puis la mthode de rsolution, la validit des raisonnements suivants :
a) PQ ?
| == QP
b) (AC)B ?
| == AB
c) A B, C A ?
| == BC
1) Que peut-on dire de lnonc ci-dessous ? (objectifs 2.2.7, 2.1.4 , 2.1.9 et indirectement 4.1.2)
En logique des propositions, on peut toujours dmontrer si une fbf est contradictoire ou pas
1 Lorsqu'on applique la mthode de rsolution, que peut-on dire si on arrive tirer d'un ensemble de clauses la clause
toujours vraie ?
2 On cherche montrer qu'un raisonnement est valide l'aide de la mthode de rsolution. Aprs avoir mis la
formule de rfutation sous forme normale, on applique la rsolution sur toutes les clauses obtenues et on arrive
obtenir la clause vide. Nanmoins, on remarque qu'une des clauses initiales n'a pas t utilise pour arriver ce
rsultat. Que peut-on en conclure : la raisonnement est-il valide ou non ?
1. Donnez les clauses correspondant la mise sous forme clausale de la formule de rfutation
2. Le raisonnement est-il valide? Si non, donnez toutes les rsolvantes obtenues.
Voici Janvier qui arrive, et bonjour les examens de fin de semestre ! Comme
l'accoutume, Pierre a pass ses vacances de Nol surfer sur les pistes
enneiges. Il avait bien emmen quelques polys histoire de se donner bonne
conscience, mais l'appel de l'or blanc a une fois de plus t le plus fort. Et une
fois de plus, il va falloir trouver une solution pour s'en sortir, du genre "le tout
pour le tout". Pierre fait alors le raisonnement suivant :
(a) Un lve malade ne peut passer son examen.
(b) Si je mange au R.U. ce midi, je risque une intoxication alimentaire et
serai trs certainement malade.
(c) Je vais aller manger au R.U. ce midi.
(d) Donc, je ne passerai pas cet examen, c'est une certitude absolue !
Impressionn par son courage, mais tout de mme inquiet l'ide de se restaurer dans ce temple de la haute gastronomie
franaise, Pierre s'interroge sur la validit de son raisonnement : ce serait tout de mme stupide de risquer sa vie pour
rien... Malheureusement, il a prcisment fait une impasse totale sur son cours de logique. Sauriez-vous conseiller notre
infortun skieur en utilisant la mthode des tables de vrit et la mthode de rsolution ?
Rponse le raisonnement est valide.
Cette semaine, notre ami Jack Palmer est sur une affaire de vol de saucisson de cochon sauvage prs de Rossignoli,
typique village Corse. Aprs avoir auditionn l'ensemble des tmoins, le dtective fait le raisonnement suivant :
Si Figoli n'a pas rencontr Paoli dans le maquis la nuit du vol, c'est que Paoli est le voleur ou que Figoli est un
menteur. Si Paoli n'est pas le voleur, alors Figoli ne l'a pas rencontr cette nuit l et le forfait a t commis aprs
minuit. Si le crime a eu lieu aprs minuit, alors Paoli est le voleur ou Figoli a menti. Donc c'est sr: Paoli est le voleur.
Convaincu de la culpabilit de Paoli, il s'apprte accuser ce dernier. Jack Palmer aurait-il enfin russi rsoudre une
affaire ? Utilisez la mthode de rsolution pour vous faire une opinion sur la validit de son raisonnement. Donner un
contre-exemple en cas de raisonnement non valide. [Rponse le raisonnement est non valide].
1) Nous perdrons les voix des agriculteurs si nous ne poursuivons pas notre politique de soutiens des prix.
2) A moins d'entreprendre des rformes structurelles, il y aura suproduction si nous conservons cette politique,
3) Nous avons besoin des voix des agriculteurs pour tre relus.
4) A l'avenir, il faut viter tout prix toute surproduction.
C) Donc si nous sommes rlus, il nous faudra mettre en place des rformes structurelles.
Ce raisonnement est-il valide ? Utilisez le principe de rsolution pour rpondre cette question.
Rponse le raisonnement est valide.
PARADOXES LOGIQUES
Les ouvrages de logique amusante fourmillent de paradoxe propres donner la migraine au lecteur ordinaire, alors
qu'une bonne connaissance de la logique permet de surmonter ce type de contradictions sans problme. nous allons
tudier ici un paradoxe propos pour la premire fois par le mathmaticien anglais P.E.B Jourdain en 1913.
Dans un premier temps, intressons nous un paradoxe quivalent celui de Jourdain, et que l'on doit au mathmaticien
contemporain R. Smullyan (tir de : Quel est le titre de ce livre, Dunod). On se trouve sur une le peuple de deux types
d'individus : les purs, qui ne mentent jamais, et les pires, qui mentent toujours. Vous rencontrez soudain deux
autochtones, Annie Ouininon (que l'on notera A) et Robin Chsepa (not B). Ceux-ci vous dclarent respectivement :
(A) Robin est un pire
(B) Annie est une pure
1 Cette rencontre a-t-elle vraiment pu avoir lieu, ou est-elle paradoxale ? Pour rpondre cette interrogation,
cherchez si ces deux noncs peuvent tre satisfaisables simultanment en appliquant successivement les mthodes des
tables de vrit et de rsolution.
Revenons maintenant au paradoxe de la carte de Jourdain. Sur un ct d'une carte est crit :
(TA) La phrase crite de l'autre ct de cette carte est vraie.
Quand on la retourne, on dcouvre une autre affirmation :
(TB) La phrase crite de l'autre ct de cette carte est fausse.
2 Montrez que ce paradoxe est quivalent au prcdent en en donnant une reprsentation logique.
Exercice 49 Panique aux JO (objectifs 2.2.1 et 2.2.8) Adapt de E. Busser & G. Cohen, La Recherche, 302(1997)
En patinage artistique, les dcisions des jurys classant les candidats relvent
d'une subjectivit qu'il est souvent de bon ton de dnigrer, a fortiori lorsque les
sportifs d'un pays n'obtiennent pas les rsultats escompts par leurs
compatriotes... Lasss de ces critiques perptuelles, un trio de juges factieux a le
don d'exasprer les commentateurs et les sportifs par des affirmations qui sont
tantt vraies, tantt fausses. Laetitia, Patricia et Surya voudraient bien savoir si
elles sont qualifies dans le dernier groupe de la finale des Jeux Olympique
d'Hiver. Ayant plus rvis leurs triples axels que leur logique des propositions,
elles font appel vos comptences pour dmler cet cheveaux. Sauriez vous les
aider en utilisant la mthode de votre choix ?
PROBLMES
Exercice 50 Lewis Caroll et les paradoxes de l'implication (objectifs 2.1.3, 2.2.1, 2.2.7 et 2.2.8)
Si la dfinition des oprateurs logiques tels que la conjonction, la disjonction ou l'quivalence ne pose aucun problme
"l'honnte homme", il n'en va pas de mme pour l'implication. L'auteur d'Alice au Pays des Merveilles, qui se piquait de
logique, s'est pench sur ce problme dans un trait de logique qu'il avait rdig (Symbolic Logic, 1896). De mme, dans
ses Principes des Mathmatiques (1980, ed. Blanchard), Louis Couturat note ce qu'il appelle "les paradoxes de
l'implication matrielle" :
Toutes les propositions vraies sont quivalentes. Toutes les propositions fausses sont quivalentes. Chaque
proposition fausse implique toutes les propositions (vraies ou fausses); chaque proposition vraie est implique
par toutes les propositions (fausses ou vraies). Ces paradoxes invitables (car ce sont des consquences
ncessaires au calcul, et cela dans n'importe quel systme de Logique) s'expliquent par le fait que l'implication
ici considre est l'implication matrielle, et non pas l'implication formelle [...] laquelle tout le monde pense
quand on parle d'implication [dans la vie courante]. L'implication matrielle (P Q) ne signifie rien de plus
que ceci : "Ou P est fausse, ou Q est vraie". Peu importe que les propositions P et Q aient entre elles un rapport
logique ou empirique quelconque: l'implication est vrifie ds que P est fausse (quelle que soit Q) ou ds que Q
est vraie (quelle que soit P). Voil pourquoi on arrive ce rsultat paradoxal, que le faux implique le vrai.
Ces vrits paradoxales servent d'ailleurs rsoudre correctement certains paralogismes ou certains paradoxes
o le bon sens vulgaire risquerait de s'embarasser. Tel est par exemple le problme de Lewis Caroll :
[supposons que] "Q implique R ; mais [aussi que] P implique que Q implique non-R; Que faut-il en dduire ?
[...] Lewis Caroll [adoptant le point de vue du sens commun] raisonne ainsi : si Q implique R, il est impossible
que Q implique non-R; donc P implique l'impossible, et par suite est faux.
1 En utilisant la mthode de votre choix (rsolution ou tables de vrits), montrez que la conclusion, et donc le
raisonnement, de Lewis Caroll sont errons.
2 Quel est le "maillon" de la dmonstration de Caroll qui pose problme. Pourquoi ?
3 Finalement, quelle conclusion peut-on tirer des deux hypothses initiales ? Montrer que cette conclusion est bien
une consquence logique de ces prmisses.
QUESTIONS DE COURS
Dans la logique des prdicats du premier ordre, on considre la formule bien forme suivante :
x (y ( (z R(f (x), g(y,z))) (S(x,y) T(z))))
Reconnatre, dans cette formule les symboles fonctionnels et les symboles de prdicat. Prciser leur arit.
Traduire en logique des prdicats du 1er ordre lensemble des assertions de ce raisonnement.
Tout homme est un singe suprieur
Tout singe suprieur est un primate
Les dauphins ne sont pas des primates
Il y a des dauphins qui sont intelligents
Donc on peut ne pas tre un homme et tre intelligent
Indiquez quels est (sont) la (ou les) traduction(s) correcte(s) des noncs suivants.
1. Tous les enfants ne sont pas des anges
x ( enfant(x) anges(x) )
x ( enfant(x) anges(x) )
x ( enfant(x) anges(x) )
x ( anges(x) enfant(x) )
x ( enfant(x) anges(x) )
x ( anges(x) enfant(x) )
enfant anges
( enfant anges)
2. Ce n'est pas parce qu'on n'est pas une femme qu'on ne doit pas participer au mnage dans le couple.
x ( menage(x) femme(x) )
x ( menage(x) femme(x) )
x ( femme(x) menage(x) )
x ( femme(x) menage(x) )
x ( menage(x) femme(x) )
x ( femme(x) menage(x) )
x ( femme(x) menage(x) )
3. Les carrs sont des parallpipdes rectangles
x ( carr(x) parallpidde(x) rectangle(x) )
x ( carr(x) parallpidde(x) rectangle(x) )
x ( carr(x) parallpidde(x) rectangle(x) )
x ( carr(x) parallpidde(x) rectangle(x) )
x ( ( parallpidde(x) rectangle(x) ) carr(x) )
x ( ( parallpidde(x) rectangle(x) ) carr(x) )
x ( carr(x) parallpidde(x) rectangle(x) )
4. Chaque entreprise a un PDG
Donnez les traductions des noncs dans les cadres prvus cet effet. Ah, au fait, Mr Patate sappelle
Robert :
Donnez la traduction, en logique des prdicats du 1 er ordre, du raisonnement ci-dessous. On utilisera pour cela les
prdicats personne/1, tele/1, regarde/2, psycho/1, criminel/1, nevrose/1, montre/2.
Tout tlspectateur qui regarde la tlvision devient psychotique la longue
Certains psychotiques ne regardent jamais tlvision
Si un criminel nest pas psychotique, alors il est nvros
TF1 ne montre longueur d'antenne de des criminels
Donc les gens que lon voit la tl sont des tlspectateurs
Exercice 58 Le panda est un loup pour le bambou (15' environ ; objectif 3.2.1)
Symbole de la Chine ternelle, le panda est un animal dont le rgime alimentaire est un des plus spcialiss, ce qui nest
pas fait pour freiner sa dramatique extinction. Il se nourrit en effet quasiment exclusivement de feuilles du bambou.
Autant dire que pour le bambou, le panda napparat pas comme un bon gros nounours tout mignon, mais un terrible
criminel contre lhumanit, sanguinaire et sans piti. Mais qui se soucie des angoisses du pauvre bambou...
Traduire en LP1 les noncs ci-aprs en utilisant les 5 prdicats suivants :
Mange(x,y) est vrai ssi x mange y.
Herbivore(x) est vrai ssi x est un animal herbivore.
Vegetal(x) est vrai ssi x est un vgtal.
Bambou(x) est vrai ssi x est un bambou.
Panda(x) est vrai ssi x est un panda.
Chaque anne la rentre, la consommation daspirine augmente dangereusement dans les rangs des directeurs de
filires du dpartement informatique. Tous sont en effet tarauds par la mme question : comment arriver caser un
emploi du temps sachant que le nombre de salles disponibles est infrieur au nombre de groupes dtudiants Les
difficults vont danne en anne croissants. En effet, bien des enseignants ne se contentent plus dune salle avec craie et
tableau noir : bien souvent, il faut galement tenir compte des besoins en tableau blanc interactif (TBI) ou en
vidoprojecteurs. Puisque chaque anne vos serviteurs sarrachent les cheveux vous concocter un emploi du temps aux
petits oignons, vous maintenant dattraper la migraine sur les traductions suivantes
Traduire les noncs suivants dans la logique des prdicats du 1 er ordre. On utilisera pour cela les prdicats tbi/1 ,
vidoproj/1, panne/1, amphi/1, salle_td/1, est_dans/2.
a) On trouve toujours un TBI dans une salle de TD.
b) Il ny a pas de vidoprojecteur en salle B301 .
c) Tous les vidoprojecteurs sont dans des amphis.
d) Sil y a un vidoprojecteur quelque part, cest quil sagit dun amphi.
e) Il ny a que des TBI dans les salles de TD.
2. Traduisez ensuite la ngation des ces formules, puis simplifiez les fbf obtenues pour enfin en donner une traduction la
plus simple possible en franais.
Donnez une reprsentation des noncs suivant en logique des prdicats du premier ordre :
a Nul nest sens ignorer la loi
b Les hommes naissent et demeurent libres et gaux en droits
(Dclaration des Droits de lHomme et du Citoyen du 26 Aot 1789, article premier).
c Tout homme tant prsum innocent jusqu' ce qu'il ait t dclar coupable
(Dclaration des Droits de lHomme et du Citoyen du 26 Aot 1789, article IX).
d Nul ne doit tre inquit pour ses opinions, [mme religieuses] pourvu que leur manifestation ne trouble pas
l'ordre public tabli par la loi
(Dclaration des Droits de lHomme et du Citoyen du 26 Aot 1789, article X).
QUESTIONS DE COURS
Expliquez pourquoi la mthode des tables de vrit n'est pas applicable en logique des prdicats du 1er ordre
On considre les deux formules suivantes de la logique des prdicats du premier ordre :
(F1) x y z ((P(x) S(x,y)) P(y) S(y,z) )
(F2) x z ((S(z,x) S(x,z)) y S(x,y))
On donne les deux interprtations A et B suivantes :
(Ia) le domaine est N ; S est la relation d'ordre usuelle et P(n) si et seulement si n est pair.
(Ib) le domaine est R ; S(x,y) si et seulement si y=x2 et P(x) si et seulement si x est un nombre rationnel.
De quelles formules F1 ou F2 les interprtations A et B sont-elles des modles ? (Rponse F2).
Lorsque vous tes amens faire des traductions en LP1, le choix des bonnes combinaisons entre quantificateurs et
connecteurs logiques vous pose souvent problme. Considrons par exemple les deux noncs suivants :
(1) x ( P(x) Q(x) ) (2) x ( P(x) Q(x) )
Afin de saisir la distinction entre ces propositions, trouver un modle de (1) qui rend faux le second.
INTERPRETATIONS : EXERCICES
On se place dans la logique des prdicats du premier ordre. On considre les prdicats d'arit 2 Egal et Diff dont les
raccourcis d'criture sont respectivement = et , c'est dire que x = y est vrai ssi Iv(x) et Iv(y) sont gaux et x y est
vrai ssi Iv(x) et Iv(y) sont diffrents. Soient les formules suivantes :
a xyzt ( x y y z z x ( t = x t = y t = z))
b txyz ( x y y z z x ( t = x t = y t = z))
c x y tzt ( x y y z z x ( t = x t = y t = z))
d x y tzt ( x y y z z x ( t = x t = y t = z))
Dterminez la validit de ces formules (validit, satisfaisabilit, inconsistance) dans les cinq interprtations suivantes,
variant par leur domaine d'interprtation respectifs :
D1 = { 0 } D2 = { 0, 1} D3 = {0, 1, 2} D3 = {0, 1, 2, 3} D4 =
R et S sont deux prdicats darit 2 du langage des prdicats du 1er ordre. On considre les deux formules suivantes :
(F1) x y ( R(x,y) S(x,y) )
(F2) x y ( R(x,y) S(x,y) )
Le domaine dinterprtation est lensemble des entiers naturels suprieurs ou gaux 2. Linterprtation de R est la
relation dingalit , celle de S est la relation divise au sens de la division euclidienne dfinie sur les entiers.
1. Donner, dans cette interprtation, les valeurs de vrit respectives des formules F1 et F2.
Rponse I(F1) = F ; I(F2) = V.
2. En gardant les mmes interprtations pour R et S, modifier le domaine dinterprtation pour que les deux formules
soient vraies.
1) x [ P(x) y Q(x,y) ]
2) x [ P(x) y Q(x,y) ]
Donnez un modle de la formule (2) pour lequel la formule (1) est fausse.
On se place dans la logique des prdicats du premier ordre. On considre, outre le symbole de la relation binaire galit,
deux symboles de fonctions unaires f et g pouvant recevoir diverses interprtations. On dfinit les formules suivantes :
F1 : x (f(x) = g(x))
F2 : x y (f(x) = g(y))
F3 : x y (f(x) = g(y))
Donner un modle pour chacune des formules : F1 F2, F2, F1 F3.
Unification
QUESTIONS DE COURS
Trouvez, quand il existe, un unificateur de chacun des ensembles de clauses ci-dessous. Donnez en outre la fbf
rsultante de l'unification opre sur ces clauses :
a G(x, f (A, y) ) G(x, B) G(x, f(A, g(z) ) )
b P(u, g( f(a, b) ), u ) P( f(x, g(z)), x, f(y, g(b) ) )
c G(x,y) G( f(x), A )
UNIFICATION : EXERCICES
Pour chaque cas, dire si les deux formules atomiques sont unifiables et en donner le cas chant un unificateur :
b A(x, g(x,y) ) A(g(y, z), g ( g( h(u), y) , h(u) ) )
b B(x, f(g(y)), f(x)) B(h(t,z),f(z),f(h(y,z)))
c P( x, f(x), g( f(x),x ) ) P(z, f(f(A)), g( f(g(A,z)), v ) )
d P(u, g( f(A,b)), u ) P( f(x, g(z)), x, f(y, g(B)) )
e P( x, f(x), f(f(x)) ) P( f(f(y)), y, f(y) )
Rsolution LP1
QUESTIONS DE COURS
Prciser, en appliquant la mthode de rsolution, si les ensembles de clauses suivantes sont contradictoires ou non.
1) S(z) S(A) S(t) S(A) S(y)
2) Q(A) P(x,f(x)) P(z,t) Q(z)
3) A(A) N(B) A(x) N(x)
4) P(x) Q(f(x)) Q(y) P(f(y))
RESOLUTION : EXERCICES
Prciser, en appliquant la mthode de rsolution, si les ensembles de clauses suivantes sont contradictoires ou non.
1) P(x) Q(s(x)) Q(x) P(s(x)) P(A) P(s(s(s(s(A)))))
2) P(A,y) P(y,A) Q(z) S(z) R(u) Q(u) S(x)
3) H(x) P(x) D(y) P(y) H(z) I(z) D(F) I(F)
Dmontrez la validit des raisonnements suivants l'aide du principe de rsolution. Nous avons dj ralis la traduction
en LP1 du premier raisonnement.
a Tout homme est un singe suprieur
Tout singe suprieur est un primate
Les dauphins ne sont pas des primates
Il y a des dauphines qui sont intelligents
Donc on peut ne pas tre un homme et tre intelligent
b Lisa Simpson est intelligente
Bart Simpson a une intelligence trs trs limite
Homer Simpson est moins intelligent qu'un donuts.
Lisa Simpson et Bart Simpson sont les enfants de Homer Simpson.
2. Si la formule n'est pas valide, donnez un exemple d'interprtation qui la rend fausse.
Montrer en utilisant le principe de rsolution que les raisonnements suivants sont valides.
a x y P(x,y)
zt ( P(z,t) Q(z) )
u Q(u)
b x ( P(x) P( f (f(x)) ) )
x ( P(x) R( f(x) ) )
x ( R(x) P( f(x) ) )
c x ( P(x) Q(s(x)) )
x ( Q(x) P(s(x)) )
P(A)
P(s(s(s(s(A)))))
Nous avons vu en cours que la logique des prdicats du premier ordre tait indcidable. Nous allons prcisment tudier
dans cet exercice un exemple flagrant d'indcidabilit.
Appliquez le principe de rsolution sur le raisonnement suivant :
Peut-on conclure que le raisonnement est valide ? Si non, essayez de montrer que la conclusion nest pas une
consquence logique des hypothses en exhibant un contre-exemple.
Suite la dcouverte de lAmrique et de ses habitants, une des questions qui agita lglise catholique fut de savoir si les
amrindiens avaient une me. Cette question, qui fut tranche favorablement (controverse de Valladolid), ntait pas
sans arrire pense : elle justifiait ou non le recours lesclavage. La logique aurait-elle pu tre mise contribution dans
ce dbat religieux ? Considrons le raisonnement suivant :
Les amrindiens sont tous des tres humains
Les tres humains ont une me
Il y a des amrindiens qui ont une me
a Donnez une reprsentation logique de ce raisonnement.
b Donnez la liste des clauses correspondant la formule de rfutation associe au raisonnement.
c Ce raisonnement est-il valide ?
d Ce rsultat tait-il prvisible ? Justifiez votre rponse dans le cadre ci-dessous
Une trange rumeur court au sein de la famille Patate et de ses semblables : des extra-lgumes se seraient glisss au sein
de la communaut. Afin de les dmasquer, Monsieur Patate chafaude quelques raisonnements subtils. Pourriez-vous
reprsenter ces derniers dans la logique des prdicats du 1er ordre, puis vrifier laide de la mthode de rsolution que
Monsieur Patate ne raisonne pas comme une courge, c'est--dire que ses raisonnements sont valides On utilisera pour
cela les prdicats suivants :
- AL(X) est vrai si X a un sabre laser.
- P (X) est vrai si X est une (vraie) patate (i.e. pas un extra-lgume)
- AM(X) est vrai si X a un masque.
Ainsi que la fonction v(X) qui dsigne le voisin de tout individu X. Mr Patate sappelle toujours Robert, et on supposera
que tout non patate est un extra-lgume (et inversement). Attention : les rponses sont remettre sur la copie jointe
RESOLUTION : PROBLEMES
On utilisera pour cela les prdicats Voleur/1, Assassin/1, Criminel/1, et Famille/2 et on se placera dans le domaine
dinterprtation de lensemble des tres humains
1 Certaines personnes sont des assassins
2 Tout assassin a dj vol
3 Les voleurs ne sont pas tous des assassins
4 Un criminel ne peut tre quun assassin ou un voleur (ou les deux)
5 Il y a un criminel dans ma famille (cest--dire la famille de Giovanni Manzoni)
6 Tous les membres de ma famille (cest--dire la famille de Giovanni Manzoni) sont des voleurs
Giovanni en arrive alors la conclusion suivante : Il ny a pas de voleurs dans ma famille. Nous allons utiliser la
mthode de rsolution pour montrer validit (ou non) de son raisonnement.
7 Donnez lensemble des clauses correspondant la mise sous forme clausale de la formule de rfutation
correspondant ce raisonnement..
8 Donnez larbre de rsolution LP1 qui vous permet de montrer que le raisonnement est ou nest pas valide
9 Parmi les clauses que vous avez donnes en question 7, donnez celles qui ne sont pas des clauses de Horn.
1 Construisez un exemple avec des formules A et B de votre choix, puis donnez en une interprtation pour montrer
quil ny a pas quivalence.
2 En reprenant votre exemple pour A et B, utilisez la mthode de rsolution pour montrer que les deux formules x A
y B et x (A B) ne sont pas quivalentes.
(C1) x S(f(x),f(x))
(C2) x y S(f(x),y)
(C3) y x S(f(x),y)
Dterminer quelles sont les consquences logiques de lensemble des trois hypothses. Pour chacune des conclusions
qui nest pas consquence logique des hypothses, trouver un modle des hypothses o la conclusion est fausse
Exercice 95 Quelques rgles dquivalence : exercice un peu plus thorique (objectif 3.1.2 et 3.2.2)
Dmontrez la validit des formules suivantes en partant de la dfinition des interprtations des quantificateurs
existentiels et universels.
a | == x A(x) A(x) axiome de spcialisation
b | == x [ A(x) B(x)] x A(x) x B(x) distributivit de sur
c | == x [ A B(x)] A x B(x) distributivit de sur et A formule close pour x
d | == x y R(x,y) y x R(x,y) commutativit partielle de et
e | == y [ R(x,y) R(x,x) ]
QUESTIONS DE COURS
Ali Dentic a plac sur le serveur de luniversit un squelette de programme correspondant son TP sur les cursus
d'informatique ralisables au sein de luniversit. Or, ce programme ne respecte pas toujours la syntaxe du langage
Prolog Pouvez-vous laider dtecter ses erreurs de syntaxe (et non pas de smantique !) ? Il est demand de donner
chaque fois la ligne incrimine, lerreur correspondante et comment vous la corrigeriez.
/************************************************************/
/* FICHIER : di.pl */
/* AUTEUR : Dentic Ali */
/************************************************************/
/*-- suite(Avt,Apr) vrai si on peut suivre le cursus Apr juste apres Avt -----*/
/*-- cursus(Deb,Fin) vrai sil existe un cursus entre Deb et Fin ------------*/
cursus(Deb,Fin) :- suite(Deb,Fin)
cursus(Deb,Fin) :- suite(Deb,Entre),
suite(Entre,Fin).
cursus(Deb,Fin) :- cursus(Deb,Entre,Fin).
Les clauses de Horn utilises par Prolog imposent des contraintes non ngligeables sur la traduction logique des
raisonnements. En rgle gnrale, ces contraintes restent cependant facilement satisfaisables. En particulier, l'opration
de renommage que nous allons tudier dans cet exercice permettant une reformulation adquates des clauses posant
problme.
On considre ici l'ensemble des clauses suivantes, o P, Q, R et S dsignent des formules atomiques :
(1) P Q R
(2) P S
(3) QT
1 Dire, parmi ces trois clauses, lesquelles ne sont pas des clauses de Horn.
2 On appelle renommage de P l'opration, note [P P1], qui consiste remplacer dans toute clause P par P1.
Donner un ensemble de clauses de Horn quivalent l'ensemble prcdent en utilisant le renommage d'un nombre
minimal de formules atomiques. On prcisera l'ensemble des renommages effectus.
3 Ecrire alors les affirmations suivantes sous forme de clauses Prolog
(1) En cas de grve, je prendrai ma voiture
(2) Si je fais ce voyage, je prendrai le train ou la voiture
(3) Quelle calamit : il y aura grve ou bien ce sera encore la Coupe du Monde de football !
1 En choisissant des prdicats adquats, reprsentez ces connaissances par desclauses Prolog.
2 Donner une clause Prolog utilisant les prdicats coupable/1, condamne/1 qui correspondent
l'assertion si un suspect est coupable d'un meurtre, alors il doit tre condamn
3 Donner une rgle Prolog qui correspond l'assertion si un cadavre a t dcouvert dans une
salle et qu'on dcouvre les empreintes d'un suspect dans cette salle, alors le suspect est
coupable
4 Donner une rgle Prolog qui correspond l'assertion si un cadavre a t trouv dans une
salle et si un objet (contondant) se trouve dans cette salle, il s'agit indubitablement de l'objet
qui a permis de commettre cet acte dlictueux
5 Donnez les arbres de drivation qui correspondent aux question Mademoiselle Rose est-elle
coupable ? et Le Colonel Moutarde est-il coupable et quel objet a-t-il utilis pour raliser
son forfait ?.
Une bibliothque possde un certain nombre d'ouvrages, tous crits par des auteurs de l'absurde et classs en diffrentes
catgories :
romans : La Peste Camus
essais : Le mythe de Sisyphe Camus
thtre : Rhinocros Ionesco
En attendant Godot Beckett
Caligula Camus
1 Reprsenter les informations suivantes (par exemple : Godot est une pice de thtre dont l'auteur est Beckett) sous
la forme de faits Prolog.
2 Ecrire un prdicat partout(Auteur) qui russit si la bibliothque dispose d'uvres de l'auteur Auteur dans
tous les types d'ouvrages.
3 Ecrire un prdicat plusieurs(Auteur,Type)qui russit si la bibliothque possde plusieurs uvres de
l'auteur Auteur dans la mme catgorie Type. On suppose qu'on dispose d'un prdicat diff(X,Y) prdfini
qui russit si X et Y sont diffrents.
On dsire crire un petit programme Prolog qui aide une personne donne choisir un menu au restaurant. Sur la carte
de l'tablissement, sont prcises les informations suivantes :
vin : cidre
cte du Rhne
plats : galettes de bl noir l'andouille de Gumn
ravioles du Royans
desserts : far aux pruneaux
pogne de Romans
1 Reprsentation des connaissances Reprsenter les informations ci-dessus (par exemple : le far est un dessert)
sous la forme de faits Prolog.
2 Pour chaque type de met, l'un est typique de Bretagne, l'autre de Rhne Alpes. Reprsenter les informations
correspondantes en utilisant un prdicat d'arit 2 lieu(Elt,Region) qui russit si Elt provient de Region.
3 Ecrire un prdicat d'arit 4 menu_reg(Vin,Plat,Dessert,Region) qui russit si le vin, le plat et le dessert
considrs composent un menu typique de la Region.
4 Fanch est breton et Pierre rhnalpin. Traduire cette information l'aide du prdicat lieu. Ecrire un prdicat d'arit
4 menu_habituel(Vin,Plat,Dessert,Personne) qui russit si le vin, le plat et le dessert composent un
menu correspondant la rgion d'o est originaire Personne.
5 Par quel but obtiendrez vous le menu habituel qui sied Fanch ?
On dsire raliser un programme Prolog qui modlise une base de donnes permettant de grer le stock dun
supermarch. Dans cette base de donnes, chaque produit rfrenc est dcrit par son nom, le rayon o il se trouve, son
prix unitaire et la quantit (en nombre dunits) prsente en stock. Le tableau ci-dessous prsente un extrait de cette BD.
On suppose que lon dispose du prdicat prdfini between/2 dfini comme suit : between(Min,Val,Max)
russit si Val est un entier ou un rel compris au sens large entre les valeurs Min et Max. Son seul mode dutilisation
est (+,+,+), c'est--dire que ses arguments doivent tre instancis par des valeurs lors de l'appel.
a) Reprsentation des connaissances Comment reprsenterez-vous ces connaissances dans votre programme
Prolog ? La reprsentation choisie devra vous permettre de rpondre aisment aux problmes ci-dessous.
b) Gestion de stock Donnez lcriture Prolog du prdicat rupture/2 dfini comme suit :
rupture(Prod,Rayon) russit si Prod est un produit prsent normalement dans le rayon Rayon qui est
actuellement en rupture de stock. Ce prdicat devra fonctionner dans tous les modes dutilisation possibles.
c) Donnez des exemples de questions que vous poseriez pour tester la validit du prdicat rupture/2 en mode (+,+).
d) Aide au client Donnez lcriture Prolog du prdicat choix/3 dfini comme suit : choix(Rayon,Px_Max,
Prod) russit si Prod est un produit prsent dans le rayon Rayon et dont le prix est infrieur Px_Max. Ce
prdicat devra fonctionner dans les modes (+,+,-) et (+,+,+), cest--dire que le client donne chaque fois le rayon et
le prix maximal recherch.
Consquence de lexplosion dInternet mais aussi de la mondialisation des changes, les bases de donnes et plus
gnralement les systmes dinformations occupent une place de plus en plus importante dans lconomie et
constituent un domaine majeur de linformatique. C'est pour cela que nous avons orient notre Master Informatique vers
les mtiers lis au dveloppement ou la gestion des bases de donnes et leur interfaage sur le WWW. Nous allons
voir qu'il est galement possible de dfinir des bases de donnes logiques en Prolog. Historiquement, le transport arien
a t un des premiers secteurs conomiques faisant un usage intensif de grandes bases de donnes. Dans cet exercice, on
considre une petite base de donnes donnant un ensemble dinformations sur les vols de diffrentes compagnies. La
premire table comprend les champs (attributs) dcrits ci-dessous avec un exemple de contenu (enregistrements) :
- vol numro du vol
- compagnie nom de la compagnie
- avion type davion utilis
- jour jour de la semaine correspondant ce vol
- horaire horaire de dpart du vol
- depart code de laroport de dpart
- arrivee code de laroport darrive
Par ailleurs, la table ci-dessous donne la liste des aroports et de la ville principale quils desservent :
- code code de laroport
- aroport nom de laroport
- ville ville desservie par laroport
code aroport ville
CDG Roissy - Charles de Gaulle Paris
BRG Brest Guipavas Brest
TLE Toulouse Blagnac Toulouse
NIC Nice Nice
NTE Nantes Atlantique Nantes Atlantique
LYS Lyon Saint Saint-Exupry Lyon Saint Saint-Exupry
Au cours de cet exercice, nous allons raliser un petit programme qui nous donnera une ide de la ralisation en Prolog
de bases de donnes simples ainsi que de leur interrogation.
1 Reprsentation des connaissances Comment reprsenterez-vous en Prolog les informations de cette base de
donnes ? Donnez titre dillustration la reprsentation des vols figurant en exemple dans le tableau.
2 On dsire obtenir la liste des compagnies assurant une liaison entre deux villes. Dfinir le prdicat liaison/3 tel
que liaison(Dep,Arr,Comp) russit si Comp est une compagnie assurant un vol entre Dep et Arr.
3 On dsire maintenir obtenir la liste des compagnies assurant une liaison entre deux villes avec un dpart matinal.
Dfinir un prdicat liaison/4 tel que liaison(Dep,Arr,Comp,Matin) russit si Comp est une compagnie
assurant un vol entre Dep et Arr soit en matine (Matin =1) soit en aprs-midi (Matin =0). Dans ce cas, il faut
que le vol parte le matin ET quil assure la liaison demande. On suppose que lon dispose dun prdicat
avant(X,Y) qui russit si lheure X est infrieure lheure Y.
Afin de rduire leurs frais dexploitations sur certaines liaisons intrieures peu rentables, les grandes compagnies
ariennes ont de plus en plus recours de petits oprateurs locaux assurant pour leur compte ces dessertes. Cest ainsi,
par exemple, que la majeure partie des vols dAir France au dpart de la Bretagne sont assures par BritAir. Cette
information peut-tre importante pour les clients, ces oprateurs rgionaux proposant frquemment un accueil bord
bien plus apprci que celui des grandes compagnies.
On se propose donc de complter notre base de donnes par une table complmentaire dcrivant lensemble de ces vols
raliss par un oprateur autre que la compagnie commercialisant le vol :
- vol numro du vol
- compagnie nom de la compagnie commercialisant le vol
- oprateur nom de loprateur ralisant effectivement le vol
Le tableau ci-dessous donne un aperu du contenu de cette base de donnes :
vol compagnie oprateur
AF4056 Air France BritAir
AF7734 Air France BritAir
Si les les sont le plus souvent synonymes de soleil, cocotiers et vahins dans lesprit des vacanciers occidentaux, il en
est qui, balayes par les Quarantimes Rugissants ou situes aux confins de lArctique, nont pour elles que leur solitude
et leur caractre grandiose. On considre le programme Prolog suivant, correspondant une mini base de donnes issue
dun SIG (systme dinformation gographique) consacr aux les des rgions arctiques :
(1) ile(crozet,france,indien).
(2) ile(georgie_sud,royaume_uni,atlantique_sud).
(3) ile(francois_joseph,russie,arctique).
(4) ile(ellesemere,canada,artique).
(5) hemisphere(indien,sud).
(6) hemisphere(atalantique_sud,sud).
(7) hemisphere(arctique,nord).
(8) possession(Pays,Hemisph):- ile(_,Pays,Ocean), hemisphere(Ocean,Hemisph).
Question Quelles sont les rponses donnes par Prolog au but : ?- gagne(X,mercredi)
Donnez l'arbre de rsolution correspondant.
Rponse indicative On obtient 2 gagants possibles le mercredi ... mais trois dmonstrations au total.
Exercice 109 Rcursivit par lexemple: les amis de mes amis ... (objectifs 4.1.5 et 4.2.4)
Au chapitre suivant, nous allons dcouvrir les plaisirs de la programmation rcursive, voir sa puissance mais aussi ses
dangers. Rien ne nous empche de dcouvrir par lexemple ce type de programmation se mordant la queue . On
considre le programme suivant :
(1) ami(paul, pierre).
(2) ami(pierre,jacques).
(3) ami(X,Y) :- ami(X,Z), ami(Z,Y).
1 Comment peut sinterprter en franais la rgle (3) ? En quoi cette rgle est-elle particulire ?
2 Donnez larbre de rsolution correspondant la question : ?- ami(paul,jacques).
3 Donnez larbre de rsolution correspondant la question : ?- ami(paul,LesAutres). Commentaire ?
PROBLEMES
On considre la base de connaissances suivante, concernant des espces alpines en voie de disparition :
Le ttras lyre est un oiseau (appel aussi coq de bruyre)
Le gypate barbu est un oiseau carnivore (appel aussi vautour des agneaux car raffolant de ces tendres petites btes...)
Le lynx est un animal carnivore.
Un oiseau est un animal.
Les carnivores mangent de la viande.
Dans tout animal, il y a de la viande.
Tous les animaux boivent de l'eau.
Un animal consomme ce qu'il boit ou mange.
1 Reprsenter cette base de connaissances en logique de prdicats du 1er ordre, puis en un programme Prolog.
2 Les clauses Prolog du programme correspondent-elles bien des clauses de Horn de la LP1 ?
3 Comment interprtez-vous la question suivante : ?- carnivore(X), conso(X,Y).
4 Donnez l'arbre de rsolution complet cette question.
Exercice 111 Erreurs de syntaxe et messages SWI-Prolog (15; objectifs 4.1.4 et 4.2.5)
Lobservation de la mthodologie de programmation des tudiants en sance de TP est une preuve souvent prouvante
pour les enseignants qui sattendent toujours plus de rflexion de la part de leurs lves. Il est ainsi rageant de vous
voir modifier nimporte quoi au hasard dans votre programme suite laffichage dune erreur de compilation, ou pire
encore vous voir utiliser votre programme alors que des erreurs de compilation vous ont t signifies Ce petit
exercice a prcisment pour objectif de vous faire rflchir vos mthodes de programmation.
1 Pourquoi est-il toujours possible dutiliser un programme Prolog en dpit de laffichage derreurs la
compilation ? Pourquoi est-on assur que le comportement du systme sera erron ? Justifiez votre rponse.
2 Pour compiler un programme sous SWI-Prolog, on appelle un prdicat prdfini ( consult/1). Sil y a des erreurs
dans le programme compil, lappel consult russira-t-il (i .e. rponde Yes au final) ou non ?
On considre le message derreur suivant obtenu sur le compilateur SWI-PROLOG :
[WARNING: (/D:/toto.pl:2) Syntax error: Operator expected]
3 Que signifie la partie (/D:/toto.pl:2) du message derreur ?
On considre le programme Prolog suivant (les numros de lignes indiqus gauche ne sont l que pour vous aider
vous reprer dans le fichier : ils napparaissent bien entendu pas dans le programme proprement dit) :
(1) /****************************************************************/
(2) /* FICHIER : syracuse.pl */
(3) /* OBJET : mise en oeuvre de l'algo de Syracuse */
(4) /* AUTEUR : J.Y. Antoine */
(5) /* DATE : 01/12/2001 */
(6) /****************************************************************/
(12) div2(NN,N) :- N is NN / 2. */
(13) /* suivant(Crt,Suivt) reussit si Suivt obtenu avec Crt par l'algo de Syracuse */
(17) syra(1)
(18) syra(N) :- write(N), tab(1), suivant(N,Suivt), syra(Suivt).
4 Ce programme prsente quatre erreurs. Il vous est demand de les dtecter en donnant chaque fois la nature de
lerreur (i.e. quelle serait la bonne criture), le message quaffichera le compilateur Prolog en dtectant cette erreur.
QUESTIONS DE COURS
On dsire raliser un programme Prolog qui recherche, partir de la donne de relations maritimes directes (i.e. sans
escales), lensemble des voyages possibles que lon peut effectuer en bateau entre deux ports. Ce programme nutilise
quun seul prdicat darit 2 : liaison(dep,arr) qui russit sil existe une liaison maritime entre le port de dpart
dep et le port darrive arr. Dans lcriture propose du programme, les relations directes sont alors reprsentes par
un ensemble de faits, alors que les liaisons avec escale sont obtenues laide dune rgle rcursive :
(1) liaison(brest,le_conquet).
(2) liaison(le_conquet,molene).
(3) liaison(molene,ouessant).
(4) liaison(santander,brest).
(5) liaison(brest,plymouth).
(6) liaison(Dep,Arr) :- liaision(Dep,Esc), liaison(Esc,Arr).
Exercice 113 L'argent ne fait pas le bonheur : rcursivit (mal) cache (objectifs 4.2.4, 5.1.2. et 5.2.2)
On considre un prdicat quelconque lambda/2. Sachant que ce prdicat nest pas rcursif et quil ne met pas en jeu de
prdicats extralogiques, pouvez-vous dire quels sont ses modes dutilisation ? Justifiez votre rponse.
On considre le programme Prolog suivant, dfinissant une relation dordre (suprieur) entre nombres entiers :
(1) suivant(1,0).
(2) suivant(2,1).
(3) suivant(3,2).
(4) sup(Sup,Inf) :- suivant(Sup,Inf).
(5) sup(Sup,Inf) :- sup(Sup,Entre), sup(Entre,Inf).
Voici une fois encore a ralis un programme prsentant de nombreuses fautes de syntaxe Pouvez-vous les corriger ?
/*****************************************************************************/
/* FICHIER : team.pl */
/* AUTEUR : Antoine Jean-Yves */
/*****************************************************************************/
/* faits */
oter(E,[E|Q],Q).
oter(E,[X|QE],[X|Q]) :- oter(E,[QE],[Q]).
a) On vous demande tout dabord de donner lensemble des erreurs de syntaxe du programme, cest--dire celles
qui donneront lieu des messages derreurs de la part de linterprteur Prolog lors de ltape de consultation du
programme (appel au prdicat consult/1). Il est demand de donner chaque fois la clause incrimine, lerreur
correspondante et comment vous la corrigeriez.
b) On vous demande tout dabord de donner lensemble des erreurs de programmation qui correspondront une
smantique non attendue du programme. Cest dire aux erreurs qui ne seront pas dtectes par linterprteur,
mais qui conduisent visiblement un comportement erron du programme. Il est demand de donner chaque
fois la clause incrimine, lerreur correspondante et comment vous la corrigeriez.
Exercice 119 Les voisins de mes voisins sont mes voisins (5 ; objectifs 5.1.2 et 5.2.2)
Le programme Prolog suivant cherche donner tous les couples de pays frontaliers aux abords de la pninsule ibrique.
Il prsente des problmes de gestion de rcursivit :
(1) frontalier(espagne,france).
(2) frontalier(espagne,portugal).
(3) frontalier(X,Y) :- frontalier(Y,X).
Rcrire le programme afin de rendre celui-ci utilisable dans tous les modes dutilisation.
On considre le programme Prolog suivant, qui dcrit les relations de commandement au sein des officiers gnraux et
suprieurs de la marine nationale :
/* sup(Sup,Inf) reussit si Sup est le grade directement superieur Inf */
(1) sup(amiral,vice_amiral).
(2) sup(vice_amiral,ctre_amiral).
(3) sup(ctre_amiral,capt_vaisseau).
(4) sup(capt_vaisseau,capt_fregate).
(5) sup(capt_fregate,capt_corvette).
/* obeit(Inf,Sup) reussit si Sup a un grade superieur Inf */
/* modes dutilisation recherches : (+,+) et (+,-) */
(6) obeit(Inf,Sup) :- obeit(Sup,Entre), obeit(Entre,Inf).
(7) obeit(Inf,Sup) :- sup(Sup,Inf).
On suppose que :
sup(S,I) est vrai si S entier est strictement suprieur I. sup/2 a pour mode dutilisation (+,+).
plus(A,B,AB) est vrai si AB = A + B. plus/3 a pour modes : (+,+,+), (+,+,-), (-,+,+), (+,-,+).
fois(A,B,AB) est vrai si AB = A * B. fois/3 a pour modes : (+,+,+), (+,+,-), (-,+,+), (+,-,+).
Donnez les modes dutilisation du prdicat fact/2 ainsi dfini.
Etudiant en licence informatique, Jos Spr-Ledis se voit proposer le programme inconnu suivant :
(0) aez(A,B) :- jed(B,1,A).
(1) jed (1,A,A).
(2) jed (B,Q,A) :- QS is Q+1, 0 is B mod QS, BD is B div QS, jed(BD,QS,A).
On rappelle que les prdicats arithmtiques mod et div correspondent respectivement au calcul du reste et du quotient
de la division entire.
1 Donnez les arbres de rsolution complets correspondant aux questions :
a) ?- aez(A,2).
b) ?- aez(A,6).
c) ?- aez(3,4).
Exercice 123 Cest pas moi, cest lautre (25 ; objectifs 5.2.1 et 5.2.2)
Souvenez-vous... La France a connu au cours de lt 2002-2003 un pisode de canicule dont se serait bien pass Jean-
Pierre Raffarin, le premier ministre de l'poque. Celui-ci fut en effet accus par lopposition, mais galement par les
observateurs politiques, de vacance de pouvoir alors mme que des milliers de personnes mourraient dhyperthermie
dans des hpitaux surchargs. Lexplication qua donn le premier ministre cette faillite de lEtat se rsume la
maxime cest pas moi, cest lautre : il na pas t inform par le ministre de la Sant de l'poque (J-F. Mattei) qui lui
mme na pas t alert par son Directeur Gnral de la Sant (L. Abenham) qui lui mme na pas reu suffisamment
dinformations du directeur (P. Brcker) de lINSV (Institut National de Veille Sanitaire) qui lui-mme
Sans chercher trancher ici sur les responsabilits de chacun, cet prouvant pisode estival est loccasion dun exercice
de rentre portant sur la chane dinformation qui doit remonter du terrain jusquaux cabinets gouvernementaux. Deux
prdicats sont utiliss pour dfinir la liste des protagonistes de laffaire et leur liens de subordination :
fonction(P,F) est vrai si la personne P a pour fonction (premier ministre, par exemple) F.
superieur(F,FSup) est vrai si la personne de fonction F est le subordonn direct de la personne de fonction Fsup
(fonction hirarchique directement suprieure).
1) Reprsentez les connaissances donnes dans lnonc ci-dessus laide de ces prdicats.
Pour rsoudre notre problme, on dsire maintenant raliser un prdicat informe_par(P1,P2), qui russit si la
personne P1 doit tre informe, directement ou indirectement (i.e. par voie hirarchique) par la personne P2. Ce
prdicat doit fonctionner en mode (+,+) et (+,-).
2) Donnez lanalyse du problme correspondant la dfinition du prdicat.
3) Donner lcriture du prdicat en Prolog.
4) Donnez un ensemble de tests permettant de vrifier systmatiquement que le prdicat fonctionne bien dans les
modes attendus.
Se cherchant de grands dfis intellectuels solutionner, l'Intelligence Artificielle, ses dbuts dans les annes 60, s'est
passionne pour ce qu'on appelait le monde des blocs. Il s'agissait en fait de rsoudre un problme enfantin la porte
de tout nourrisson : dplacer, l'aide des robots, des cubes empils dans une configuration donne pour les replacer
dans une autre configuration, ceci en ne prenant chaque fois qu'un seul cube. Par exemple :
A C
B A
C B
La solution apparut rapidement, et ce grand classique trouva sa place dans tous les enseignements de base en
Intelligence Artificielle. Le problme est d'ailleurs assez simple et peut tre rsolu en Prolog par un tudiant de 1 er cycle.
Nous allons tudier ici une toute petite partie du problme. On reprsente tout empilement l'aide d'un ensemble de
faits pose_sur(X,Y), prdicat qui russit si X est pos directement Y. Ainsi, la pile gauche de la figure ci-dessus se
dcrit comme suit :
pose_sur(c,sol).
pose_sur(b,c).
pose_sur(a,b).
Pour estimer si une position est correcte ou non, il peut tre utile au robot de savoir d'une manire gnrale si un bloc
donn est au dessus d'un autre, sans que ceux-ci soient poss l'un sur l'autre. Par exemple, sur la figure de gauche, A est
au dessus de B, mais aussi de C et du sol.
Question On demande prcisment d'crire le prdicat sur(X,Y) qui russit sur X est au dessus de Y.
Si certains critiques dart ont remis en cause une certaine vision dterministe de la modernit dans lart, il nen reste pas
moins que lvolution des courants artistiques sest souvent faite de proche en proche : une cole stylistique, une fois
tablie, influence de nouveaux artistes qui sy intgrent puis vont plus encore de lavant dans linnovation pour crer
finalement une nouvelle cole artistique. En Prolog, on dcide de reprsenter ces relations dinfluences successives par
une liste de faits utilisant le prdicat prefigure(X,Y), qui russit si lcole X a prfigur lapparition de lcole Y et
est donc son prdcesseur direct dans lhistoire de lart. On suppose (postulat trs rducteur) au passage que tout
courant artistique na t influenc que par un prdcesseur unique. Par exemple :
prefigure(barbizon,impressionnisme).
prefigure(pont_aven,nabis).
prefigure(impressionnisme,fauvisme).
prefigure(cubisme,futurisme).
On veut crire un prdicat darit 2 apres(Apr,Avt)qui russit si Avt est une cole stylistique apparue aprs Apr.
a) Donnez votre analyse du problme spcifi de la manire suivante : apres(Apr,Avt) russit si lcole Apr est
apparue aprs lcole artistique Avt
b) Donnez la programmation en Prolog du prdicat apres/2 conformment cette analyse.
Exercice 126 Woube story, ou le mythe d'Ariane revisit (objectifs 4.2.4, 5.2.1 et 5.2.2)
Alec Tronic, lingnieur systme du Dpartement Informatique, est charg de connecter lensemble des ordinateurs en
libre service. Pour cela, il relie les ordinateurs deux deux. Pour ne pas se tromper, il note chaque fois le nom de
chaque ordinateur reli, en tenant bien compte du sens de la connexion. Au bout dun moment, il ne sait plus trs bien
o il en est. Sur son papier, il a not les relations directes entre chaque ordinateur :
Lordinateur a est reli lordinateur f
Lordinateur b est reli lordinateur d
Lordinateur d est reli lordinateur c
Lordinateur a est reli lordinateur c
Lordinateur c est reli lordinateur e
Lordinateur g est reli lordinateur h
Pour laider, on va reprsenter chaque connexion directe entre des ordinateurs X et Y par le prdicat lie(X,Y). On
suppose que ces connexions sont unidirectionnelles, cest dire que le fait que X est li Y nimplique pas que Y soit
li X.
a Dfinissez sous forme de clauses Prolog le prdicat connecte(X,Y) qui est vrai sil existe une connexion, directe
ou non, entre les ordinateurs X et Y. L encore, il ny a pas a priori de bidirectionnalit des connexions.
b Etes-vous srs que votre programme ne boucle pas. Pour vous en persuader, crivez larbre de preuve Prolog en
rponse aux questions suivantes :
?- connecte(b,c).
?- connecte(c,b).
?- connecte(z,u).
Exercice 127 Recherche de diviseur ... sans division (objectifs 5.2.1 et 5.2.2)
Pour lordinateur (et ltre humain !), la division est une opration plus difficile raliser quune simple addition ou
soustraction. Cest ainsi quil nest pas dfini en Prolog de prdicat logique ralisant la division (cf. chapitre consacr
lartithmtique Prolog et ses prdicat extra-logiques). Pour le programmeur dsireux de nutiliser quun langage Prolog
pur, cest dire nutilisant que des prdicats rigoureusement logiques, comment rpondre alors au problme suivant :
raliser un prdicat darit diviseur(N,Div) qui russit si lentier Div est un diviseur de lentier N.
La solution a ce problme est heureusement trouve depuis lantiquit : il suffiser de constater que si B est un diviseur
de A, alors B est aussi un diviseur de B-A. Partant de cette proprit, sauez-vous raliser ce prdicat ?
Indication On pourra pour utliser le prdicat logique plus/3 dfini comme suit : plus(X,Y,Z) russit si Z est la somme
de X et Y entiers relatifs.
Le programme Prolog suivant cherche donner lensemble des couples de jumeaux dune maternit. Le prdicat
jumeaux/2 est sens fonctionner en mode (+,+) et (+,-) :
/* faits : declarations des jumeaux */
(1) jumeaux(riri,fifi).
(2) jumeaux(igor,grichka).
/* regles : jumeaux(X,Y) est vrai si X et Y sont jumeaux et reciproquement */
(3) jumeaux(X,Y) :- jumeaux(Y,X).
Reprsentation des connaissances Dans ce cas, les bbs pris deux deux sont considrs comme des jumeaux. On
reprsentera donc les enfants multiples deux deux, laide du prdicat jumeaux/2. Par exemple, si Riri, Fifi et Loulou
sont des tripls, on se contentera de dfinir les faits suivants :
jumeaux(riri,fifi).
jumeaux(fifi,loulou).
Spcification du problme Il vous est demand de raliser un prdicat (qui peut-tre jumeaux/2) darit 2 qui
russit pour tout couple de jumeaux, que ceux-ci fassent partie dune porte de 2, 3, 4, 5 etc enfants multiples.
6) Donnez lanalyse du problme correspondant cette nouvelle dfinition du prdicat.
7) Donner lcriture du prdicat correspondant cette nouvelle dfinition
Exercice 129 Calcul dune fonction par mthode dichotomique (objectifs 5.2.1 et 5.2.2)
La recherche exacte des zros dune fonction est un problme mathmatique parfois trs complexe. Lordinateur fournit
alors une aide prcieuse en trouvant une solution par approximation. La mthode la plus simple est de procder par
dichotomie : on considre la fonction sur un intervalle [a,b] sur lequel on sait que f change de signe (cest dire que
f(a)*f(b) 0). On cherche alors rduire cet intervalle en le coupant en deux et en retravaillant ensuite sur le sous-
intervalle vrifiant encore la proprit de changement de signe. On procde par itration jusqu ce que lon tombe pile
sur le zro de la fonction, ou quon arrive un intervalle dont on juge quil encadre de manire suffisamment prcise le
zro. La valeur infrieure de lintervalle est alors choisie comme approximation du zro de la fonction.
Question On considre une fonction f darit 1dfinie en Prolog laide du prdicat darit 2 f(X,Y) qui russit si
Y = f(X). On demande de raliser un prdicat darit 2 zero(Zero,Min, Max, Seuil) qui donne le zro de cette
fonction su lintervalle [Min,Max] de manire exacte, ou approxime cette valeur avec un cart infrieur Seuil. Le
rsultat tant reprsent par le premier argument du prdicat.
Remarque On suppose que lon dispose pour cet exercice des prdicats prdfinis suivants :
plus(A,B,C) qui russit si C est gal la somme de A et de B
fois(A,B,C) qui russit si C est gal au produit de A et B
div(A,B,C) qui russit si C est gal la division de A par B
inf(A,B) qui russit si A est infrieur B
Holding financires, participations croises, O.P.A. amicales ou ennemies, intervention de fonds de pensions,... : les
capital des grandes entreprises est de plus en plus complexe et fragment, tel point que le petit actionnaire y perd le
plus souvent ses petits. Dans cet exercice, nous allons nous intresser au monde de la grande distribution, qui a connu
ces dernires annes plusieurs fusions / acquisitions spectaculaires.
18 % 24 % 51 % 7% 100%
Casino
51%
49%
Prisunic Chargeurs_distribution
Nous allons raliser un petit programme qui permettra de rpondre automatiquement a la question essentielle suivante :
qui a le contrle dune socit donne. Pour cela, on tudie le cas faussement artificiel rsum par la figure ci-
dessus.
Ce schma se lit comme suit : la socit Promods dtient 18% du capital de la socit Casino. Les hritiers de
Geoffroy Guichard dtiennent 34 % de la socit Casino, et ainsi de suite.
Remarque : dans cet exercice, on pourra utiliser les prdicats prdfinis suivants :
plus(A,B,C) qui russit si C est gal la somme de A et de B
fois(A,B,C) qui russit si C est gal au produit de A et B
between(A,B,C) qui russit si C est compris entre les valeurs de A et B
1 Reprsentez en Prolog lensemble des faits illustrs sur la figure prcdente. On utilisera pour cela le prdicat
darit 3 action(E1,E2,Part) qui russit si la socit E1 est un actionnaire de la socit E2 qui dtient Part
pour-cents du capital de cette dernire. On normalisera les pourcentages considrs, cest dire que 18% se
reprsentera par exemple par le rel 0,18.
2 Ecrire un prdicat darit 2 filiale(E1,E2) qui russit si la socit E1 est une filiale de la socit E2, cest
dire que cette dernire dtient une partie du capital de la premire. On remarquera que cette dtention de capital
peut-tre indirecte. Par exemple, votre programme doit rpondre par laffirmative la question :
?- filiale(prisu,promodes).
3 Etre actionnaire dune socit, cest bien. En tre lactionnaire majoritaire, cest mieux. Ecrire un prdicat darit 2
controle(E1,E2) qui russit si la socit E1 est un actionnaire majoritaire de la socit E2 (nous dirons quelle
la contrle), ou bien quelle est actionnaire majoritaire dune socit qui contrle la socit E2. Ainsi, votre
programme doit rpondre par laffirmative la question : ?- controle(carrouf,prisu).
Un des intrts de ces prises de participation en cascade est quelles permettent de contrler indirectement une socit
alors quon ne possde rellement quune minorit de son capital. Cest ce type de mcano financier qui permet, par
exemple, la famille Bouygues de contrler peu de frais un immense empire. Nous allons crer de nouveaux
prdicats pour dtecter ce genre de situation.
4 Ecrire un prdicat part_action(E1,E2,P) qui russit si la socit E1 possde en ralit P pour-cents du
capital de la socit E2. Par exemple, la question
?- part_action(carrouf,prisu,P).
votre programme devra rpondre par laffirmative et donner P = 0.2601.
En effet, 51 % * 51 % = 26,01 %
On supposera dfini un prdicat darit 3 fois(A,B,C) qui russit si C est gal la multiplication de A par B.
5 Enfin, crire un prdicat darit 2 bingo(E1,E2)qui russit si la socit E1 contrle la socit E2 tout en ne
possdant pas la majeure partie de son capital.
LISTES ET TERMINAISON
(1) inverse([],[]).
(2) inverse([T|Q],L) :- concat(QR,[T],L), inverse (Q,QR).
Dterminez les modes dutilisation du prdicat, pour les deux dfinitions. Conclusions ?
Rponse indicative Les deux critures se diffrencient par les modes dutilisation (-,+) et (+,-).
Exercice 133 Les Zuns et les Zotres (20' ; objectifs 5.2.3 et 5.2.4.)
Sur une plante loigne rgne Jeanmari Ier, le roi-despote des Zuns. Ce peuple belliqueux voue une haine sculaire aux
Zotres, des trangers nayant pas comme eux trois yeux, six antennes et la peau verte. Une loi ayant impos aux Zotres
de porter un nom comportant au moins un z , le roi Jeanmari Ier a demand ses plus grands scientifiques de lui
produire un programme Prolog permettant de dtecter automatiquement tout nom Zotre, chaque nom tant reprsent
par une liste de lettres.
Aprs des annes de recherche, le Haut-Comit Scientifique Zun propose le programme suivant : le prdicat darit 2
type(Nom,Type) doit tre vrai si et seulement si le nom (rdig uniquement en caractres minuscules) correspond un
patronyme rserv au type (Zun ou Zotre) adquat.
(1) type( [ z |_] , zotre).
(2) type( [_|Q] , Type ) :- type(Q,Type).
(3) type( [] , zun ).
1 Donnez les modes dutilisation de ce programme, cest--dire ici les modes pour lesquels le programme ne boucle
pas, quil donne une rponse correcte ou errone. Justifiez votre rponse.
2 Il semble que le programme propos ne soit pas correct. Afin de vous en persuader, donnez les arbres de rsolution
correspondant aux questions ci-dessous. Conclusions ?
Exercice 134 Le programme inconnu : modes dutilisation et terminaison (contrle 1999-2000 ; 25' ;
objectif 5.1.2., 5.2.2. et 5.2.4.)
On considre le programme inconnu suivant :
(1) diwezh([T], T, []).
(2) diwezh([T|Q], S, [T|R]) :- diwezh(Q, S, R).
Exercice 135 Un autre programme inconnu : modes dutilisation et terminaison (40' ; objectif 5.1.2.,
5.2.2. et 5.2.4.)
Premier prdicat (contrle continu) Dans tout ce problme, on considrera le programme (inconnu) suivant :
(1) dre_holl([],X,[]).
(2) dre_holl([T|Q],X,[T,X|QD]) :- dre_holl(Q,X,QD).
(3) dre_holl([T|Q],X,[T |QD]) :- dre_holl(Q,X,QD).
1 Donnez les arbres de rsolution correspondant aux questions suivantes :
1) ?- dre_holl([1,2,3],2,[1,2,2]).
2) ?- dre_holl([1,2],3,X).
2 Quel est le rle du prdicat dre_holl/3 :
Indication En breton : dre-holl = partout en franais.
3 Quel sont les modes dutilisation du prdicat dre_holl/3 (cochez les modes dutilisation corrects) :
Second prdicat (contrle de septembre) Dans tout ce problme, on considrera le programme (inconnu) suivant :
(1) dizurzh([],[]).
(2) dizurzh([X,Y,Z |Q],[X,Z,Y|QG]) :- dizurzh(Q,QG).
(3) dizurzh([X,Y,Z |Q],[Y,X,Z|QG]) :- dizurzh(Q,QG).
(4) dizurzh([X,Y,Z |Q],[Y,Z,X|QG]) :- dizurzh(Q,QG).
1 Donnez les arbres de rsolution complets correspondant aux questions suivantes :
1) ?- dizurzh([1,3,2,4,5,6],[1,2,3,4,5,6]).
2) ?- dizurzh([1,1,1],X).
2 Quel est le rle du prdicat dizurzh/3 ?
Indication En breton : dizurzhl = dsordre en franais.
3 Quel sont les modes dutilisation du prdicat dizurzh/3 ?
4 Donnez la rponse du programme prcdent aux questions suivantes. Commentaires ?
1) ?- dizurzh([1,2,3,4],X).
2) ?- dizurzh([1,2,3,4,5],X).
5 Modifiez les cas darrts du programme pour viter les problmes observs la question prcdente.
6 Donnez alors la rponse du programme prcdent la question suivante :
?- dizurzh([[1,2,3]],X).
1 Raliser un prdicat darit 2 somme(L,Somme) qui russit si Somme correspond la somme des lments de la
liste L.
2 Raliser un prdicat darit 3 somsign(L,SPlus,SMoins) qui calcule les sommes SPlus et SMoins
respectivement des lments positifs et ngatifs de la liste L.
3 Raliser un prdicat darit 3 somspond(LVal,LPoids,Somme) qui russit si Somme est la somme des lments
de la liste Lval pondrs par les valeurs correspondantes de la liste Lpoids. Les 2 listes sont donc de mme longueur.
2 Construire l'arbre de rsolution des buts prefixe(P,[1,2,3]) et suffixe(L,[1,2]) pour chaque criture.
3 Ecrire 3 versions du prdicat sous_liste(Sls,Ls) vrai si et seulement si Sls est une sous liste de la liste Ls:
a) en utilisant prdicats prefixe et suffixe de la premire question.
b) en utilisant uniquement le prdicat prefixe.
c) en utilisant le prdicat concat.
Quelle est l'criture la plus efficace ? Pour vous aider rpondre, vous pouvez si ncessaire comparer les arbres de
rsolution de sous_liste(Sls,[1,2]) avec ces diffrentes critures.
4 Mmes questions avec le prdicat dernier(X,Ls) qui russit ssi X est le dernier lment de la liste Ls.
Dans cet exercice, nous allons raliser un ensemble de prdicats logiques permettant le calcul de ces indicateurs. A
chaque fois, on effectuera lanalyse du problme tudi avant de donner la traduction en Prolog du prdicat. On suppose
Exercice 142 Damour belle marquise vos beaux yeux me font mourir... (objectif 5.2.4.)
On dsire raliser un prdicat qui, linstar de Molire, donne toutes les permutations possibles au sein dune liste L de
mots (ou de tout autre chose). Pour cela, nous allons tout dabord crire quelques prdicats intermdiaires.
1 Construire le prdicat inserer(X,L,LX) qui russit si la liste LX correspond la liste L, dans laquelle on a insr
Exercice 143 Bienvenue lle des Pairs (Contrle 2002-2003, 20) ; objectif 5.2.4.)
Au cours de nos TD de logique, nous nous sommes souvent aventurs sur les les des Purs et des Pires. Ici, nous nous
trouvons sur le royaume de Dubble-Dubble, le roi siamois de lle des Pairs o tout marche par deux. Ne supportant pas
la vue de nombre impairs, ce terrible despote vous demande de raliser un programme qui ne conserve dans toute liste
de nombres que la liste des nombres pairs la composant. Par exemple [1,5,6,9,4,8] donnera en rponse [6,4,8]. Saurez-
vous relever ce dfi, ou serez-vous condamn subir le supplice du ddoublement de personnalit ?
a Donnez lanalyse de ce problme. On prcisera en particulier le dcoupage prdicatif envisag pour raliser le
programme.
b Donnez le programme Prolog correspondant. On pourra utiliser si ncessaire les prdicats plus/3 et between/3
de SWI-Prolog, en prenant garde leur modes dutilisations.
PROBLEMES
Dans les temps reculs o Zeus, assembleur des nues chant par Homre, rgnait sur lOlympe, deux hros
querelleurs, Atlas et Hercule, navaient de cesse de comparer leur force. Afin de les dpartager une fois pour toutes, le
fils de Cronos leur proposa alors un dfi : supporter la plus grande tour dtres humains monts les uns sur les autres.
Grande tait la force de nos deux hros. Si grande que douze aurores nauraient suffit compter le nombre dhommes
supports par chacun. Assise auprs de Zeus, Hra au trne dor lui conseilla alors de raliser un programme Prolog
pour laider dans ce dcompte. Malheureusement, les Dieux de lOlympe ont eux aussi leurs faiblesses, et jamais Zeus
ne fut en mesure de satisfaire Hra. 3000 ans plus tard, saurez-vous surpasser le terrible assembleur des nues et
enfin raliser ce programme ?
Reprsentation des connaissances Les tours humaines seront dcrites homme par homme, laide du prdicat
darit 2 sur(X,Y) qui est vrai si X supporte directement Y sur ses paules. Par ailleurs, on dfinira des prdicat
darit1 base(X) et sommet(X) qui sont vrais si et seulement si X est la base (resp. au sommet) de la tour
humaine. Lhomme la base supportant donc entirement la tour.
On suppose la pyramide dj compltement dcrite, laide dune succession de faits. Par exemple :
base(atlas).
base(hercule).
sur(atlas,menelas).
sur(menelas,achille).
sur(achille,hector).
......
sommet(prias).
sommet(patrocle).
On demande dcrire un prdicat darit 3 gagnant(Heros1,Heros2,Gagnant) qui tant donn deux Hros
supportant une tour humaine, donne le plus fort des deux, au sens de celui qui supporte le plus grand nombre
dhommes. Ce prdicat devra tre utilisable en mode (+,+,-). La mise en oeuvre de ce prdicat peut bien entendu
supposer la dfinition dautres sous-prdicats.
Question 1 : dcoupage prdicatif On demande de donner le dcoupage prdicatif du programme attendu, cest--
dire de donner lensemble des prdicats ncessaires sa ralisation, en prcisant pour chacun :
- son rle,
- son arit,
- le rle de ses arguments,
- les modes dutilisation de ce prdicat dans le programme.
Question 2 : programmation Donner maintenant le programme complet correspondant ce dcoupage.
Question 3 : amlioration En ralit, les prdicats base/1 et sommet/1 peuvent tre dfinis partir du
prdicat sur/2 : une personne la base nest en effet sur personne, de mme que celle au fate de la tour ne
supporte personne. Donnez donc une nouvelle criture de ces prdicats, remplaant leur dfinition prcdente sous
forme de listes de faits.
3 Votre prdicat termine-t-il toujours ? Pour rpondre cette question, donnez l'arbre de rsolution correspondant
aux questions ci-dessous. Conclusion : quel est le problme ?
?- allies(france,russie).
?- allies(france,ru).
4 Une solution pour viter les bouclages constats ci-dessus est de mmoriser dans une liste les pays dj considrs
lors de la recherche d'alliance et d'interdire toute reconsidration de ces pays dans la poursuite de la recherche. On
attribue ainsi une arit 3 au prdicat d'alliance : allies(X,Y,L) russit si X et Y sont allis, la liste L correspondant
aux pays considrs pour tablir cette alliance.
a) Comment reformule-t-on les buts de la question 3 ?
b) Recrire le prdicat en tenant compte de cette modification.
Mme si les considrations gopolitiques de l'Autriche Hongrie taient tournes ailleurs, l'origine de la guerre porte sur
son conflit avec la Serbie. Dans le programme, cn dcrit cet tat par le fait :
est_ennemi(autriche_hongrie,serbie).
5 La logique militaire se rsume en un seul axiome : les ennemis de mes amis sont mes ennemis, et rciproquement...
Ecrire un prdicat ennemi qui russit pour tout pays X et Y membres respectivement des 2 alliances opposes. L
encore, il faudra tenir compte des ventuels bouclages intempestifs