Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Programmation
Logique
Enseignant: Arous Mokdad
Niveau: 3eme Année Informatique
2016/2017
Sémantique des
Programmes Prolog
1. Mécanisme utilisé pour
répondre à une question
A partir d'un programme Prolog P on peut déduire un
ensemble des atomes logiques qui sont des conséquences
logiques de P.
Cet ensemble peut être "calculé" par une approche
ascendante, dite en « chaînage avant » .
On part des faits, et on applique itérativement toutes les
règles conditionnelles pour déduire de nouvelles relations
..., jusqu'à ce qu'on ait tout déduit.
La réponse de Prolog à une question est l'ensemble des
instances de cette question qui font partie de la
dénotation.
1. Mécanisme utilisé pour
répondre à une question
D'une façon générale, on ne peut pas calculer l'ensemble
des conséquences logiques d'un programme par
l'approche ascendante.
Ce calcul serait trop coûteux, voire infini.
En revanche, on peut démontrer qu'un but (composé
d'une suite d'atomes logiques) est une conséquence
logique du programme, en utilisant une approche
descendante, dite en chaînage arrière.
La sémantique de Prolog est donc basée sur une
approche descendante de calcul : le chaînage arrière
(backward chaining).
1. Mécanisme utilisé pour
répondre à une question
Prolog est basé sur deux grands mécanismes:
Le chaînage arrière est le fait de partir du but
recherché, de rechercher les règles dont le but est la
conclusion, puis, en prenant les conditions de ces règles
comme nouveaux sous buts, recommencer la recherche
récursivement. Ensuite, il ne reste plus qu'à unifier les
faits trouvés avec le but recherché.
L'unification est le fait d'essayer de rendre deux
assertions identiques (un fait et une tête de règle en
général) en donnant des valeurs aux variables qu'elles
contiennent.
1. Mécanisme utilisé pour
répondre à une question
L'unification
L'unification est une opération de base dans un
programme logique.
Pour pouvoir appliquer la règle de résolution à deux
clauses, il est nécessaire de savoir si deux ou plusieurs
formules atomiques peuvent être unifiées, c-à-d s'il existe
une substitution des variables de ces formules par des
termes du langage qui permettent de les rendre égales.
L'unification représente le processus par lequel tout
langage logique met en correspondance un atome avec
un fait, où la tête d'une règle pour vérifier le but proposé.
1. Mécanisme utilisé pour
répondre à une question
L'unification
Exemple :
f(X, s) et f(a,Y) sont unifiable en substituant X par a et Y par
s, et en obtenant le même terme f(a,s).
f(X1, X1) et f(a,b) ne sont pas unifiables.
1. Mécanisme utilisé pour
répondre à une question
L'unification
Prolog tente de faire correspondre la question avec les
faits disponibles.
Si un fait s'accorde avec la question alors les variables de
la question prennent les valeurs nécessaires.
On dit que l'on unifie la question avec le fait et que les
variables sont instanciées.
Cette instanciation se fait par construction d'une
substitution qui est un ensemble des couples (variable,
valeur), généralement représenté sous la forme {(Var1,
Val1), ..., (Varn = Valn)}.
1. Mécanisme utilisé pour
répondre à une question
L'unification
Les règles pour décider si deux atomes logiques
sont unifiables sont les suivantes :
deux termes atomiques sont unifiables s’ils sont identiques,
une variable libre (non instanciée) s’unifie toujours en s’instanciant à
l’autre terme,
une variable instanciée se comporte comme son terme,
l’unification de deux variables libres les lie,
toutes les variables liées ne peuvent s’instancier qu’au même terme.
deux termes composés s’unifient composant à composant, c.à.d. un
terme composé va unifier avec un autre terme composé de même
foncteur et même nombre d'arguments, et tous les arguments
correspondants doivent unifier.
1. Mécanisme utilisé pour
répondre à une question
L'unification
Unifiables
Termes 1 Terme 2 Substitution commentaire
?
aa aa
Oui {}
1980 1980 Deux termes atomiques sont unifiables
papier crayon s'ils sont identiques.
Non /
2016 2006
Exemple 01:
Prenons l’exemple du calcul de la multiplication d’un
entier naturel X par un entier Y par additions successives
(Multiplication Egyptienne).
3. Signification opérationnelle
Exemple 01:
Prenons l’exemple du calcul de la multiplication d’un
entier naturel X par un entier Y par additions successives
(Multiplication Egyptienne).
Exemple 02:
Prenons le programme Prolog suivant :
s(a). p(X,Y) :- q(X),r(X,Y).
s(b). q(X) :- t(X).
r(a,b). q(X) :- s(X).
r(b,c). t(e).
r(c,b).
={(X,A), (Y,B)}
q(A), r(A,B)
={(X,A)} ={(X,A)}
succès succès
3. Signification opérationnelle
?- p(A,B).
A=a
B=b ;
A=b
B=c