Station MinuitExplorer, comprendre, pratiquer

RAISONNEMENT — Raisonner et résoudreAutomne 2026

Semaine 8 — Consolider recherche, unification, Minimax et Prolog

7. Le vol des biscuits : du récit aux preuves

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

7. Le vol des biscuits : du récit aux preuves

7.1. Situation, faits et objectif

Nathalie a placé des biscuits dans un placard fermé à clé; ils ont disparu et la porte a été retrouvée forcée. Il faut construire un programme qui trouve les personnes suspectes, en autorisant plusieurs suspects et plusieurs façons de soupçonner la même personne.

Tableau 1 — Personnage ou indice · Information utilisée dans le modèle fourni
Personnage ou indice Information utilisée dans le modèle fourni
Nathalie Possède directement les clés
Simon Frère de Nathalie, suit un régime, blessé à la main
Gaëtan Oncle de Nathalie, miettes sur son bureau
Kévin Peu d’argent, possède des canaris
Canaris Animal à nourrir
John Beaucoup d’argent; récit le décrivant aussi grand et mince
Isabelle Aime cuisiner
Famille de Nathalie Possède les clés

La taille et la minceur de John ainsi que la porte retrouvée forcée appartiennent au récit; le programme fourni n’en fait pas des faits distincts exploités par ses règles. Il contient argent(john,beaucoup), mais aucune règle ne permet d’en déduire un besoin de biscuits. Ne pas inventer une fonction à chaque détail descriptif.

7.2. Les onze hypothèses du récit

Les hypothèses constituent le modèle de l’énigme; ce ne sont pas des vérités générales sur les personnes.

  1. Pour être suspect du vol, il faut avoir besoin des biscuits et pouvoir y accéder.
  2. Le besoin peut venir de la gourmandise ou du souhait de donner les biscuits.
  3. L’accès peut provenir des clés, de l’effraction ou de la corruption d’une personne ayant les clés.
  4. Une blessure peut être un indice d’effraction par contact avec le bois.
  5. Une personne ayant besoin des biscuits peut aussi être corrompue, même sans clés.
  6. Devoir nourrir quelqu’un et manquer d’argent peut motiver le don de biscuits.
  7. L’embonpoint ou le goût de cuisiner peuvent servir d’indices de gourmandise.
  8. Des miettes permettent de soupçonner une consommation de biscuits.
  9. Une personne corrompue est supposée en avoir mangé.
  10. Posséder un animal implique de devoir le nourrir dans ce modèle.
  11. Suivre un régime est utilisé comme indice d’embonpoint.

Les termes « indice », « peut » et « probablement » sont essentiels pour comprendre la portée du récit. Le fichier Prolog les transforme en règles déterministes afin de rechercher des suspects. Cette transformation produit des conséquences dans un modèle choisi; elle ne démontre pas la culpabilité d’une personne réelle.

7.3. Organisation des règles du programme

Le fichier volBiscuits.pl [accès au cours requis] est conservé tel que fourni. Les extraits ci-dessous en explicitent l’organisation, avec des noms de variables raccourcis pour la lecture.

Famille et clés. La relation de famille accepte frère ou oncle dans les deux sens :

Code (prolog) · sélectionner pour copier

famille(A,B) :- frere(A,B); frere(B,A); oncle(A,B); oncle(B,A).
possede(P,cles) :- famille(P,nathalie).

Avec les faits de frère et d’oncle, Simon et Gaëtan obtiennent les clés. Nathalie les a par un fait direct. La définition symétrise les deux relations fournies; elle ne calcule ni tous les liens de parenté possibles ni une fermeture transitive.

Soupçon et besoin. Le point d’entrée exige les deux conditions pour la même personne :

Code (prolog) · sélectionner pour copier

voler(S,biscuits) :- besoin(S,biscuits), acces(S,biscuits).
besoin(P,biscuits) :- gourmand(P); donner(P,Autre,biscuits).
gourmand(P) :- embonpoint(P); aime(P,cuisiner).
embonpoint(P) :- regime(P).
donner(D,R,biscuits) :- nourrir(D,R), argent(D,peu).
nourrir(P,A) :- possede(P,A), animal(A).

La virgule représente une conjonction et le point-virgule une alternative. Simon a besoin par la chaîne régime→embonpoint→gourmandise. Isabelle a besoin par son goût de cuisiner. Kévin a besoin parce qu’il possède un animal à nourrir et a peu d’argent. Posséder des clés seul ne crée pas un besoin.

Accès. Le programme admet les clés, l’effraction ou une corruption :

Code (prolog) · sélectionner pour copier

acces(P,biscuits) :-
    possede(P,cles);
    forcer(P,placard);
    soudoyer(P,S), (possede(S,cles); besoin(S,biscuits)).
forcer(P,placard) :- blesse(P,Endroit).
mange(P,biscuits) :- miettes(P,Endroit).
soudoyer(P,S) :- mange(S,biscuits).

La dernière branche exige à la fois la relation soudoyer(P,S) et, pour cette même S, des clés ou un besoin. Les parenthèses regroupent ces deux qualités possibles; les supprimer peut changer la portée des alternatives. La blessure à la main de Simon satisfait la règle d’effraction, qui ne filtre pas spécifiquement le lieu de la blessure. Les miettes du bureau font dériver que Gaëtan a mangé.

7.4. Réponses et multiplicité des preuves

La requête proposée par le fichier est :

Code (prolog) · sélectionner pour copier

?- voler(S,biscuits).

Le commentaire final du programme annonce Simon trois fois, puis Isabelle et Kévin, puis false. Le déroulement statique explique ces réponses :

Tableau 2 — Suspect · Preuve du besoin · Preuve de l’accès
Suspect Preuve du besoin Preuve de l’accès
Simon, preuve 1 Régime → embonpoint → gourmandise Clés par sa relation de frère avec Nathalie
Simon, preuve 2 Même besoin Blessure → effraction possible
Simon, preuve 3 Même besoin Corruption de Gaëtan, qui a mangé et possède les clés
Isabelle Cuisine → gourmandise Corruption de Gaëtan
Kévin Canaris à nourrir et peu d’argent → don Corruption de Gaëtan

L’ensemble des personnes suspectes est {Simon, Isabelle, Kévin}. Les trois occurrences de Simon correspondent à trois preuves de la conjonction besoin/accès, pas à trois personnes et pas à un niveau chiffré de confiance.

Gaëtan a les clés et a mangé, mais aucune règle ne lui donne un besoin de biscuits; il ne satisfait donc pas la conjonction principale. Nathalie n’a pas de besoin dérivé non plus. John n’en a pas avec les faits et règles fournis. L’absence de preuve dans cette base ne constitue pas une démonstration générale d’innocence.

Le false final indique que la recherche n’a plus de preuve supplémentaire à fournir; il n’annule pas les réponses précédentes. L’ordre d’énumération annoncé dépend de l’ordre des clauses et des buts du fichier. La tâche actuelle a contrôlé cette trace par lecture et déroulement statique, sans exécuter le programme.

7.5. Limites instructives du modèle

La règle soudoyer(P,S) :- mange(S,biscuits). ne contraint pas P : aucune richesse, dépense ou rencontre n’est requise. Une fois que Gaëtan satisfait mange, toute personne candidate peut être reliée à lui par ce prédicat. C’est pourquoi Isabelle et Kévin peuvent accéder aux biscuits dans le programme, même sans clés ni blessure. Ajouter spontanément une obligation d’argent pour corrompre modifierait les résultats de la source.

Ce cas est à rapprocher de la correction populaire(X) :- connait(Z,Y) : un argument sans lien dans le corps devient très général. Ici, on décrit et explique le comportement du programme officiel; on ne suppose pas une condition cachée pour rendre le récit plus réaliste.

Plusieurs règles exploitent un indice dans le sens utile à l’enquête : blessure→effraction, miettes→consommation, consommation→corruption possible. Ces directions ne sont pas des équivalences logiques démontrées par le récit. L’énigme les utilise comme hypothèses de soupçon. Les termes décrivant le régime, l’embonpoint ou la gourmandise restent des conventions de ce problème.

Des variables employées une seule fois, comme Autre, Endroit et le premier argument de soudoyer, peuvent provoquer des avertissements d’interpréteur. Un avertissement n’invalide pas automatiquement le programme, mais invite à vérifier si cette absence de contrainte est voulue. Le fichier original est conservé sans correction et sa généralité est explicitée plutôt que masquée.

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.