Station MinuitExplorer, comprendre, pratiquer

RAISONNEMENT — Raisonner et résoudreAutomne 2026

Semaine 8 — Consolider recherche, unification, Minimax et Prolog

6. Requêtes Prolog et sens des règles

LECTURE 08 / 126 repèresCouverture déclarée complète

6. Requêtes Prolog et sens des règles

6.1. Base de connaissances et variables partagées

Dans l’exercice, possede(P,V,C) signifie que P possède un véhicule de type V et de couleur C. Les faits sont :

Code (prolog) · sélectionner pour copier

possede(julie, auto, rouge).
possede(jean, auto, rouge).
possede(jean, auto, verte).
possede(marc, auto, rouge).
possede(jean, bicycle, bleu).
possede(nathalie, auto, noire).
possede(julie, bicycle, blanc).

L’énoncé ajoute qu’un propriétaire ne peut avoir plus d’un véhicule d’une même couleur. Cette hypothèse compte pour distinguer deux autos. Une conjonction partage une identité uniquement quand on réemploie la même variable : chaque variable anonyme _ est indépendante.

6.2. Propriétaire commun et véhicules distincts

Pour trouver la personne qui possède une auto rouge et un bicycle bleu :

Code (prolog) · sélectionner pour copier

?- possede(X, auto, rouge), possede(X, bicycle, bleu).

X doit satisfaire les deux buts. Julie et Marc ont une auto rouge, mais pas un bicycle bleu dans cette base; Jean est la réponse.

Pour demander si Nathalie a deux autos :

Code (prolog) · sélectionner pour copier

?- possede(nathalie, auto, C1),
   possede(nathalie, auto, C2),
   not(C1=C2).

Les deux premiers buts, seuls, peuvent réussir en utilisant deux fois le même fait. Ils ne prouvent donc pas deux véhicules distincts. La condition finale exige des couleurs différentes; elle suffit ici grâce à l’hypothèse d’unicité par couleur. Dans une base sans cette hypothèse, il faudrait une représentation permettant de distinguer les véhicules eux-mêmes.

Avec les faits donnés, les deux couleurs de Nathalie ne peuvent être que noire; le test échoue. Les couleurs sont instanciées par les deux premiers buts avant le test not(C1=C2). Déplacer une négation avant la recherche des valeurs change le comportement opérationnel attendu; on conserve l’ordre du corrigé.

6.3. Couleur commune sans propriétaire commun

Pour demander s’il existe une auto et un bicycle de même couleur :

Code (prolog) · sélectionner pour copier

?- possede(_, auto, C), possede(_, bicycle, C).

Le lien voulu porte sur C, pas sur le propriétaire. Les deux _ peuvent désigner des personnes différentes. Remplacer ces deux occurrences par le même X ajouterait une contrainte non demandée.

La requête échoue dans cette base : les autos sont rouges, verte ou noire; les bicycles sont bleu ou blanc. Le modèle utilise les atomes exactement tels qu’ils sont écrits; leur forme linguistique ne les rend pas égaux. Ces résultats sont obtenus ici par déroulement des faits, sans exécution d’un interpréteur.

6.4. Syntaxe et réutilisation de prédicats

La clarification sur SWISH distingue l’invite ?-, souvent déjà affichée par l’outil, du point terminal, qui appartient à la syntaxe et reste obligatoire. On peut omettre le préfixe fourni par l’interface; cela ne permet pas d’omettre le point final.

Une autre clarification autorise à réutiliser un prédicat déjà défini. Par exemple, avec parent(P,E) pour le parent P d’un enfant E et un prédicat soeur_frere adéquat :

Code (prolog) · sélectionner pour copier

tante_oncle(X,Y) :- soeur_frere(X,P), parent(P,Y).

P relie X au parent de Y. On peut utiliser cette composition ou écrire une autre formulation correcte, puis tester sa solution même si elle diffère du corrigé. À l’examen, une restriction doit être indiquée dans la question; l’existence d’un corrigé n’impose pas sa seule forme. Cette permission ne dispense pas de vérifier la bonne direction des arguments.

6.5. Correction officielle : relier les variables et orienter l’implication

La discussion Question 10 Quiz 2 corrige deux erreurs et explique une limite de la correction automatique.

Première erreur :

Code (prolog) · sélectionner pour copier

populaire(X) :- connait(Z,Y).

Cette règle ne dit pas que toute personne connaissant quelqu’un est populaire. X, la personne conclue populaire, est indépendant de Z, la personne qui connaît Y. Dès qu’un couple satisfait connait(Z,Y), le corps peut réussir sans restreindre X. Pour relier la condition à la bonne personne, la formulation voulue est :

Code (prolog) · sélectionner pour copier

populaire(X) :- connait(X,Y).

X est désormais commun à la conclusion et à la condition. Y désigne la personne connue; sa présence seulement dans le corps n’est pas, à elle seule, une erreur. Le défaut initial est l’absence du lien nécessaire sur X.

Deuxième erreur :

Code (prolog) · sélectionner pour copier

populaire(X) :- heureux(X).

Cette règle conclut la popularité à partir du bonheur. Pour traduire « les personnes populaires sont heureuses », il faut écrire :

Code (prolog) · sélectionner pour copier

heureux(X) :- populaire(X).

Dans Conclusion :- Condition., le corps à droite fournit la condition suffisante et la tête à gauche la conclusion. Une phrase « si A alors B » devient donc une règle de tête B et de corps A; inverser ces places change l’énoncé.

L’enseignante reconnaît une erreur dans le questionnaire et indique avoir ajusté les points, tout en précisant qu’elle ne peut pas changer les réponses automatiques affichées. Une indication automatique contradictoire ne doit donc pas être apprise comme une règle correcte. L’explication du forum fournit la correction conceptuelle. Le total de points de l’utilisateur n’a pas été inspecté et aucun ajustement individuel n’est attesté ici.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du thème. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.