SlideShare une entreprise Scribd logo
1  sur  8
Bruno Delb                           http://www.brunodelb.com                       Date : 27/12/1998

                                              Le langage Prolog



                                                Sommaire

INTRODUCTION..........................................................................................................2

COMMENT EST STRUCTURÉ UN PROGRAMME ?...........................................................3
  QUELLE EST LA STRUCTURE GÉNÉRALE D’UN PROGRAMME ?...........................................................3
  QU’EST-CE QU’UN PRÉDICAT ?............................................................................................3
  QU’EST-CE QU’UN TERME ?................................................................................................3
  QU’EST-CE QUE LE REGROUPEMENT EN PAQUET ?......................................................................3
COMMENT CONSTRUIRE DES RELATIONS ?................................................................4
  QUE FAUT-IL SAVOIR SUR LES RELATIONS ?............................................................................4
  COMMENT EST EXÉCUTÉE UNE RELATION ?..............................................................................4
REVOIR LES CHOSES DE PLUS PRÈS...........................................................................5
  QU’EST-CE QU’UN ARBRE ?................................................................................................5
  QU’EST-CE QUE L'UNIFICATION ?.........................................................................................5
  QU’EST-CE QUE LA SUBSTITUTION ?......................................................................................5
  QU’EST-CE QUE L'EFFACEMENT ?..........................................................................................5
    Présentation............................................................................................................5
    Algorithme..............................................................................................................5
    Recherche de solution..............................................................................................7




                                                             1
Bruno Delb                  http://www.brunodelb.com         Date : 27/12/1998

                                Le langage Prolog




Introduction

      Prolog a été développé par des chercheurs en IA à l'initiative du Japon, en
      octobre 1981, lorsque le Japon invite quelques uns des principaux
      responsables occidentaux de la recherche et du développement pour leur
      présenter un projet ambitieux de développement de systèmes de «
      cinquième génération ».
      Quinze ans après Lisp, A. Comerauer, dans le but de créer un langage pour
      la programmation des problèmes d'analyse de la langue naturelle, met au
      point, grâce à la logique du premier ordre et la démonstration automatique
      de théorème, le langage Prolog.
      Le premier interprète été écrit en 1973 par P. Roussel (écrit en Fortran).
      Les principales différences avec les langages classiques sont les suivantes :
            •   Le Prolog est un langage déclaratif et non procédural (on y donne
                uniquement les données).
            •   Il a un travail non déterministe car il travaille avec des objets
                partiellement inconnus ('il cherche toutes les solutions).
      Ses applications sont :
            •   pour toute communication de langage naturel avec l'ordinateur
            •   pour des calculs formels
            •   pour les constructions de plan en robotique
            •   pour faire des compilateurs
            •   pour faire des SE
      Sont évolution est :
            •   portabilité
            •   interactivité, avec un éditeur écrit en Prolog
            •   extensibilité
            •   fiabilité




                                             2
Bruno Delb                 http://www.brunodelb.com            Date : 27/12/1998

                               Le langage Prolog




Comment est structuré un programme ?




 Quelle est la structure générale d’un programme ?

     C'est la représentation et utilisation des connaissances (ensemble de
     relations qui décrivent les propriétés de ces objets et leurs interactions) que
     l'on a sur un certain domaine (ensemble d'objets).
     S'il y a une relation entre les objets, alors l'ordre est significatif .
     Paul est le père de Jean.
     RELATION (ou PREDICAT) = « être père »
     OBJETS (ou ARGUMENTS) = « Jean » et « Paul »
     On dira : « est_père_de (Paul, Jean) ».
     Poser la question « Qui est le père de Jean ? » : « est_père_de (x, Jean) »x
     est donc une variable.


 Qu’est-ce qu’un prédicat ?

     C'est un mélange de règles et d'assertions.
     Un programme Prolog est une suite de règles.
     Une règle est constituée d'une tête de règle (un seul prédicat) et d'une queue
     de règle (une suite de littéraux reliées par ":-" ou "if").


 Qu’est-ce qu’un terme ?

     Les termes (règles, littéraux, arguments) peuvent être une constante
     (identificateur, nombre, chaîne de caractères), une variable ou un terme
     structuré (u-plet).


 Qu’est-ce que le regroupement en paquet ?

     L'ensemble des règles et assertions (clauses) permettant de définir un
     prédicat doivent être regroupé obligatoirement en paquet.




                                            3
Bruno Delb               http://www.brunodelb.com         Date : 27/12/1998

                              Le langage Prolog




Comment construire des relations ?




  Que faut-il savoir sur les relations ?

       Pour satisfaire une conjonction de relations, on les examine de gauche à
       droite.
       Au cours de l'exécution, certaines variables peuvent recevoir des valeurs, si
       une variable reçoit une variable, toutes ses occurences prennent la même
       valeur.
       Dans une relation, il n'y a a pas de distinction entre argument d'entrée et de
       sortie.


  Comment est exécutée une relation ?

       L'exécution est non déterministe : on calcule tous les jeux de valeur qui
       satisfont la relation.
       Au cours de l'exécution, lorsque Prolog tente de trouver une relation dans la
       base, il prend les paquets dans l'ordre où ils se présentent.




                                           4
Bruno Delb                  http://www.brunodelb.com            Date : 27/12/1998

                                Le langage Prolog




Revoir les choses de plus près




  Qu’est-ce qu’un arbre ?

       Un arbre est constitué d'une racine et de sous arbres qui sont eux-mêmes
       des arbres.
       Tout noeud sans descendant est dit terminal ou feuille.
       En Prolog, un arbre peut être partiellement inconnu. Dans ce cas, une au
       moins de ses feuilles se réduit à une variable.


  Qu’est-ce que l'unification ?

       Soit deux arbres comportant éventuellement des parties variables,
       l'unification c'est consister à trouver, si elles existent, les valeurs que doivent
       prendre les variables présentes dans l'un ou l'autre des arbres pour que
       ceux-ci coïncident.
       C'est la principale opération effectuée sur les arbres.
       C'est le mécanisme fondamental de Prolog pour tenter de trouver des
       réponses aux questions.


  Qu’est-ce que la substitution ?

       Ensemble des égalités (variables = valeurs) qui rendent les deux arbres
       égaux.


  Qu’est-ce que l'effacement ?

   Présentation
       « P (...) if Q (...), R (...) » peut s'interpréter par : « pour effacer P (...),
       effacer Q (...) puis R (...) ».
       « S (...) » peut s'interpréter par : « S (...) s'efface ».
       Une question « S1 (...) S2 (...), ...., Sn (...) » peut s'interpréter par : «
       effacer S1 (...) puis S2 (...) .... puis Sn (...) ».

   Algorithme
             •   à la fin, si tout est effacé, alors c'est un succès : ce sont les
                 substitutions pour les valeurs de la question



                                             5
Bruno Delb                http://www.brunodelb.com                     Date : 27/12/1998

                          Le langage Prolog

        •   sinon, si l'on bute sur un terme qu'on ne réussit par à effacer, c'est
            échec
        •   dans les deux cas :
                              -   retour en arrière
                              -   reconsidèrer le dernier choix que l'on a fait pour tenter d'effacer
                                  le terme d'une autre façon
 Question
 Indiquer quelles relations existent entre certains objets :
 PERE (ANATOLE, BERNARD);
 PERE (ANATOLE, CHARLES);
 Réponse
 Anatole est-le-père-de Bernard.
 Anatole est-le-père-de Charles.
 Question
 PERE (ANATOLE, BERNARD);
 Réponse
 Oui.
 Question
 PERE (ANATOLE, XAVIER);
 Réponse
 Il n'en sait rien.
 Question
 PERE (ANATOLE, qui);
 Réponse
 qui= BERNARD
 qui= CHARLES




                                       6
Bruno Delb                 http://www.brunodelb.com        Date : 27/12/1998

                            Le langage Prolog

  On déclare des règles :
  GRAND_PERE (Pepe, Fiston) ->
  PERE (Pepe, Papa);
  PERE (Papa, Fiston);
  Pepe EST-LE-GRAND-PERE de Fiston s'il existe une valeur de Papa pour
  laquelle Pépé EST-LE-PERE-DE Papa ET Papa EST-LE-PERE-DE Fiston.

Recherche de solution
  Constituons une famille à l'aide des règles suivantes :
  PERE (ANATOLE, BERNARD);
  PERE (ANATOLE, CHARLES);
  PERE (BERNARD, DIDIER);
  PERE (CHARLES, ERIC);
  GRAND_PERE (Pepe, Fiston) ->
  PERE (Pepe, Papa);
  PERE (Papa, Fiston);
  Soit :
  ANATOLE
  BERNARD CHARLES
  DIDIER ERIC
  On pose la question : PERE (BERNARD, qui);
  Prolog cherche dans le programme si quelque chose lui permet de trouver la
  valeur de "qui" telle que PERE (BERNARD, qui) soit vrai.
  PERE (ANATOLE, BERNARD);
  PERE (ANATOLE, CHARLES);
  PERE (ANATOLE, DIDIER);
  qui= DIDIER
  PERE (ANATOLE, ERIC);
  La réponse est donc : qui= DIDIER
  A la question :
  PERE (ANATOLE, Enfant);




                                         7
Bruno Delb                   http://www.brunodelb.com   Date : 27/12/1998

                             Le langage Prolog

 Prolog cherche :
 PERE (ANATOLE, BERNARD);
 enfant= BERNARD
 PERE (ANATOLE, CHARLES);
 enfant= CHARLES
 PERE (ANATOLE, DIDIER);
 PERE (ANATOLE, ERIC);
 La réponse est donc :
 enfant= BERNARD
 enfant= CHARLES
 Question :
 GRAND_PERE (ANATOLE, Petit);
 Prolog commence ici par la règle 5 :
 GRAND_PERE (Pepe, Fiston) ->
 PERE (Pepe, Papa);
 PERE (Papa, Fiston);
 C'est vrai si :
        •   Pepe = ANATOLE
        •   Fiston = Petit
        •   PERE (ANATOLE, Papa); est vrai
        •   PERE (Papa, Petit); est vrai
 Prolog essaie :
 PERE (ANATOLE, Papa);
 papa= BERNARD
 PERE (BERNARD, Petit);
 petit= DIDIER
 PERE (ANATOLE, Papa);
 papa= CHARLES
 PERE (CHARLES, Petit);
 petit= ERIC




                                          8

Contenu connexe

En vedette

Escenarios políticos y sus tendencias para 2014 en Brasil
Escenarios políticos y sus tendencias para 2014 en BrasilEscenarios políticos y sus tendencias para 2014 en Brasil
Escenarios políticos y sus tendencias para 2014 en BrasilGobernabilidad
 
La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...
La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...
La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...Universidad Autónoma de Barcelona
 
Apuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesisApuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesiscarlos achulli
 
Quelles sont les priorités 2014 des directeurs financiers ?
Quelles sont les priorités 2014 des directeurs financiers ?Quelles sont les priorités 2014 des directeurs financiers ?
Quelles sont les priorités 2014 des directeurs financiers ?PwC France
 
Didier Super - Comedie Paris Belleviloise
Didier Super - Comedie Paris BelleviloiseDidier Super - Comedie Paris Belleviloise
Didier Super - Comedie Paris BelleviloiseWE DO MUSIC
 
Programme des Champs Libres décembre 2013
Programme des Champs Libres décembre 2013Programme des Champs Libres décembre 2013
Programme des Champs Libres décembre 2013midod
 
La semaine sociale by armstrong - 02122013
La semaine sociale by armstrong - 02122013La semaine sociale by armstrong - 02122013
La semaine sociale by armstrong - 02122013armstrong
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Emilie Robert
 
Pour une démocratisation du financement de nos entreprises
Pour une démocratisation du financement de nos entreprisesPour une démocratisation du financement de nos entreprises
Pour une démocratisation du financement de nos entreprisesFMC maintenant Dentons
 
Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...
Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...
Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...Universidad Autónoma de Barcelona
 
Plantilla de evaluación
Plantilla de evaluaciónPlantilla de evaluación
Plantilla de evaluaciónoscarbui
 
les materiels adaptés aux seniors
les materiels adaptés aux seniorsles materiels adaptés aux seniors
les materiels adaptés aux seniorsCoraia
 
Posició del grup per tocar pdf
Posició del grup per tocar pdfPosició del grup per tocar pdf
Posició del grup per tocar pdfmonturiol
 

En vedette (19)

Escenarios políticos y sus tendencias para 2014 en Brasil
Escenarios políticos y sus tendencias para 2014 en BrasilEscenarios políticos y sus tendencias para 2014 en Brasil
Escenarios políticos y sus tendencias para 2014 en Brasil
 
Localizacion de restaurante
Localizacion de restauranteLocalizacion de restaurante
Localizacion de restaurante
 
La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...
La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...
La reforma laboral de 2012 y los Expedientes de Regulación de Empleo. Estudio...
 
Arte qr
Arte qrArte qr
Arte qr
 
Apuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesisApuntes de algunas reuniones para guiarme la elaboracion de la tesis
Apuntes de algunas reuniones para guiarme la elaboracion de la tesis
 
Quelles sont les priorités 2014 des directeurs financiers ?
Quelles sont les priorités 2014 des directeurs financiers ?Quelles sont les priorités 2014 des directeurs financiers ?
Quelles sont les priorités 2014 des directeurs financiers ?
 
Didier Super - Comedie Paris Belleviloise
Didier Super - Comedie Paris BelleviloiseDidier Super - Comedie Paris Belleviloise
Didier Super - Comedie Paris Belleviloise
 
Communication entreprise (1)
Communication entreprise (1)Communication entreprise (1)
Communication entreprise (1)
 
Joomla
JoomlaJoomla
Joomla
 
Bienestar
BienestarBienestar
Bienestar
 
Programme des Champs Libres décembre 2013
Programme des Champs Libres décembre 2013Programme des Champs Libres décembre 2013
Programme des Champs Libres décembre 2013
 
La semaine sociale by armstrong - 02122013
La semaine sociale by armstrong - 02122013La semaine sociale by armstrong - 02122013
La semaine sociale by armstrong - 02122013
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
 
Pour une démocratisation du financement de nos entreprises
Pour une démocratisation du financement de nos entreprisesPour une démocratisation du financement de nos entreprises
Pour une démocratisation du financement de nos entreprises
 
conf sociale et eco tpe pme juin 2015 - Les Propositions du Medef
conf sociale et eco tpe pme juin 2015 - Les Propositions du Medefconf sociale et eco tpe pme juin 2015 - Les Propositions du Medef
conf sociale et eco tpe pme juin 2015 - Les Propositions du Medef
 
Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...
Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...
Sobre la ultraactividad de los convenios colectivos denunciados antes de la e...
 
Plantilla de evaluación
Plantilla de evaluaciónPlantilla de evaluación
Plantilla de evaluación
 
les materiels adaptés aux seniors
les materiels adaptés aux seniorsles materiels adaptés aux seniors
les materiels adaptés aux seniors
 
Posició del grup per tocar pdf
Posició del grup per tocar pdfPosició del grup per tocar pdf
Posició del grup per tocar pdf
 

Similaire à Le langage Prolog

Logiques de descriptions.pptx
Logiques de descriptions.pptxLogiques de descriptions.pptx
Logiques de descriptions.pptxmohmll
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXEmmanuelle Morlock
 
Intervention d'Ela JASTRZĘBSKA: Stratégies de la pédagogie de la créativité ...
Intervention d'Ela JASTRZĘBSKA:  Stratégies de la pédagogie de la créativité ...Intervention d'Ela JASTRZĘBSKA:  Stratégies de la pédagogie de la créativité ...
Intervention d'Ela JASTRZĘBSKA: Stratégies de la pédagogie de la créativité ...profeurope
 
Modèles de langue : Ngrammes
Modèles de langue : NgrammesModèles de langue : Ngrammes
Modèles de langue : NgrammesJaouad Dabounou
 
Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...
Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...
Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...Jean-Marc Lavaur
 
G-OWL - graphical web ontology language
G-OWL - graphical web ontology languageG-OWL - graphical web ontology language
G-OWL - graphical web ontology languageMichel Héon PhD
 
Week 4 2015 french slp
Week 4  2015 french slpWeek 4  2015 french slp
Week 4 2015 french slpFabien Riviere
 
Découverte du Traitement Automatique des Langues
Découverte du Traitement Automatique des LanguesDécouverte du Traitement Automatique des Langues
Découverte du Traitement Automatique des LanguesEstelle Delpech
 
WM.A - Opinion mining and sentiment analysis.pptx
WM.A - Opinion mining and sentiment analysis.pptxWM.A - Opinion mining and sentiment analysis.pptx
WM.A - Opinion mining and sentiment analysis.pptxgesix36345
 
02_Propositions (1).pdf
02_Propositions (1).pdf02_Propositions (1).pdf
02_Propositions (1).pdfBellaSalima
 
Nobile - Phonosemantique monosyllabes italiens
Nobile - Phonosemantique monosyllabes italiensNobile - Phonosemantique monosyllabes italiens
Nobile - Phonosemantique monosyllabes italiensLuca Nobile
 
Vers des langues de programmation ?
Vers des langues de programmation ?Vers des langues de programmation ?
Vers des langues de programmation ?Nicolas Dubois
 
Ontologie concept applications
Ontologie concept applicationsOntologie concept applications
Ontologie concept applicationsbenouini rachid
 

Similaire à Le langage Prolog (18)

Logiques de descriptions.pptx
Logiques de descriptions.pptxLogiques de descriptions.pptx
Logiques de descriptions.pptx
 
Word Embedding
Word EmbeddingWord Embedding
Word Embedding
 
5 installation de prolog
5 installation de prolog5 installation de prolog
5 installation de prolog
 
4 histoir
4 histoir4 histoir
4 histoir
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
 
Soutenance.final
Soutenance.finalSoutenance.final
Soutenance.final
 
1
11
1
 
Intervention d'Ela JASTRZĘBSKA: Stratégies de la pédagogie de la créativité ...
Intervention d'Ela JASTRZĘBSKA:  Stratégies de la pédagogie de la créativité ...Intervention d'Ela JASTRZĘBSKA:  Stratégies de la pédagogie de la créativité ...
Intervention d'Ela JASTRZĘBSKA: Stratégies de la pédagogie de la créativité ...
 
Modèles de langue : Ngrammes
Modèles de langue : NgrammesModèles de langue : Ngrammes
Modèles de langue : Ngrammes
 
Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...
Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...
Evalutation des fonctions cognitives : mémoire sémantique bilingue Master 2 r...
 
G-OWL - graphical web ontology language
G-OWL - graphical web ontology languageG-OWL - graphical web ontology language
G-OWL - graphical web ontology language
 
Week 4 2015 french slp
Week 4  2015 french slpWeek 4  2015 french slp
Week 4 2015 french slp
 
Découverte du Traitement Automatique des Langues
Découverte du Traitement Automatique des LanguesDécouverte du Traitement Automatique des Langues
Découverte du Traitement Automatique des Langues
 
WM.A - Opinion mining and sentiment analysis.pptx
WM.A - Opinion mining and sentiment analysis.pptxWM.A - Opinion mining and sentiment analysis.pptx
WM.A - Opinion mining and sentiment analysis.pptx
 
02_Propositions (1).pdf
02_Propositions (1).pdf02_Propositions (1).pdf
02_Propositions (1).pdf
 
Nobile - Phonosemantique monosyllabes italiens
Nobile - Phonosemantique monosyllabes italiensNobile - Phonosemantique monosyllabes italiens
Nobile - Phonosemantique monosyllabes italiens
 
Vers des langues de programmation ?
Vers des langues de programmation ?Vers des langues de programmation ?
Vers des langues de programmation ?
 
Ontologie concept applications
Ontologie concept applicationsOntologie concept applications
Ontologie concept applications
 

Plus de Bruno Delb

Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Bruno Delb
 
Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Bruno Delb
 
Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Bruno Delb
 
Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Bruno Delb
 
Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Bruno Delb
 
Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Bruno Delb
 
Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Bruno Delb
 
Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Bruno Delb
 
Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Bruno Delb
 
Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Bruno Delb
 
Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Bruno Delb
 
Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Bruno Delb
 
Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Bruno Delb
 
Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Bruno Delb
 
Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Bruno Delb
 
Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Bruno Delb
 
Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Bruno Delb
 
Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Bruno Delb
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Bruno Delb
 
Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Bruno Delb
 

Plus de Bruno Delb (20)

Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Introduction to Swift (tutorial)
Introduction to Swift (tutorial)
 
Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)
 
Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)
 
Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)
 
Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)
 
Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)
 
Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)
 
Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)
 
Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)
 
Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)
 
Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)
 
Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)
 
Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)
 
Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)
 
Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)
 
Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)
 
Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)
 
Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)
 
Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)
 

Le langage Prolog

  • 1. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Sommaire INTRODUCTION..........................................................................................................2 COMMENT EST STRUCTURÉ UN PROGRAMME ?...........................................................3 QUELLE EST LA STRUCTURE GÉNÉRALE D’UN PROGRAMME ?...........................................................3 QU’EST-CE QU’UN PRÉDICAT ?............................................................................................3 QU’EST-CE QU’UN TERME ?................................................................................................3 QU’EST-CE QUE LE REGROUPEMENT EN PAQUET ?......................................................................3 COMMENT CONSTRUIRE DES RELATIONS ?................................................................4 QUE FAUT-IL SAVOIR SUR LES RELATIONS ?............................................................................4 COMMENT EST EXÉCUTÉE UNE RELATION ?..............................................................................4 REVOIR LES CHOSES DE PLUS PRÈS...........................................................................5 QU’EST-CE QU’UN ARBRE ?................................................................................................5 QU’EST-CE QUE L'UNIFICATION ?.........................................................................................5 QU’EST-CE QUE LA SUBSTITUTION ?......................................................................................5 QU’EST-CE QUE L'EFFACEMENT ?..........................................................................................5 Présentation............................................................................................................5 Algorithme..............................................................................................................5 Recherche de solution..............................................................................................7 1
  • 2. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Introduction Prolog a été développé par des chercheurs en IA à l'initiative du Japon, en octobre 1981, lorsque le Japon invite quelques uns des principaux responsables occidentaux de la recherche et du développement pour leur présenter un projet ambitieux de développement de systèmes de « cinquième génération ». Quinze ans après Lisp, A. Comerauer, dans le but de créer un langage pour la programmation des problèmes d'analyse de la langue naturelle, met au point, grâce à la logique du premier ordre et la démonstration automatique de théorème, le langage Prolog. Le premier interprète été écrit en 1973 par P. Roussel (écrit en Fortran). Les principales différences avec les langages classiques sont les suivantes : • Le Prolog est un langage déclaratif et non procédural (on y donne uniquement les données). • Il a un travail non déterministe car il travaille avec des objets partiellement inconnus ('il cherche toutes les solutions). Ses applications sont : • pour toute communication de langage naturel avec l'ordinateur • pour des calculs formels • pour les constructions de plan en robotique • pour faire des compilateurs • pour faire des SE Sont évolution est : • portabilité • interactivité, avec un éditeur écrit en Prolog • extensibilité • fiabilité 2
  • 3. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Comment est structuré un programme ? Quelle est la structure générale d’un programme ? C'est la représentation et utilisation des connaissances (ensemble de relations qui décrivent les propriétés de ces objets et leurs interactions) que l'on a sur un certain domaine (ensemble d'objets). S'il y a une relation entre les objets, alors l'ordre est significatif . Paul est le père de Jean. RELATION (ou PREDICAT) = « être père » OBJETS (ou ARGUMENTS) = « Jean » et « Paul » On dira : « est_père_de (Paul, Jean) ». Poser la question « Qui est le père de Jean ? » : « est_père_de (x, Jean) »x est donc une variable. Qu’est-ce qu’un prédicat ? C'est un mélange de règles et d'assertions. Un programme Prolog est une suite de règles. Une règle est constituée d'une tête de règle (un seul prédicat) et d'une queue de règle (une suite de littéraux reliées par ":-" ou "if"). Qu’est-ce qu’un terme ? Les termes (règles, littéraux, arguments) peuvent être une constante (identificateur, nombre, chaîne de caractères), une variable ou un terme structuré (u-plet). Qu’est-ce que le regroupement en paquet ? L'ensemble des règles et assertions (clauses) permettant de définir un prédicat doivent être regroupé obligatoirement en paquet. 3
  • 4. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Comment construire des relations ? Que faut-il savoir sur les relations ? Pour satisfaire une conjonction de relations, on les examine de gauche à droite. Au cours de l'exécution, certaines variables peuvent recevoir des valeurs, si une variable reçoit une variable, toutes ses occurences prennent la même valeur. Dans une relation, il n'y a a pas de distinction entre argument d'entrée et de sortie. Comment est exécutée une relation ? L'exécution est non déterministe : on calcule tous les jeux de valeur qui satisfont la relation. Au cours de l'exécution, lorsque Prolog tente de trouver une relation dans la base, il prend les paquets dans l'ordre où ils se présentent. 4
  • 5. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Revoir les choses de plus près Qu’est-ce qu’un arbre ? Un arbre est constitué d'une racine et de sous arbres qui sont eux-mêmes des arbres. Tout noeud sans descendant est dit terminal ou feuille. En Prolog, un arbre peut être partiellement inconnu. Dans ce cas, une au moins de ses feuilles se réduit à une variable. Qu’est-ce que l'unification ? Soit deux arbres comportant éventuellement des parties variables, l'unification c'est consister à trouver, si elles existent, les valeurs que doivent prendre les variables présentes dans l'un ou l'autre des arbres pour que ceux-ci coïncident. C'est la principale opération effectuée sur les arbres. C'est le mécanisme fondamental de Prolog pour tenter de trouver des réponses aux questions. Qu’est-ce que la substitution ? Ensemble des égalités (variables = valeurs) qui rendent les deux arbres égaux. Qu’est-ce que l'effacement ? Présentation « P (...) if Q (...), R (...) » peut s'interpréter par : « pour effacer P (...), effacer Q (...) puis R (...) ». « S (...) » peut s'interpréter par : « S (...) s'efface ». Une question « S1 (...) S2 (...), ...., Sn (...) » peut s'interpréter par : « effacer S1 (...) puis S2 (...) .... puis Sn (...) ». Algorithme • à la fin, si tout est effacé, alors c'est un succès : ce sont les substitutions pour les valeurs de la question 5
  • 6. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog • sinon, si l'on bute sur un terme qu'on ne réussit par à effacer, c'est échec • dans les deux cas : - retour en arrière - reconsidèrer le dernier choix que l'on a fait pour tenter d'effacer le terme d'une autre façon Question Indiquer quelles relations existent entre certains objets : PERE (ANATOLE, BERNARD); PERE (ANATOLE, CHARLES); Réponse Anatole est-le-père-de Bernard. Anatole est-le-père-de Charles. Question PERE (ANATOLE, BERNARD); Réponse Oui. Question PERE (ANATOLE, XAVIER); Réponse Il n'en sait rien. Question PERE (ANATOLE, qui); Réponse qui= BERNARD qui= CHARLES 6
  • 7. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog On déclare des règles : GRAND_PERE (Pepe, Fiston) -> PERE (Pepe, Papa); PERE (Papa, Fiston); Pepe EST-LE-GRAND-PERE de Fiston s'il existe une valeur de Papa pour laquelle Pépé EST-LE-PERE-DE Papa ET Papa EST-LE-PERE-DE Fiston. Recherche de solution Constituons une famille à l'aide des règles suivantes : PERE (ANATOLE, BERNARD); PERE (ANATOLE, CHARLES); PERE (BERNARD, DIDIER); PERE (CHARLES, ERIC); GRAND_PERE (Pepe, Fiston) -> PERE (Pepe, Papa); PERE (Papa, Fiston); Soit : ANATOLE BERNARD CHARLES DIDIER ERIC On pose la question : PERE (BERNARD, qui); Prolog cherche dans le programme si quelque chose lui permet de trouver la valeur de "qui" telle que PERE (BERNARD, qui) soit vrai. PERE (ANATOLE, BERNARD); PERE (ANATOLE, CHARLES); PERE (ANATOLE, DIDIER); qui= DIDIER PERE (ANATOLE, ERIC); La réponse est donc : qui= DIDIER A la question : PERE (ANATOLE, Enfant); 7
  • 8. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Prolog cherche : PERE (ANATOLE, BERNARD); enfant= BERNARD PERE (ANATOLE, CHARLES); enfant= CHARLES PERE (ANATOLE, DIDIER); PERE (ANATOLE, ERIC); La réponse est donc : enfant= BERNARD enfant= CHARLES Question : GRAND_PERE (ANATOLE, Petit); Prolog commence ici par la règle 5 : GRAND_PERE (Pepe, Fiston) -> PERE (Pepe, Papa); PERE (Papa, Fiston); C'est vrai si : • Pepe = ANATOLE • Fiston = Petit • PERE (ANATOLE, Papa); est vrai • PERE (Papa, Petit); est vrai Prolog essaie : PERE (ANATOLE, Papa); papa= BERNARD PERE (BERNARD, Petit); petit= DIDIER PERE (ANATOLE, Papa); papa= CHARLES PERE (CHARLES, Petit); petit= ERIC 8