Prolog

Pour pratiquer : http://swish.swi-prolog.org/

Notions de bases

  • constante, variable, prédicat

  • fait :

    homme(pac).
    matiere(ia).
    enseigne(pac, ia).
    enseigne(pac, algo).
    titre(ia, "Introduction à l'IA").
    titre(algo, "Algorithmique").
    
  • requête :

    ?- matiere(X)
    ?- enseigne(X, algo)
    ?- enseigne(pac, Y), titre(Y, Z)
    
  • règle :

    matiere(X) :- enseigne(_Y, X) .
    
  • exemples plus sophistiqué :

Arbre généalogique

  1. En utilisant exclusivement deux prédicats unaires homme et femme, et un prédicat binaire parent, représentez l’arbre généalogique des Simpsons, d’après la figure ci-dessous.

Pour démarrer:

homme(bart).
homme(homer).
femme(marge).
parent(bart,homer).
parent(bart,marge).

Avertissement

N’utilisez pas de majuscule pour les noms propres, Prolog les considérerait comme des variables…

  1. Ajoutez ensuite des règles permettant de déduire d’autres prédicats (tels que père, frèreOuSoeur…), afin d’arriver à déduire : cousin(ling, bart).

Pour démarrer:

père(X,Y) :- parent(X,Y), homme(Y).
  1. Ajoutez enfin des règles permettant de déduire un prédicat binaire ancêtre. Par exemple, pour bart, les faits suivants doivent être déduits :

    ancêtre(bart, homer).
    ancêtre(bart, marge).
    ancêtre(bart, abraham).
    ancêtre(bart, mona).
    ancêtre(bart, clancy).
    ancêtre(bart, jackie).
    
../_images/simpsons.jpg

L’arbre généalogique des Simpsons