Le langage Prolog les variables

Les variables

Une variable (ou inconnue) peut remplacer n’importe quel terme Prolog.
variable instanciee a un terme : la variable a pour valeur ce terme.
variable libre : la variable n’est instanciee a aucun terme.
variables liees : des variables libres peuvent ^etre liees entre{ elles : des que l’une d’entre elles sera instanciee a un terme, les autres variables qui lui sont liees le seront aussi.
& enib c jt . . . . . . . . 16/96

Les termes Prolog

Exemples de variables
variable
[ A-Z][ a-zA-Z0-9]*
X
Nom compose
& enib c jt . . . . . . . . 17/96
Atomes : un atome (constante symbolique) permet de represen-ter un objet quelconque par un symbole.
Les termes composes
Un terme compose permet de decrire des donnees structurees.
Un terme compose (exemple : date(25,mai,1988)) est cons-titue
{ d’un atome (date)
{ d’une suite de termes (arguments : (25,mai,1988) ); le nombre d’arguments (3) est appele arite
Le couple atome/arite (date/3) est appele foncteur du terme compose correspondant.
& enib c jt . . . . . . . . 19/96
Exemples de termes composes
Foncteur Terme compose
date/3 date(25,mai,1988)
’etat-civil’/3 ’etat-civil’(’ac’’h’,luc,date(1,mars,1965))
c/2 c(3.4,12.7)
c/4 c(a,B,c(1.0,3.5),5.2)
parallele/2 parallele(serie(r1,r2),parallele(r3,c1))
list/2 list(a,list(b,list(c,’empty list’)))
Terme compose Structure de donnees
Une che d’etat civil en Prolog
% Structures de donnees
% etat civil(Nom,Prenom,Nationalite,Sexe,Date)
% date(Jour,Mois,Annee)
% adresse(Rue,Ville,Code postal)
% Base de donnees
% individu(Etat civil,Adresse)
individu(
etat civil(’Ngaoundere’,’Richard’,camerounaise,masculin, date(15,’Fevrier’,1960)),
adresse(’4 rue Leclerc’,’Brest’,29200)
).
& enib c jt . . . . . . . . 24/96

Les entiers naturels

Le vocabulaire initial de la theorie des entiers naturels comprend:
une constante z qui represente l’entier 0 (zero)
une fonction unaire s(X ) qui traduit la notion de successeur d’un entier X
un predicat unaire entier(X ) (X est un entier)
z 2 N et 8x 2 N ; s(x) 2 N
& enib c jt . . . . . . . . 25/96
Les entiers naturels en Prolog

Definition/Generation :

z 2 N et 8x 2 N ; s(x) 2 N
entier(z).
entier(s(X)) :- entier(X).
Addition/Soustraction :
8x 2 N ; x + z = x
8x; y 2 N ; x + s(y) = s(x + y)
plus(X,z,X).
plus(X,s(Y),s(Z)) :- plus(X,Y,Z).
& enib c jt . . . . . . . . 26/96

LIRE AUSSI :  Cours Prolog prise en main

Ma premiere liste

Une liste est une suite ordonnee de termes.
Appartenance a une liste
dans(T,l(T, )).
dans(T,l( ,Q)) :- dans(T,Q).
?- dans(X,l(a,l(b,l(c,0)))).
X = a;
X = b;
X = c;
no more solution
& enib c jt . . . . . . . . 28/96

Classication des termes

atom(T) T est un atome
atomic(T) T est un terme atomique
compound(T) T est un terme compose
float(T) T est un reel
integer(T) T est un entier
nonvar(T) T n’est pas une variable libre
number(T) T est un nombre
var(T) T est une variable libre
& enib c jt . . . . . . . . 29/96

Unification de termes

mise en correspondance d’arbres syntaxiques
Terme1 = Terme2
Comparaison de termes
ordre lexicographique
Terme1 == Terme2
Terme1 \== Terme2
Terme1 @< Terme2
Terme1 @=< Terme2
Terme1 @>= Terme2
Terme1 @> Terme2
& enib c jt . . . . . . . . 31/96

Inspection de termes

acces a la structure interne des termes
arg(N, T, X) X est le Nieme argument du terme T functor(T, A, N) T est le terme de foncteur A/N
& enib c jt . . . . . . . . 32/96

Termes de base

Un terme est dit de base si
1. c’est un terme atomique
2. c’est un terme compose dont tous les arguments sont des termes
de base
base(T) :- atomic(T).
base(T) :- compound(T), functor(T,F,N), base(N,T).
base(N,T) :- N > 0, arg(N,T,Arg), base(Arg), N1 is N-1, base(N1,T).
base(0,T).
& enib c jt . . . . . . . . 33/96

Les operateurs en Prolog

Un operateur permet une representation syntaxique simpliee d’un terme compose, unaire ou binaire.
en notation pre xee
en notation post xee
en notation in xee
~ X ~(X) X : :(X)
X + Y +(X,Y)
Aucune operation n’est a priori associee a un operateur.

Programmation en logique
Les termes Prolog
La machine Prolog
Controle de la resolution
Predicats predenis
Bibliographie

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *