Station MinuitPortail personnel de révision

IFT-2003 — Intelligence artificielle IAutomne 2026

Semaine 6 — Logique et raisonnement (2/3)

7. Travailler dans Swish et diagnostiquer les réponses

LECTURE 08 / 135 repèresSynthèse avec omissions acceptées

7. Travailler dans Swish et diagnostiquer les réponses

7.1 Moteur et plateforme

SWI-Prolog est le moteur recommandé par le cours, avec sa documentation, ses modules et sa communauté : https://www.swi-prolog.org/. Swish est la plateforme web utilisée : https://swish.swi-prolog.org/. L’installation locale est facultative; la plateforme suffit aux bases travaillées cette semaine.

Pour une installation locale, le programme doit être chargé en mémoire de travail avant de résoudre les buts. Les dialectes Prolog peuvent différer : utiliser la version choisie dans le cours facilite la concordance des exemples. Dans la transcription automatique, « Prologue », « Switch » et une adresse web mal reconnue doivent être corrigés à l’aide des noms et des liens officiels.

7.2 Programme, but et résultats

L’interface de l’enregistrement comporte :

  1. l’éditeur du programme à gauche, créé avec Program, contenant faits et règles;
  2. la zone de requête à droite en bas, où saisir le but terminé par un point;
  3. la zone des résultats à droite au-dessus.

Run lance la recherche. Les exemples et l’aide sont accessibles par les menus. Un compte peut être créé pour sauvegarder des programmes, mais cette possibilité est facultative dans la démonstration. Les zones peuvent être agrandies pour voir les essais plus facilement. L’objectif reste de comprendre la logique appliquée, plutôt que maîtriser tous les menus.

Les indications décrivent l’interface montrée dans le matériel officiel. Aucune création de compte ou sauvegarde externe n’a été effectuée pendant la préparation de ce document.

7.3 Demander les autres réponses

Next demande une autre preuve. Stop interrompt la recherche. History permet de reprendre une requête précédente; les requêtes affichées peuvent être retirées de l’interface.

La démonstration utilise notamment :

Tableau 1 — Requête, convention enfant→parent · Résultats ou rôle
Requête, convention enfant→parent Résultats ou rôle
parent(nathalie,W). W=anne, puis W=jimmy avec Next
parent(X,U). Énumère les paires de faits; première paire X=jean, U=sylvain; la démonstration interrompt ensuite la liste
grandparent(jean,X). X=anne, puis X=jimmy
soeur_frere(nathalie,W). Permet d’analyser les personnes admises et les preuves répétées

L’interface peut montrer U avant X alors que X est le premier argument : lire le nom de la variable associé à sa valeur, pas seulement l’ordre d’affichage. Dans une console locale classique, ; demande la réponse suivante.

La vidéo explicative simplifie l’affichage web en parlant de toutes les réponses. La démonstration montre la recherche pilotée avec Next et Stop : une première réponse ou un arrêt volontaire ne constitue pas l’énumération complète.

7.4 Nathalie : distinguer deux problèmes et les corriger

Avec la règle initiale de §6.5, soeur_frere(nathalie,W) donne :

Code (text) · sélectionner pour copier

julie, nathalie, luc, julie, nathalie, luc

Pourquoi Nathalie apparaît-elle? Le premier sous-but choisit parent(nathalie,anne). Le second parent(W,anne) peut choisir à son tour parent(nathalie,anne). Rien n’impose que les personnes soient distinctes. Le programme initial démontre donc une relation de parent commun qui admet aussi l’identité.

Pourquoi les valeurs sont-elles répétées? Après les trois réponses par Anne, la recherche choisit Jimmy comme parent commun et retrouve les trois mêmes personnes. Deux preuves différentes peuvent fournir la même valeur de W. Le moteur n’assimile pas automatiquement l’ensemble des preuves à un ensemble de valeurs uniques.

L’enseignante ajoute la condition à la fin du corps :

Code (prolog) · sélectionner pour copier

soeur_frere(X,Z) :- parent(X,Y), parent(Z,Y), not(X=Z).

Après relance, les valeurs sont :

Code (text) · sélectionner pour copier

julie, luc, julie, luc

Nathalie est exclue; les doublons restent parce que les deux parents restent deux témoins de preuve. Exclusion de soi et déduplication sont deux problèmes distincts. La vidéo précise que le premier programme a été gardé simple pour permettre ce diagnostic. Les dessins ne montrant que Julie et Luc ne représentent pas tous les résultats du programme initial.

not(X=Z) teste l’échec de l’unification entre les deux personnes. Ici, parent/2 a déjà instancié les personnes, donc le test rejette l’identité. Placé avant ces appels sur deux variables libres, X=Z réussirait et sa négation échouerait. Ce test procédural n’est pas une contrainte abstraite de différence ni la négation logique classique.

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 cours. 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.