|
UFR IV : Sciences économiques,
mathématiques et sociales Filière Mathématiques appliquées et sciences sociales (MASS: Cette filière est cohabilitée entre les universités de Montpellier 2 et 3). DEUG 2ème année |
Soient les clauses suivantes:
kefaije([],X,X).
kefaije([X|Y],Z,[X|R]) :- kefaije(Y,Z,R).
Ici, le prédicat kefaije a 3 arguments (il est donc d'arité 3, ou ternaire), le prémier (le plus à gauche) est obligatoirement une liste (ou chaine de caractères), et deux autres (à droite) sont quelconques. Comme personne n'a fourni la bonne réponse, j'ai accepté les réponses affirmant que les 3 arguments sont des listes, qui n'est pas fausse, mais n'est qu'à moitié exacte, car incomplète.
On peut le noter ainsi: kefaije(liste, quelconque, quelconque). On peut vérifier que les deux derniers arguments sont bien quelconques au moyen de la requête: kefaije([],aa,X) qui renvoie bien X = aa comme solution.
Cet ensemble de clauses concatène deux listes pour en faire une troisième. la propriété toujours vérifiée entre ses arguments est que le troisième est légal à la concaténation des deux premiers.
X = "fin".
kefaije(A,"ir","finir"), kefaije(A,"issons",B).
A = "fin", B = "finissons".
Attention, il y a 5 solutions, ne vous laissez pas aveugler par l'interprétation grammaticale, restez en logique...
A = "s",
X = "aisir",
Y = "aisissons".
A = "sa", X = "isir", Y = "isissons".
A = "sai", X = "sir", Y = "sissons".
A = "sais", X = "ir", Y = "issons".
A = "saisi", X = "r", Y = "ssons".
Etant donnée la définition du prédicat akoiserje, la solution utilise nécessairement fin("ir","nous","issons"). Cela signifie que prolog va chercher d'abord à résoudre kefaije(A,"ir","chérir"), d'où A = "chér" (comme à la question 3). La résolution se termine alors par celle de kefaije("chér","issons",Y), ce qui donne Y = "chérissons".
Nous pouvons reprendre le raisonnement tenu à la question précédente, en remarquant
que cette fois ci, il y aura une solution pour chaque solution de la requête
fin(X1,X2,X3), c'est à dire au total 2 solutions:
Y = "nous", Z = "chérissons".
Y = "vous", Z = "chérissez".
Cette fois ci, la résolution se fera à la manière de la question 4, mais
le nombre de solutions est limité par le fait que le second argument de kefaije,
qui doit être contenu dans "subissent", doit apparaitre
comme 3e argument du prédicat fin: la seule possibilité est
donc "issent". Il en résulte que notre
requête a deux solutions:
X = "subir", Y = "ils".
X = "subir", Y = "elles".
En reprenant le même raisonnement que dans la question 6, on obtient ici 4
solutions:
Y = "nous", Z = "aimons".
Y = "vous", Z = "aimez".
Y = "elles", Z = "aiment".
Y = "ils", Z = "aiment".
La réponse à cette question est calquée sur le principe de la question 7.
La solution est donc:
X = "aimer", Y = "nous".
Ici, bien sûr, apparait le problème que "subissez" sera trouvé à la fois comme
conjugaison de "subir" et de "subisser". les solutions sont, en effet:
X = "subir", Y = "vous".
X = "subisser", Y = "vous".
Pour trancher entre ces deux solutions, le critère est que seule la fin la plus longue doit être retenue. Deux points sont à traiter pour atteindre ce but:
On obtient alors le programme suivant: ...(à compléter)...