Professional Documents
Culture Documents
Smantique Procdurale
Kaninda Musumbu
1 Dpartement
K Musumbu
Langage PROLOG
Typage dynamique
Objectif Pour tester quelle catgorie appartient un terme, on utilise les prdicats prdnis suivants atom/1 : atom(X), atom(toto), var/1 :var(X), var(_), nonvar/1 : nonvar(x), nonvar(1), integer/1, float/1, ou number/1 atomic/1 : atomic(louis14), atomic(12). compound/1 compound(f(a,b)), compound(parent(louis13,X)).
K Musumbu
Langage PROLOG
Arithmtique en Prolog
Oprateurs manipuleent les expression arithmtiques : Expr1 = := Expr2 russit si les valeurs des deux expressions numriques sont gales. Expr1 == Expr2 russit si les valeurs des deux expressions atomiques sont gales. Expr1 =\= Expr2 russit si les valeurs des deux expressions numriques sont diffrentes. Expr1 \== Expr2 teste lingalit des deux expressions atomiques sont diffrentes. Expr1 < Expr2 russit si les valeurs Expr1 est strictement infrieure celle de Expr2. Expr1 =< Expr2 russit si la valeur de Expr1 est infrieure ou gale celle de Expr2. Expr1 > Expr2 russit si ls valeurs Expr1 est strictement suprieure celle de Expr2.
K Musumbu Langage PROLOG
Arithmtique en Prolog
Remarque Pour chacun de ces prdicats, si une des deux expressions nest pas valuable Prolog retourne un message derreur.
K Musumbu
Langage PROLOG
Prdicat is/2
R is Expr russit si Expr sunie avec R. ce prdicat sert gnralement laffectation dune variable Exemple X is 2+3 = X == 5 X is Y+1 = X == Y + 1, si Y est li sinon erreur Attention 2+3 is 5 choue. Pourquoi ?
K Musumbu
Langage PROLOG
Prdicat is/2
K Musumbu
Langage PROLOG
Smantique Procdurale
Principe le moteur de rsolution vue comme une bote noire : reoit en entre une question et produit en sortie soit un chec soit un succs constitu par un ensemble de substitutions. on ne peut pas calculer MP par lapproche ascendante : car trop couteux, voire inni. En revanche, on utilise une approche descendante, dite en chanage arrire.
K Musumbu
Langage PROLOG
Backtracking
Principe Lorsque Prolog ne peut pas trouver de clause pour rcrire T1 il backtrack pour explorer un autre chemin de rsolution. Il le fait aussi lorsquil a obtenu une rsolvante vide (une solution) pour fournir les autres solutions potentielles.
K Musumbu
Langage PROLOG
K Musumbu
Langage PROLOG
Une question est une rsolvante (conjonction de termes). La cardinalit dune rsolvante est le nombre de termes qui la compose. La rgle T :- Q. tablit que T peut tre remplac par Q. et T. se remplace par Prolog fonctionne de gauche droite et en profondeur dabord Il choisit donc de rcrire le terme T1 et place sa rcriture en tte de la nouvelle rsolvante La substitution i obtenue pour unier T1 avec la tte de la rgle choisie est applique Ri +1
K Musumbu
Langage PROLOG
Structure rcursive
Traitement La dnition rcurrente des listes conduit une analyse en deux cas : liste vide et liste non vide une dcomposition premier/n . La n dune liste correspondant la liste prive de son premier lment.
K Musumbu
Langage PROLOG
Manipulation de liste
K Musumbu
Langage PROLOG
Remarque Prolog backtrack automatiquement quand cest ncessaire pour satisfaire un but. Ce concept libre le programmeur de devoir explicitement dcrire au systme le retour arrire. Le fait de nest pas contrl le backtracking, peut rendre le programme inefcace.
K Musumbu
Langage PROLOG
Exemple Soit le prdicat qui tablit la relation entre la concentration de polluant et le niveau dalerte. niveau(X, normal) :- X < 3. /* regle 1 */ niveau(X, alert1) :- X >=3, X < 6. /* regle 2 */ niveau(X, alert2) :- X >= 6. /* regle 3 */ Considrons le but ?-niveau(2,Y), Y= alert1.
K Musumbu
Langage PROLOG
:::-
Considrons le but ?-niveau(2,Y), Y= alert1. Comment se comporte la dernire version du programme pour ?-niveau(7,Y).
K Musumbu Langage PROLOG
Simplication On obtient une version correcte et efcace en supprimant les conditions dont on est certain quelles sont vraies. Exemple niveau(X, normal) niveau(X, alert1) niveau(X, alert2). ::X < 3, ! . X < 6, ! . /* regle 1 */ /* regle 2 */ /* regle 3 */
K Musumbu
Langage PROLOG
Intrt contrle dynamique du bactrack PROLOG. affecte le comportement procdural des programmes : lagage dynamique de larbre de recherche. efcacit accrue des programmes, le cut empche de remettre en cause tous les choix qui ont t faits avant. n affecte en rien la faon dont sont rsolus les butes aprs le cut. le cut est un prdicat qui russit toujours et qui ne russit quune fois.
K Musumbu
Langage PROLOG
Exercices
Soit P , le programme suivant : p(1). p(2) :- !. p(3). Donner toutes les rponses de Prolog selon les questions suivantes :
1 2 3
K Musumbu
Langage PROLOG
K Musumbu
Langage PROLOG
Exemple
K Musumbu
Langage PROLOG
K Musumbu
Langage PROLOG
Exemple FAITS adjacent(1,2). adjacent(1,3). adjacent(1,4). adjacent(1,5). adjacent(4,5). REGLES adjacent(X,Y) :- adjacent(Y,X). adjacent(2,3). adjacent(2,4). adjacent(3,4).
K Musumbu
Langage PROLOG
K Musumbu
Langage PROLOG
Dnition 1 Un automate ni A = (, Q , qo , F , ), correspond un graphe orient, dans lequel certains des noeuds (tats) sont distingus et marqus comme initial ou naux et dans lequel les arcs (transitions) sont tiquets par des symboles de . Si (q , a) = r on dit que a est ltiquette de la transition (q , r ). Dnition 2 Un automate est une machine qui change dtats sous leffet de transitions.
K Musumbu
Langage PROLOG