Logique et Programmation logique - PowerPoint PPT Presentation

1 / 88
About This Presentation
Title:

Logique et Programmation logique

Description:

N. Jussien Ecole des Mines de Nantes. Introduction. Classes de langage ... Appliquons r1: il vient. 1n ' 1m ' = 1p CQFD. Toutes les formules intervenant dans une ... – PowerPoint PPT presentation

Number of Views:1594
Avg rating:3.0/5.0
Slides: 89
Provided by: RAC64
Category:

less

Transcript and Presenter's Notes

Title: Logique et Programmation logique


1
Logique et Programmation logique
Librement inspiré du cours de N. Jussien Ecole
des Mines de Nantes
2
Introduction
3
Classes de langage
  • Langages impératifs
  • séquencement des calculs spécifié
  • contrôle total du flot dexécution
  • objets du langage diversifiés
  • syntaxe riche (lourde -))
  • exemples Pascal, C, C, C, Java,
  • Langages fonctionnels
  • tout est fonction
  • syntaxe dépouillée
  • base mathématique forte ?-calcul
  • contrôle délégué à linterprète
  • utilisation intensive de la récursivité
  • exemples Lisp, Scheme, Haskell,

4
Une nouvelle classe
  • PROgrammation en LOGique
  • tout est logique
  • syntaxe simple et dépouillée
  • base théorique calcul des prédicats
  • encore plus de contrôle donné à la machine
  • récursion
  • non déterminisme
  • exemple Prolog

5
Historique
  • 1930 Calcul des prédicats (J. Herbrand)
  • 1965 Principe de résolution (J. A. Robinson)
  • 1970 Utiliser la logique comme langage de
    programmation clauses de Horn R.
    Kowalski Q-systèmes A. Colmerauer
  • 1972 Premier interprète PROLOG (A. Colmerauer et
    P. Roussel) Université dAix-Marseille
  • 1977 Premier compilateur PROLOG (D. H. D.
    Warren) Université dÉdimbourg
  • 1980 Projet japonais de 5e génération
  • 1990 PROLOG évolue vers la Programmation par
    Contraintes

6
Plan du cours
  • Bases théoriques (rappels de logique formelle)
  • Calcul propositionnel
  • Calcul des prédicats
  • Le langage PROLOG

7
Rappels de Logique
  • 1. Calcul propositionnel
  • 2. Calcul des prédicats

8
1. Calcul propositionnel
  • Comment écrire les formules ?
  • Aspects syntaxiques
  • Comment déterminer la valeur de vérité dune
    formule ?
  • Aspects sémantiques
  • Comment démontrer de nouveaux résultats ?
  • Aspects déductifs

9
Syntaxe dune formule
Calcul propositionnel
  • Données
  • un ensemble P de variables propositionnelles P
    p, q, r, énoncés élémentaires
  • un ensemble C de connecteurs C ? , ? , ? ,
    ? , ?
  • Formules
  • p est une formule si p ? P
  • ? (H) est une formule si H est une formule
  • (H) ? (K) est une formule si H et K sont des
    formules et si ? ? C
  • Règles de suppression des parenthèses

10
Sémantique dune formule
Calcul propositionnel
  • Logique bi-valuée
  • faux (0)
  • vrai (1)
  • Notion dinterprétation
  • donner une valeur de vérité à une variable
  • extension à un opérateur
  • extension à une formule

11
Tables de vérité opérateurs
Calcul propositionnel
1 0
0 0 0 1
0 1 1 1
1 1 0 1
1 0 0 1
12
Formules particulières
Calcul propositionnel
  • Tautologies formules toujours vraies
  • La table de vérité ne contient que des 1
  • exemple p ? ? p

1
1 1
0
13
?
Calcul propositionnel
1 1 0 0
1 0 1 0
0
1 1 1 0
1 1 1 1
1
0
1
0
1
1
0
14
Catégories de formules
Calcul propositionnel
  • Tautologies formules toujours vraies
  • Formules inconsistantes
  • formules toujours fausses
  • la table de vérité ne contient que des 0
  • exemple p ? ? p
  • Formules consistantes
  • formules non toujours fausses

15
Formules particulières
Calcul propositionnel
  • Formules tautologiquement équivalentes
  • les tables de vérité sont les mêmes
  • Condition nécessaire et suffisante (F) ? (H)
    est une tautologie (F) ? (H)

16
Quelques équivalences utiles
Calcul propositionnel
  • Propriétés de ? et ?
  • associativité
  • distributivité (dans les 2 sens)
  • éléments neutres (0 pour ? et 1 pour ?)
  • éléments absorbants (1 pour ? et 0 pour ?)

17
Formes normales
Calcul propositionnel
  • But avoir une représentation uniforme des
    formules du calcul propositionnel
  • limiter le nombre de connecteurs différents
    utilisés
  • limiter lallure des formules rencontrées

18
Formes normales
Calcul propositionnel
Ex A ? ?( B ?C) ? D
Toute formule du calcul propositionnel est
tautologiquement équivalente à une formule sous
forme normale disjonctive
Ex A ? ?( B ? C) ? D
19
Aspects déductifs
Calcul propositionnel
  • notion de conséquence logique
  • notion de démonstration
  • notion de règles de déduction

20
Conséquence logique
Calcul propositionnel
  • Soit A F1, , Fn un ensemble de n
    formules A G ssi (F1 ? ? Fn) ? G  G
    est vraie des que les Fi sont vraies 
  • Notion de réfutation
  • démonstration par labsurde A G ssi F1 ?
    ? Fn ? ? G est inconsistante

21
Système formel
Calcul propositionnel
  • Données
  • un ensemble V de symboles
  • un ensemble F de formules (F ? V)
  • un ensemble A daxiomes (A ? F)
  • un ensemble fini de règles de déduction
  • Une démonstration dans un système formel S est
    une suite dénoncés A1, An telle que
  • pour tout i, Ai est un axiome de S ou une
    conséquence des énoncés précédents par
    application dune des règles de déduction
  • Un théorème de S est le dernier énoncé dune
    démonstration

22
Énoncé déductible
Calcul propositionnel
  • Soit J un ensemble de formules
  • Un énoncé A est dit déductible sous les
    hypothèses J (noté J A) ssiil existe une
    suite finie A1, , An dénoncés telle que
  • An A
  • pour tout i
  • Ai est un axiome
  • ou Ai ? J
  • ou Ai découle dénoncés précédents par
    application dune règle dinférence

23
Quelques règles de déduction classiques
Calcul propositionnel
  • modus ponens
  • p, p ? q q
  • modus tollens
  • p? q, ? q ? p
  • syllogisme
  • p? q, q? r p? r

24
Un exemple de système formel S1
S 1,, F 1n 1m 1p, n,m,p gt0 ?? ( 14
signifie 1111) A 1111 un seul axiome R
r1,r2 avec r1 1n1m1p -----
1n11m1p1et r2 1n1m1p -----
1n1m11p1

25
  • La formule t de F est un théorème de S ssi
    ----- t
  • l ensemble des théorèmes de S est noté Tdans l
    exemple S1,la suite des formules
  • f0 11111
  • f1 1111111 (r1 sur f0)
  • f2 111111111 (r2 sur f1)est une déduction
    de 111111111 à partir de 11111.
  • 1111111111 est un théorème de S
  • Attention toutes les manipulations sont
    formelles et rien na de sens . On peut donner
    des interprétations mais méfiance 111111
    n est pas un théorème de S car ce n est même
    pas une formule de F!

26
Résultats généraux
  • Prop1 Si h-----g et g-----k alors h-----k
    (immédiat)
  • Prop 2 L ensemble des déductions est récursif
  • Prop 3 L ensemble T des théorèmes est
    récursivement
    énumérable
  • Prop 4 Il existe des SF où T n est pas
    récursif. Dans ce cas ( presque tous les SF
     intéressants ), il n existe aucun moyen
    algorithmique pour décider si une formule bien
    formée quelconque est un théorème ou pas.

27
Etude dun système formel particulier (S1)
  • Montrons que Toute formule 1n 1m 1nm est un
    théorème vrai si nm2 ( axiome)supposons vrai
    pour tout couple (n,m) nmltp.alors soit
    (n ,m ) n m p. On a n -1m ltp donc
    1n -11m 1p-1 . Appliquons r1 il vient 1n 
    1m  1p CQFD
  • Toutes les formules intervenant dans une
    déduction de théorème sont de la forme 1n 1m
    1nm vrai pour l axiome.Si c est vrai pour f
    et que f----g alors c est vrai pour g quelque
    soit la règle utilisée.
  • On a donc caractérisé les théorèmes ce sont les
    formules 1n 1m 1nm n,m gt0

28
Suite de l étude de S1
  • Le système formel S1 est cohérent ( 11111
    n est pas un théorème)
  • Le système formel S1 est finiment axiomatisable
  • TS1 est récursif ( la construction d un
    programme qui répond oui si une formule 1n 1m
    1p est un théorème est évident a construire.
  • S1 modélise correctement l addition entre deux
    entiers . Relativement à ce problème il est
    correct et complet.

29
Propriétés dun système formel
Calcul propositionnel
  • Un système formel est correct ssi si A
    alors A
  • tout ce qui est démontrable est vrai
  • Un système formel est complet ssi si A
    alors A
  • tout ce qui est vrai est démontrable

30
Une autre règle dinférence
Calcul propositionnel
  • Principe de résolution (Robinson)
  • Définitions
  • littéral positif ou négatif
  • une clause est une disjonction de littéraux
  • la résolvante de C1 l ? C1 et de C2 ?l ? C2
    est C1 ? C2
  • Principe de résolution l ? C1 , ? l ? C2
    réso C1 ? C2
  • le principe de résolution est valide
  • le principe de résolution généralise les autres
    règles

31
Validité du principe de résolution
Calcul propositionnel
  • Il suffit de montrer que si (l ? C1) ? (? l ?
    C2 ) vrai alors (C1 ? C2 ) nest pas faux
  • Deux cas se présentent
  • l est vrai
  • nécessairement C2 vrai et donc (C1 ? C2 )
    aussi
  • ? l est vrai
  • nécessairement C1 vrai et donc (C1 ? C2 )
    aussi

32
Propriétés du calcul propositionnel
Calcul propositionnel
  • Le calcul propositionnel muni du principe de
    résolution est correct et complet
  • Un ensemble S de clauses est insatisfaisable
    ssi S reso
  • Démonstration par labsurde (réfutation) S
    C ssi S ??C reso

33
Ce quil faut retenir
Calcul propositionnel
  • Intérêt dune forme normale
  • Conséquence logique vs démonstration
  • Principe de résolution
  • Preuve par réfutation

34
2. Calcul des prédicats
  • Comment écrire les formules ?
  • Aspects syntaxiques
  • Comment déterminer la valeur de vérité dune
    formule ?
  • Aspects sémantiques
  • Comment démontrer de nouveaux résultats ?
  • Aspects déductifs

35
Limites du calcul propositionnel
Calcul des prédicats
  • Modéliser
  • Les chandelles sont faites pour éclairer
  • Quelques chandelles éclairent très mal
  • Quelques objets qui sont faits pour éclairer le
    font très mal

Impossible
36
Une modélisation
Calcul des prédicats
  • Les chandelles sont faites pour éclairer
  • Quelques chandelles éclairent très mal
  • Quelques objets qui sont faits pour éclairer le
    font très mal

37
Syntaxe
Calcul des prédicats
  • des connecteurs (?, ?, ?, ? et ?)
  • des quantificateurs (? et ?)
  • des variables (x,y, )
  • des relations (prédicats) (R, S, éclaire, )
  • des symboles de fonctions (f, g, )
  • les fonctions darité 0 sont appelées des
    constantes

38
Vocabulaire
Calcul des prédicats
  • Les termes
  • les variables et les constantes sont des termes
  • f(t1, , tn) est un terme si
  • les ti sont des termes
  • f est un symbole de fonction darité n
  • Les atomes
  • R(t1, , tn) est un atome si
  • les ti sont des termes
  • R est un symbole de relation darité n

pas de valeur de vérité
valeur de vérité
39
Formules
Calcul des prédicats
  • Un atome est une formule
  • Si F et G sont des formules et x une variable,
    alors les expressions suivantes sont des formules
  • ?(F)
  • (F) ? (G) et (F) ? (G)
  • (F) ? (G) et (F) ? (G)
  • ?x (F) et ?x (G)

40
Occurrence dune variable
Calcul des prédicats
  • Une occurrence dune variable x dans une formule
    F est un endroit où x apparaît dans F sans être
    immédiatement précédée par ? ou ?
  • Une occurrence libre de x dans F est définie

41
Occurrence libre
Calcul des prédicats
  • Si F est un atome, toutes les occurrences de x
    sont libres
  • Si F ? (G), les occurrences libres de x sont
    celles de G
  • Si F (G) ? (H), les occurrences libres de x
    sont celles de G et celles de H
  • Si F ?y(G) ou F ?y(H) avec x distinct de y,
    les occurrences libres de x sont celles de G et
    celles de H
  • Si F ?x(G) ou F ?x(H), aucune occurrence de x
    dans F n est libre

42
Caractéristiques des variables
Calcul des prédicats
  • Une variable est dite libre dans une formule F si
    elle a au moins une occurrence libre (sinon on
    dit quelle est liée)
  • Une formule nayant pas de variable libre est
    dite close

43
Aspects sémantiques
Calcul des prédicats
  • Formules universellement valides
  • Le théorème de Herbrand
  • Principe de résolution adapté au calcul des
    prédicats

44
Vers la notion de modèle
Calcul des prédicats
  • Soit L le langage du calcul des prédicats
  • une interprétation de L cest la donnée de
  • un ensemble E non vide appelé ensemble de base
  • pour chaque symbole de prédicat R darité n, dun
    sous-ensemble R de En
  • pour chaque symbole de fonction f darité n,
    dune application f de En vers E (y compris pour
    les constantes)
  • on peut alors calculer la valeur de tout terme
    clos (cest un élément de E)
  • on peut donc associer une valeur de vérité à tout
    atome et donc par extension à toute formule close

45
Exemple dinterprétation
Calcul des prédicats
  • ?x?y?z (P(x,y) ? Q(y,z) ? R(x,z))
  • ?x?y ( (M(x,y) ? P(x,y) ? Q(x,y))
  • M(a,b) ? P(c,b) ? P(d,a) ? P(e,c)
  • E
  • P
  • a

anne, bernard,
M est la mère de Q est un parent de R
est le grand-père de
est le père de
b bernard c charles d didier e éric
anne
46
Modèle
Calcul des prédicats
  • Soit M une interprétation de L
  • soit F une formule close. M est un modèle de F
    ssi la valeur de vérité de F dans M est 1 M
    F
  • soit F(x1, , xk) une formule quelconque
  • F est dite universellement valide ssi ?x1?xk
    F(x1, , xk)est satisfaite dans toutes les
    interprétations de L

F est dite insatisfaisable ssi il existe une
interprétation pour laquelle ?x1?xk ?F(x1,
, xk) est satisfaite
47
Preuve et démonstration
Calcul des prédicats
  • Comment prouver une formule du calcul des
    prédicats ?
  • Prouver quelle est vraie
  • passer en revue toutes les interprétations !
  • Prouver quelle est fausse
  • trouver une interprétation qui invalide la
    formule

48
Toutes les interprétations ?
Calcul des prédicats
  • Une représentation utile des formules
  • forme clausale
  • Un théorème qui simplifie la vie
  • théorème de Herbrand
  • Principe de résolution pour le calcul des
    prédicats
  • vers une automatisation des démonstrations

49
Transformation de formule
Calcul des prédicats
  • Forme normale prénexe
  • quantificateurs en tête de la formule
  • formule sous forme normale conjonctive
  • Forme standard de Skolem
  • formule sous forme normale prénexe
  • quantificateurs existentiels précédant
    quantificateurs universels

50
Mise sous forme prénexe
Calcul des prédicats
  • Éliminer les connecteurs ? et ?
  • Transporter les ? devant les atomes
  • en utilisant (?? F ? F) et les lois de De Morgan
  • Transporter les quantificateurs en tête de la
    formule
  • Ne pas hésiter à renommer les variables

51
Transport des quantificateurs
Calcul des prédicats
52
Inversion de ? et de ?Skolemisation
Calcul des prédicats
  • Lorsquon a
  • on remplace y par une fonction g qui à x associe
    y

53
Une représentation utile des formulesForme
clausale
Calcul des prédicats
  • On part de la forme standard de Skolem
  • On utilise les clauses avec
  • les variables quantifiées universellement
    conservées
  • les fonctions de Skolem conservées
  • les variables quantifiées existentiellement
    remplacées par des constantes
  • les variables renommées dune clause à lautre

EID
54
Univers de Herbrand
Calcul des prédicats
  • Soit S un ensemble de clauses
  • Soit H0 lensemble des symboles de constantes
    ayant au moins une occurrence dans S. On pose
    pour fn fonction darité n de S et tj
    éléments de Hi-1
  • H? limi?? Hi est appelé univers de Herbrand
  • On appelle instance de base dune clause C toute
    clause obtenue en remplaçant les variables de C
    par des éléments de H?

55
Théorème de Herbrand
Calcul des prédicats
  • Théorème Un ensemble S de clauses est
    insatisfaisable si et seulement si il existe un
    ensemble S dinstances de base insatisfaisable
  • Corollaire Un ensemble de clauses est
    satisfaisable si et seulement si tout ensemble
    fini dinstances de base est satisfaisable

56
A quoi ça sert ? Validation de raisonnement
Calcul des prédicats
  • On cherche à valider le raisonnement suivant
  • Un dragon est heureux si tous ses enfants peuvent
    voler
  • Les dragons verts peuvent voler
  • Un dragon est vert sil a au moins un parent vert
    ou rose
  • Donc les dragons verts sont heureux

57
Résolution du problème
Calcul des prédicats
  • Démarche générale
  • Modéliser le problème (les prémisses et la
    conclusion)
  • Démonstration par labsurde, on montre que P1 ?
    P2 ? P3 ? ?C est insatisfaisable
  • mettre la formule sous forme clausale
  • utiliser le théorème de Herbrand
  • Notations
  • h(x) x est heureux
  • p(x,y) x est parent de y
  • vo(x) x vole (peut voler)
  • ve(x) x est vert
  • r(x) x est rose

EID
58
Résolution du problème (suite)
Calcul des prédicats
P1 un dragon est heureux si tous ses enfants
peuvent voler
?
(?y, p(x,y)?vo(y))
P2 les dragons verts peuvent voler
P3 un dragon est vert sil a au moins un parent
vert ou rose
les A sont B
A ? B
C les dragons verts sont heureux
négation
59
Forme clausale
Calcul des prédicats
60
Validation du raisonnement
Calcul des prédicats
  • Univers de Herbrand
  • H0 a H1 a, f(a) H? a, , fn(a)
  • Trouver un ensemble dinstances de base
    insatisfaisable
  • intuition 1 partir de la conclusion et essayer
    darriver à une contradiction par déduction
  • intuition 2 utiliser le principe de résolution

61
Mise en uvre
Calcul des prédicats
? clause vide
QED
62
Résolution
Calcul des prédicats
  • On a un ensemble dinstances de base
    insatisfaisable
  • La formule P1 ? P2 ? P3 ? ?C est donc
    insatisfaisable
  • Le raisonnement est donc valide

63
Analysons un peu les choses
Calcul des prédicats
  • Lopération dappariement de deux atomes
    sappelle lunification
  • Algorithme dunification (vu plus tard)
  • On peut donc appliquer le principe de résolution
    sans problème

64
Propriétés du calcul des prédicats
Calcul des prédicats
  • Le calcul des prédicats muni du principe de
    résolution et de lunification est complet
  • toute formule close est vraie ou fausse
  • MAIS le calcul des prédicats est indécidable
  • Il nexiste pas dalgorithme permettant de
    décider à tout coup si une formule close est
    vraie ou fausse
  • En PROLOG, nous nous limiterons donc à un
    sous-ensemble du calcul des prédicats
  • non restrictif en pratique

65
Programmer en logique ?
Calcul des prédicats
  • Un petit exemple
  • ?x?y?z (pere(x,y)?parent(y,z) ? grand-pere(x,z)
  • ?x?y ((mere(x,y) ? pere(x,y)) ? parent(x,y)
  • mere(a,b) pere(c,b) pere(d,a) pere(e,c)
  • Forme clausale
  • ?pere(x1, y1) ? ?parent(y1, z1) ?
    grand-pere(x1,z1)
  • ?mere(x2, y2) ? parent(x2, y2)
  • ?pere(x3, y3) ? parent(x3, y3)
  • mere(a,b) pere(c,b) pere(d,a) pere(e,c)
  • On veut prouver ?x, grand-pere(x,b)
  • négation sous forme clausale ?grand-pere(x,b)

66
Programmer en logique ?
Calcul des prédicats
  • On part de ?grand-pere(x,b)
  • si x x1 et z1b unification avec
    ?pere(x1, y1) ? ?parent(y1, z1) ?
    grand-pere(x1,z1)
  • on obtient ?pere(x, y1) ? ?parent(y1, b)
  • si y3 b et y1x3 unification avec ?pere(x3,
    y3) ? parent(x3, y3)
  • on obtient ?pere(x, x3) ? ?pere(x3, b)
  • si x3 c unification avec pere(c,b)
  • on obtient ?pere(x, c)
  • si xe unification avec pere(e,c)
  • on obtient ? QED

67
Programmer en logique ?
Calcul des prédicats
  • On a réussi à prouver ?x, grand-pere(x,b)
  • On a réussi à calculer un x
  • Unification calcul
  • on donne des valeurs aux variables
  • Calcul programmation
  • on va pouvoir programmer avec la logique !!!
  • on automatise complètement le processus
  • PROLOG est un démonstrateur de théorème

68
Le langage PROLOG
  • 1. Premiers pas
  • 2. Arithmétique
  • 3. Listes
  • 4. Le contrôle PROLOG
  • 5. Termes structurés
  • 6. Méta-interprétation de PROLOG

69
1. Premiers pas en Prolog
Le langage
  • On se limite aux clauses de Horn
  • au plus un littéral positif
  • un seul littéral (positif) fait
  • un littéral positif et au moins un littéral
    négatif règle
  • pas de littéral positif requête
  • Elles permettent
  • de forcer le retour dans la base pour continuer
    la démonstration
  • de limiter le choix par clause

70
Univers PROLOG
Le langage
  • Lunivers PROLOG est une base de connaissances
    décrivant létat du monde à laide de relations
    (prédicats) portant sur des entités (termes)
  • Un prédicat particulier () correspond à
    lunification

71
Syntaxe de PROLOG
Le langage
  • Considérons lénoncé
  • Socrate est un homme
  • Tout homme est mortel
  • Socrate est-il mortel ?

?x, homme(x)
homme(socrate).
mortel(X) - homme(X).
?x, homme(x) ? mortel(x)
?- mortel(socrate).
72
La famille
Le langage
masculin(tom). tom est de sexe
masculin masculin(tim). masculin(bob). masculin(ji
m). paquet de clauses feminin(pam). femi
nin(liz). feminin(ann). feminin(pat). enfant(bob,
pam). enfant(bob,tom). enfant(liz,tom). enfant(ann
,bob). enfant(pat,bob). enfant(tim,liz). enfant(ji
m,pat).
73
Premières requêtes
Le langage
masculin(tom). masculin(tim). masculin(bob). masc
ulin(jim). feminin(pam). feminin(liz). feminin(a
nn). feminin(pat). enfant(bob,pam). enfant(bob,to
m). enfant(liz,tom). enfant(ann,bob). enfant(pat,b
ob). enfant(tim,liz). enfant(jim,pat).
Est-ce que pat est un enfant de bob ?
?- enfant(pat,bob).
Yes
Quels sont les enfants de tom ?
?- enfant(X,tom).
X bob


X liz
No
74
Lien avec le calcul des prédicats
Règles PROLOG a - b,c,d.
Règles LOGIQUE a ? ? b ? ? c ? ? d
Requête PROLOG ?- q.
Requête LOGIQUE ? q
Unification Faire correspondre requête et tête de
règle
75
Écriture de prédicats
Le langage
masculin(tom). masculin(tim). masculin(bob). masc
ulin(jim). feminin(pam). feminin(liz). feminin(a
nn). feminin(pat). enfant(bob,pam). enfant(bob,to
m). enfant(liz,tom). enfant(ann,bob). enfant(pat,b
ob). enfant(tim,liz). enfant(jim,pat).
Xpam
Xtom
  • Qui est le père de bob ?

?- enfant(bob,X), masculin(X).
Xtom
  • Plus généralement
  • pere(X,Y) -
  • enfant(Y,X),
  • masculin(X).
  • Écrire le prédicat mere/2

76
À chacun son tour
Le langage
  • Écrire les prédicats correspondant aux relations
  • grand-pere/2
  • frere/2
  • tante/2
  • cousin/2

77
PROLOG
Le langage
  • PROLOG est un langage déclaratifon spécifie les
    propriétés du résultat du programme et non pas le
    processus pour arriver à ce résultat (aspect
    opérationnel)
  • Intérêts
  • facilité de compréhension
  • facilité décriture

78
Retour sur le retour arrière
Le langage
masculin(tom). masculin(tim). masculin(bob). masc
ulin(jim). feminin(pam). feminin(liz). feminin(a
nn). feminin(pat). enfant(bob,pam). enfant(bob,to
m). enfant(liz,tom). enfant(ann,bob). enfant(pat,b
ob). enfant(tim,liz). enfant(jim,pat). frere(X,Y)
- masculin(X), enfant(X,Z),
enfant(Y,Z).
retour
Zpam
Z tom
  • Considérons la requête
  • ?- frere(bob,liz).

échec
X bob, Y liz
Yes
Le mécanisme de retour-arrière (backtrack) assure
la complétude de la recherche Demander une
nouvelle solution revient à provoquer un échec
fictif pour forcer le backtrack
79
Quelques propriétés
Le langage
  • la recherche réalisée par PROLOG est une
    recherche en profondeur dabord
  • on peut obtenir plusieurs solutions pour une même
    requête
  • on appelle cela le non-déterminisme de PROLOG
  • un prédicat peut servir à autre chose que ce pour
    quoi il a été écrit
  • on appelle cela la réversibilité de PROLOG
  • les seuls résultats possibles yes ou no
  • pas de fonction, les réponses sont obtenues par
    unification uniquement

80
Récursivité
Le langage
  • Écrire le prédicat ascendant/2

ascendant(X,Y) - enfant(Y,X). ascendant(X,
Z) - enfant(Z,Y), ascendant(X,Y).
Condition darrêt en premier
Information discriminante en premier
81
PROLOG logique ?
Le langage
  • Soit une relation binaire r. Comparer
  • récursion droitefermeture(X,Y) -
    r(X,Y).fermeture(X,Z) - r(X,Y), fermeture(Y,Z).
  • récursion gauchefermeture(X,Y) -
    r(X,Y).fermeture(X,Z) - fermeture(Y,Z), r(X,Y).
  • Attention à la procédure de recherche !!!
  • Règle de sélection du but
  • le plus à gauche
  • Règle de sélection de la clause
  • la première

82
2. Arithmétique
Le langage
  • Les opérateurs usuels existent , ?, /, mod
  • attention il sagit de symboles de fonctions !!!

?- X 1 2.
X 12
? (1,2)
  • Un opérateur spécial is

?- X is 1 2.
X 3
  • Largument de droite doit être complètement
    instancié à lappel

?- X is 1 Y.
INSTANTIATION ERROR
83
Opérateurs arithmétiques
Le langage
  • gt et lt
  • gt et lt
  • égalité numérique
  • \ diségalité numérique

attention les deux arguments doivent être
instanciés à lappel
84
Exemple calcul du PGCD
Le langage
  • Propriétés du PGCD D de X et Y
  • si X et Y sont égaux, D vaut X
  • si X lt Y alors D est le PGCD de X et de Y - X
  • si Y lt X alors échanger le rôle de X et Y

XY
pgcd(X, Y , D) - X Y , D is X.
pgcd(X, Y , D) - X lt Y , pgcd(X,Y-X,D).
Y1 is Y - X, pgcd(X,Y1,D).
pgcd(X, Y, D) - X gt Y, pgcd(Y,X,D).
oui, mais que se passe-t-il avec pgcd(1,1,2).
85
Attention
Le langage
  • X Y réussit si X sunifie avec Y sinon échec
  • X is Y réussit si Y est une expression
    arithmétique complètement instanciée à lappel et
    X est une variable libre sinon il y a erreur
  • X Y réussit si X et Y sont deux expressions
    arithmétiques de même valeur sinon, il y a échec
    ou erreur selon le cas
  • X Y réussit si les termes sont identiques (pas
    simplement unifiables)
  • X \ Y réussit si les termes ne sont pas
    identiques

86
3. Listes
Le langage
  • La liste vide
  • Les listes non vides
  • a, b, c
  • a, b, c, d
  • Le constructeur de listes
  • Tete Reste
  • a ? a
  • a, b ? a b ? a b
  • Analogie avec Haskell
  • représentation arborescente

87
Prédicats de base
Le langage
  • Appartenance à une liste member/2

member(X, XYs). member(X, Y Xs)
- member(X,Xs).
_
_
  • Longueur dune liste length/2

length(, 0). length(_ Xs, N1)
- length(Xs, N), N1 is N 1.
88
Prédicats de base (suite)
Le langage
  • Suppression dun élément dune liste efface/3

efface(_, , ). efface(X,XYs,
Ys). efface(X,YYs, YZs) - X \
Y, efface(X,Ys,Zs)
Comment effacer toutes les occurrences dun
élément ?
Write a Comment
User Comments (0)
About PowerShow.com