Title: Logique et Programmation logique
1 Logique et Programmation logique
Librement inspiré du cours de N. Jussien Ecole
des Mines de Nantes
2Introduction
3Classes de langage
- 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,
- 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,
4Une 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
5Historique
- 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
6Plan du cours
- Bases théoriques (rappels de logique formelle)
- Calcul propositionnel
- Calcul des prédicats
- Le langage PROLOG
7Rappels de Logique
- 1. Calcul propositionnel
- 2. Calcul des prédicats
81. 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
9Syntaxe 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
10Sé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
11Tables 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
12Formules 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
14Caté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
15Formules 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)
16Quelques é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 ?)
17Formes 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
18Formes 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
19Aspects déductifs
Calcul propositionnel
- notion de conséquence logique
- notion de démonstration
- notion de règles de déduction
20Consé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
21Systè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
23Quelques 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
24Un 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.
27Etude 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
28Suite 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.
29Proprié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
30Une 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
31Validité 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
32Proprié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
33Ce 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
342. 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
35Limites 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
36Une 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
37Syntaxe
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
38Vocabulaire
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é
39Formules
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)
40Occurrence 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
41Occurrence 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
42Caracté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
43Aspects 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
44Vers 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
45Exemple 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
46Modè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
47Preuve 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
48Toutes 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
49Transformation 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
50Mise 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
51Transport des quantificateurs
Calcul des prédicats
52Inversion de ? et de ?Skolemisation
Calcul des prédicats
- Lorsquon a
- on remplace y par une fonction g qui à x associe
y
53Une 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
54Univers 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?
55Thé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
56A 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
57Ré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
58Ré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
59Forme clausale
Calcul des prédicats
60Validation 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
61Mise en uvre
Calcul des prédicats
? clause vide
QED
62Ré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
63Analysons 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
64Proprié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
65Programmer 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)
66Programmer 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
67Programmer 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
68Le 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
691. 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
70Univers 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
71Syntaxe 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).
72La 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).
73Premiè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
74Lien 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
77PROLOG
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
78Retour 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
79Quelques 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
80Ré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
81PROLOG 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
822. 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
83Opé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
84Exemple 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).
85Attention
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
863. 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
87Pré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.
88Pré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 ?