Prolog - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Règles

Le second type d’instructions en Prolog est la règle. Un exemple de règle est :

      lumière(on):- interrupteur(on).      

Le « :- » signifie « si »; cette règle indique lumière(on) est vraie si interrupteur(on) est vrai. Les règles peuvent aussi utiliser des variables comme :

      père(X,Y):- parent(X,Y), mâle(X).      

Ce qui signifie « si quelqu’un est le parent de quelqu’un d'autre et que c'est un mâle, il en est donc le père ». L’antécédent et conséquent sont dans l’ordre inverse (En mathématiques, l'inverse d'un élément x d'un ensemble muni d'une loi de...) de ce que l’on trouve normalement en logique (La logique (du grec logikê, dérivé de logos (λόγος),...). Il est possible de placer des prédicats multiples et en conséquence, groupé avec une conjonction « et », par exemple :

      a, b, c:- d.      

qui est simplement l’équivalent de trois règles séparées, cependant les trois règles séparées ne sont pas l'équivalent de (a et b et c) si d, puisqu'il s'agit d'un « ou » inclusif :

      a:- d.      b:- d.      c:- d.      

Les règles de ce type ne sont par contre pas autorisées :

      a;b:- c.      

qui signifie « si c alors a ou b ». Ce n'est en effet pas une clause de Horn.

On notera qu'un fait est un cas particulier de règle. En effet les deux lignes suivantes sont équivalentes :

      a.      a:- true.      

Prédicats

La programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent...) en Prolog (Prolog est l’un des principaux langages de programmation logique inventé à...) est très différente (En mathématiques, la différente est définie en théorie algébrique des...) de la programmation dans un langage impératif. En Prolog, on alimente une base de connaissances de faits et de règles ; il est alors possible de faire des requêtes à la base de connaissances. L’unité de base de Prolog est le prédicat (Les prédicats d’une théorie sont les formules qui contiennent des variables libres.), qui est défini comme étant vrai. Un prédicat consiste en une tête et un nombre (La notion de nombre en linguistique est traitée à l’article « Nombre...) d’arguments. Par exemple :

      chat(tom).      

Ici 'chat (Le chat domestique (Felis silvestris catus) est un mammifère carnivore de la famille des...)' est la tête, et 'tom' est l’argument. Voici quelques demandes simples que vous pouvez demander à un interpréteur (En informatique, un interprète (parfois appelé, à tort, « interpréteur » par mauvaise...) Prolog basé sur ce fait :

      ?- chat(tom).           oui.      
      ?- chat(X).           X = tom;           fail.      

Dans ce second exemple, à la question 'chat(X)' l'interpréteur propose la réponse 'X = tom' unifiant la variable (En mathématiques et en logique, une variable est représentée par un symbole. Elle...) 'X' à l'atome (Un atome (grec ancien ἄτομος [atomos], « que...) 'tom'. Dans la terminologie Prolog il s'agit d'un succès. Après cette première réponse, l'utilisateur peut demander s'il y a d'autres réponses en utilisant le ";" (symbole de la disjonction), ici l'interpréteur répond qu'il n'en trouve pas. Cette recherche (La recherche scientifique désigne en premier lieu l’ensemble des actions entreprises en vue...) d'autres solutions repose sur un modèle d'exécution non-deterministe (au sens (SENS (Strategies for Engineered Negligible Senescence) est un projet scientifique qui a pour but...) du non-déterminisme des automates non-déterministes) avec retour sur les différents points de choix et exploration (L'exploration est le fait de chercher avec l'intention de découvrir quelque chose d'inconnu.) des alternatives (Alternatives (titre original : Destiny Three Times) est un roman de Fritz Leiber publié...) non explorées.

      ?- chat(vim).           fail.      

Dans ce dernier exemple, à la question 'chat(vim)' l'interpréteur répond qu'il ne peut pas prouver ce fait, dans la terminologie Prolog il s'agit d'un échec. Dans une certaine mesure (par exemple en faisant l'hypothèse que tous les faits sont connus, i.e. hypothèse du monde (Le mot monde peut désigner :) clos), cela signifie que 'vim (Vim est un éditeur de texte, c’est-à-dire un logiciel permettant la manipulation...)' n'est pas un chat.

Les prédicats sont en général définis pour exprimer les faits que le programme connaît à propos du monde. Dans la plupart des cas, l’usage de prédicats requiert une certaine convention. Par exemple, la sémantique des deux prédicats suivants n'est pas immédiate :

      pere(marie, pierre).      pere(pierre, marie).      

Dans les deux cas, 'père' est la tête tandis que 'marie' et 'pierre' sont les arguments. Cependant, dans le premier cas, Marie vient en premier dans la liste des arguments, et dans le second c’est Pierre (l’ordre dans la liste des arguments importe). Le premier cas est un exemple d’une définition (Une définition est un discours qui dit ce qu'est une chose ou ce que signifie un nom. D'où la...) dans l’ordre verbe-objet-sujet et pourrait se lire avec l'auxiliaire 'avoir' : Marie a pour père Pierre, et le second de verbe-sujet-objet et pourrait se lire ave l'auxiliarire 'être' : Pierre est le père de Marie. Comme Prolog ne comprend pas le langage naturel (Un langage naturel est une langue « normale » parlée par un être humain.), les deux versions sont correctes en ce qui le concerne ; cependant il est important d'adopter des normes de programmation cohérentes pour un même programme. En général, c'est plutôt l'auxiliaire 'être' qui est utilisé.

Quelques prédicats sont bâtis dans le langage et permettent à un programme Prolog de faire des activités de routine (comme de l'évaluation numérique (Une information numérique (en anglais « digital ») est une information...), les entrée/sortie, les fonctionnalités de l'interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface...) graphique et généralement communiquer avec le système de l’ordinateur). Par exemple, le prédicat write peut être utilisé pour l’affichage à l’écran. Donc

      write('Bonjour').      

présentera le mot 'Bonjour' sur le moniteur. De tels prédicats ne relèvent pas à proprement parler de la programmation logique (La programmation logique est une forme de programmation qui définit les applications à l'aide...), leur fonctionnalité reposant exclusivement sur leurs effets de bords.

D'autres prédicats bâtis dans le langage sont de nature logique, et inclus dans des bibliothèques. Ils servent (Servent est la contraction du mot serveur et client.) à simplifier le développement en encapsulant des traitements génériques, comme des algorithmes de traitement de listes par exemple.

D'autres prédicats, enfin, sont d'ordre supérieur et servent à contrôler l'exécution des interprètes Prolog (par exemple, ajout/retrait dynamique (Le mot dynamique est souvent employé désigner ou qualifier ce qui est relatif au mouvement. Il...) de règles et faits, abandon de points de choix, récolte des résultats d'une requête (Le mot requête, synonyme de demande, est employé dans les domaines suivants :), ...)

Sans les prédicats prédéfinis, Prolog est parfois appelé Pure Prolog (selon le standard iso en anglais : definite Prolog).

Page générée en 0.086 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique