Cours Prolog prise en main

Requêtes

Lorsque vous vous trouvez face à l’invite de Prolog, vous pouvez lui poser des questions. Dans la terminologie Prolog, on les appelle des requêtes.
Entrez
?− woman ( nelly ) .
Si tout va bien, Prolog devrait vous répondre
true .
et revenir à l’invite de commandes.
En cas de problème, vérifier que vous avez bien recopié la base de faits et la requête. Vérifiez en particulier
1. Que vous n’avez pour l’instant utilisé aucune majuscule.
2. Que tout vos faits et votre requête se terminent par un point.
Testez de la même manière les autres faits de votre base.
Essayez maintenant la requête
?− woman ( laura ) .
Que répond Prolog ?
Vous constatez donc que Prolog considère que tout ce qu’il ne peut pas déduire de la base de faits est faux (même si à nos yeux cela semble vrai !). En particulier, il ne répondra jamais “I don’t know”.
Essayez encore distribué sous licence creative common | détails sur www.matthieuamiguet.ch
?− cat ( mistigri ) .
La situation est donc différente si on se trouve face à une “propriété” connue mais dont on ne sait pas si elle est vraie ou face à une “propriété” inconnue. Relevons au passage que les “propriétés” définies dans la base de fait s’appellent des prédicats.
Vous pouvez maintenant quitter Prolog :
?− halt .

Variables

Jusqu’à maintenant, vous n’êtes probablement pas très impressionnés par la puissance de Prolog.
Pour obtenir des choses plus intéressantes, nous allons introduire les variables.
Relancez Prolog en ouvrant votre fichier base1.pl.
À l’invite de commandes, tapez
?− man ( X ) .
Prolog vous répond
X = john.
et revient à l’invite de commande. Ce passionnant dialogue p ourrait se lire
– Connais-tu un X qui soit un homme ?
– Oui, John !
Ou plus précisément :
– “Connais-tu une valeur de X pour laquelle on peut prouver l’ affirmation homme(X) ?”
– “Oui, cela marche avec X=John.”
Bon, jusque là, rien de bien passionnant. Essayons maintena nt
?− woman ( X ) .
Prolog vous répond
X = frida
et ne revient pas immédiatementà l’invite. Tapez un espace, Prolog affiche X = nelly. et revient cette fois-ci à l’invite de commandes.
Que s’est-il passé ?
1. Prolog a identifié X comme étant une variable. Ceci n’est pas dû à son nom, mais au fait que l’identificateur commence par une majuscule. On aurait tout aus si bien pu entrer Var, HELLO. . .
ou Mary3 ! Une autre possibilité pour les noms de variables est de commencer par un soulignement : _var, _Toto, . . . (_ tout seul ayant une signification particulière.)
2. Il a cherché une affectation de la variableX permettant de vérifier l’affirmation woman(X).
3. En ayant trouvé une, il l’affiche. . .
4. . . . mais comme il a constaté qu’il pourrait y avoir d’autres possibilités, il attend votre avis (notez l’absence de point après cette première réponse !). Si cette information vous uffit,s tapez enter (ou a, ou c) et Prolog arrêtera sa recherche.
5. Si vous voulez voir les alternatives restantes, tapez ; (ou n, r, barre d’espacement ou tabulation) et Prolog continuera sa recherche. Retour au point 2 jusqu’à ce qu’il n’y ait plus d’autre solution. . .
3 Et on comprend maintenant pourquoi il ne faillait pas mettre de majuscule aux noms propres !
Essayez maintenant, sur la base de ce que nous avons vu, de répondre aux questions suivantes :
1. De qui John est-il amoureux ?
2. Qui est amoureux de Donald ?

Conjonction

Nous nous sommes pour l’instant limités à satisfaire un seul but à la fois, mais on peut aussi tenter de les combiner : si l’on entre plusieurs buts séparés par des virgules, Prolog essaiera de tous les satisfaire simultanément. Ainsi, ?− woman ( X ) , loves ( john , X ) .
nous donne bien le X = frida ; que nous espérions, et ?− woman ( X ) , man ( X ).
nous donne heureusement No.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *