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 composition interne · notée multiplicativement, est un élément y tel que x·y = y·x = 1, si 1 désigne...) de ce que l’on trouve normalement en logique (La logique (du grec logikê, dérivé de logos (λόγος), terme inventé par Xénocrate signifiant à la fois...). 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 l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).) en Prolog (Prolog est l’un des principaux langages de programmation logique inventé à l'I.N.S.E.A.. Le nom Prolog est un acronyme de PROgrammation LOGique. Il a été créé par Alain Colmerauer et Philippe...) est très différente (En mathématiques, la différente est définie en théorie algébrique des nombres pour mesurer l'éventuel défaut de dualité d'une application définie à l'aide de la trace, dans l'anneau des entiers d'un...) 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 grammatical ».) d’arguments. Par exemple :

      chat(tom).      

Ici 'chat (Le chat domestique (Felis silvestris catus) est un mammifère carnivore de la famille des félidés. Il est l’un des principaux animaux de compagnie et compte aujourd’hui une...)' 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 traduction de l'anglais) est un outil ayant pour tâche d'analyser, de traduire et d'exécuter un programme écrit dans un langage...) 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 est utilisée pour marquer un rôle dans une formule,...) 'X' à l'atome (Un atome (grec ancien ἄτομος [atomos], « que l'on ne peut diviser ») est la plus petite partie d'un corps simple pouvant se combiner...) '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 de produire et de développer les connaissances scientifiques. Par extension...) 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 l'extension radicale de l'espérance de vie humaine. Par une évolution progressive allant du ralentissement du vieillissement, suivi de...) 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é en 1945.) 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 de fichiers texte. Il est directement inspiré de vi (un éditeur très répandu sur les systèmes...)' 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 division entre les définitions réelles et les définitions nominales.) 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 ayant été quantifiée et échantillonnée, par opposition à une information dite « analogique » qui est...), 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 désigne ainsi ce que chaque élément a besoin de connaître de...) 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 d'un ensemble de faits élémentaires les concernant et de règles de logique leur associant des conséquences plus ou moins directes. Ces faits...), 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 peut être employé comme :) 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.158 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