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éversibilité

Une particularité de Prolog est de ne pas donner de statut aux paramètres d'un prédicat, ce ne sont pas des paramètres 'donnés' ou 'résultats', ou même 'donnés/résultats', leur statut est indifférent et sera définis en fonction des requêtes utilisées.

Ceci permet, parfois, la 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...) de prédicats réversibles, c'est-à-dire dont les appels standards, permettant d'obtenir des résultats à partir de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.), peuvent être inversés pour chercher les données initiales menant à certains résultats (alors ce qui est donné, ce sont les résultats, et ce qui est obtenu (les résultats) ce sont les données initiales recherchées).

Exemples

Symétrique d'un arbre (Un arbre est une plante terrestre capable de se développer par elle-même en hauteur, en général au delà de sept mètres. Les arbres acquièrent...) binaire

Prenons des arbres binaires avec comme nœud f et comme feuille (La feuille est l'organe spécialisé dans la photosynthèse chez les végétaux supérieurs. Elle est insérée sur les tiges des...) 0 ou 1.

       symetrique(0,0).       symetrique(1,1).       symetrique(f(A,B),f(Y,X)):-symetrique(A,X), symetrique(B,Y).      

L'utilisation standard de ce prédicat (Les prédicats d’une théorie sont les formules qui contiennent des variables libres.) est du type :

       ?- symetrique(f(f(0,1),1),R).         R = f(1,f(1,0))      

Mais l'on peut aussi avoir :

       ?- symetrique(A,f(f(0,1),1)).         A = f(1,f(1,0))      

Grammaire générative

Lorsqu'on fait de la grammaire générative avec 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...), le but est de ne pouvoir générer que des phrases grammaticalement correctes ; on peut aussi rajouter des foncteurs pour que Prolog nous donne des arbres représentant la structure des phrases.

EDITEUR :

      domains        liste=string*            predicates        s(liste,liste)        sn(liste,liste)        sv(liste,liste)            clauses /*grammaire*/        s(L0,L):-sn(L0,L1),sv(L1,L).            /*lexique*/      sn([je|U],U).      sv([mange|U],U).      sv([viens|U],U).      

DIALOGUE :

        Goal:s([je,viens],[])        Yes              Goal:s([je,mange],[])        Yes              Goal:s([viens,mange],[])        No      


EDITEUR :

      domains        liste=string*        expr= fs(string,string)      predicates        s(liste,liste,expr)        sn(liste,liste,string)        sv(liste,liste,string)            clauses /*grammaire*/        s(L0,L,fs(A,B)):-sn(L0,L1,A),sv(L1,L,B).            /*lexique*/      sn([je|U],U,je).      sv([mange|U],U,mange).      sv([viens|U],U,viens).      

DIALOGUE :

        Goal:s([je,viens],[],R)        R=fs("je","viens")        1 Solution              Goal:s([je,mange],[],R)        R=fs("je","mange")        1 Solution              Goal:s([viens,mange],[],R)        No Solution      

Et après ?

Prolog et 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...) a donné naissance à un courant de 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,...) reprenant la plupart des spécificités de Prolog et les apports de la programmation par contrainte pour aboutir à la programmation logique (La logique (du grec logikê, dérivé de logos (λόγος), terme inventé par Xénocrate signifiant à la fois raison, langage, et raisonnement) est dans une...) par contrainte (PLC).

Autres pistes :

  • vers les bases de données (?).
  • avec du parallélisme (?).

Particularités de Prolog

Comme langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par une...), Prolog se distingue par :

  • le non-déterminisme, pour la résolution de problèmes ouverts : le 'ou' utilisé en Prolog est un vrai 'ou' logique qui permet l'exploration (L'exploration est le fait de chercher avec l'intention de découvrir quelque chose d'inconnu.) de l'ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut être comprise comme un...) des possibles.
  • la réversibilité (cf. plus haut)
  • la gestion des requêtes sous-contraintes/sur-contraintes : l'absence de statut pour les paramètres d'un prédicat (cf. réversibilité) et le modèle d'exécution employé permet, d'un coté, l'emploi de requêtes sous-contraintes exposant (Exposant peut signifier:) l'ensemble des possibles, et de l'autre coté, l'emploi de requêtes sur-contraintes permettant la vérification de propriétés particulières sur les solutions exhibées ou le filtrage de ces solutions.

Bibliographie

  • Jean-Paul Delahaye (Jean-Paul Delahaye est un informaticien et mathématicien français.), Cours de Prolog avec Turbo Prolog, Eyrolles, 1988 - id : 9782212081916.
  • Jacky Legrand, Le langage Prolog - Exemples en Turbo Prolog, Technip (Technip est le premier groupe parapétrolier français et quatrième groupe mondial du management de projets, de l’ingénierie et de la construction pour l’industrie du pétrole et du...), 1992 - .
  • Patrick Blackburn, Johan Bos, Kristina Streignitz, PROLOG tout de suite, College Publications, 7 août 2007.
Page générée en 0.054 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