300 likes | 776 Views
Programmation logique. Lakhdar Saïs CRIL, Université d ’Artois sais@cril.univ-artois.fr http://www.cril.univ-artois.fr/~sais Maîtrise d ’informatique 2002/2003. Rappel de logique pour prolog. Logique des propositions Logique des prédicats Unification. Logique des propositions. Syntaxe
E N D
Programmation logique Lakhdar Saïs CRIL, Université d ’Artois sais@cril.univ-artois.fr http://www.cril.univ-artois.fr/~sais Maîtrise d ’informatique 2002/2003
Rappel de logique pour prolog • Logique des propositions • Logique des prédicats • Unification
Logique des propositions • Syntaxe On définit : • Les propositions : a, b, c, … • Les constantes : V et F • Les connecteurs : • (conjonction) • (disjonction) • (négation) • (implication) • (équivalence)
Construction d’une formule • Une proposition est une formule • Si a et b sont des formules, alors a, a b, a b, ab et a b sont des formules
Logique des propositions Sémantique • Les formules sont interprétées dans {V,F} • On définit l’interprétation associée à chaque connecteur grâce aux tables de vérité
Propriétés des formules • Une formule est valide si elle est toujours vraie (quelque soit l’interprétation) • Une formule est consistante s’il existe une interprétation dans laquelle elle est vraie. Elle est inconsistante dans le cas contraire • Problème : étant donnée une formule, est-elle valide ? consistante ? • Exemple : que dire de la formule (a b) (b a)
Règles de transformation (1) • aa (loi du tiers exclu) • ((ab) a) b (modus ponens) • ((a b) b) a (modus tollens) • (a b) (b a) (contraposition) • a a (double négation) • a ba b • a b (a b) (b a) • aa aa a (idempotence)
Règles de transformation (2) • Lois de Morgan : • (ab) a b • (ab) a b • Commutativité et associativité de et • Distributivité de par rapport à et de par rapport à
Une énigme policière • Un meurtre a été commis au laboratoire, le corps se trouve dans la salle de conférences… • On dispose des informations suivantes : • La secrétaire déclare qu’elle a vu l’ingénieur dans le couloir qui donne sur la salle de conférences • Le coup de feu a été tiré dans la salle de conférences, on l’a donc entendu de toutes les pièces voisines • L’ingénieur affirme n’avoir rien entendu • On souhaite démontrer que si la secrétaire dit vrai, alors l’ingénieur ment
Formalisation en calcul des propositions • p: la secrétaire dit vrai • q : l’ingénieur était dans le couloir au moment du crime • r : l’ingénieur était dans une pièce voisine de la salle de conférences • s : l’ingénieur a entendu le coup de feu • t : l’ingénieur dit vrai
Résolution de l’énigme • Les informations de l’énoncé se traduisent par les implications : pq, q r, r s, t s • Il s’agit de prouver la validité de la formule : (p q q r r s t s) (p t)
Démonstration (p q q r r s t s) (p t) • La formule ne peut être fausse que si • (p t) est faux, soit p et t vrais • la prémisse est vraie, soit toutes les implications vraies • Comme t doit être vrai, s doit être faux, donc r faux, donc q faux, donc p faux, et il y a contradiction
Logique des prédicats • Syntaxe On définit : • Les constantes : V et F • Les connecteurs : , , , • Les variables : x, y, z, … • Les fonctions : f, g, h, … • Les prédicats : p, q, r, … dont ceux d’arité 0 : a, b, c, … • Les quantificateurs : ", $
Définitions • Terme : • Une variable est un terme • Une constante est un terme • Si t1, t2, …, tn sont des termes, alors f(t1,t2,…,tn) est un terme • Atome : • Si t1, t2, …, tn sont des termes, alors p(t1,t2,…,tn) est un atome humain(socrate) X tom mere(tom)
Construction d’une formule • V, F sont des formules • Un atome est une formule • Si F1 et F2 sont les formules, alors F1, F1F2, F1F2, F1 F2 sont des formules • Si F est une formule, x F et x F sont des formules • Remarque : la logique des propositions est un cas particulier de la logique des prédicats humain(socrate) X. humain(X) mortel(X)
Exemples de formules valides • "xA $x A • "x A $x A
Définitions • Littéral • Un atome est un littéral (positif) • La négation d’un atome est un littéral (négatif) • Une clause est une formule qui a la forme d’une disjonction de littéraux • Une clause concrète est une clause sans variable • Une clause de Horn est une clause comportant au plus un littéral positif • On peut toujours transformer une formule en un ensemble de clauses
Principe de résolution • C’est une règle d’inférence qui s’applique aux clauses • Principe sur des clauses concrètes : • G = G1 G2 … Gn • H = G1 H2 … Hm • K = G2 … Gn H2 … Hm • K est le résolvant de G et H • G1 et G1 sont des littéraux complémentaires
Cas particuliers • P et P Q se résolvent en Q (modus ponens) • G H et H K se résolvent en G K (enchaînement) • Q et P Q se résolvent en P (modus tollens)
Utilisation • Le principe de résolution est une règle d’inférence saine, i.e. tout résolvant est une conséquence logique des deux clauses parentes • Pour appliquer le principe de résolution à des clauses non concrètes, on définit l’unification, afin de rechercher des littéraux complémentaires
Unification • Deux termes t1 et t2 sont unifiables s’il existe une substitution s des variables de t1 et t2 telle que s(t1) = s(t2) • Exemples : • pere(X,jean) s’unifie avec pere(Y,Z) si X|Y et jean|Z • pere(jean,mere(X)) s’unifie avec pere(Y,mere(pierre) si jean|Y et X|pierre
Exemple 1 • Les barbiers rasent tous ceux qui ne se rasent pas eux-mêmes • Aucun barbier ne rase quelqu’un qui se rase lui-même • Le barbier se rase-t-il lui même ? • Montrons que si les deux premières assertions sont vraies, alors il ne peut y avoir de barbier
Formalisation • barbier(X) rase(Y,Y) rase(X,Y) i.e. barbier(X) rase(Y,Y) rase(X,Y)(1) • barbier(X) rase(Y,Y) rase(X,Y) i.e. barbier(X) rase(Y,Y) rase(X,Y)(2) • barbier(b) (3) • On veux montrer (1) (2) (3), i.e. réfuter (1) (2) (3)
Résolution • (3) et (1) se résolvent en (4) : rase(Y,Y) rase(b,Y), i.e. rase(b,b) • (3) et (2) se résolvent en (5) : rase(Y,Y) rase(b,Y), i.e. rase(b,b) • (4) et (5) se résolvent en la clause vide
Résolution + Unification: Exemple 2 1. sélectionner un littéral 1.)X prendre_parapluie(X) pleut(X) 2.) pleut(paris) 1’.) prendre_parapluie(paris) pleut(paris) 2’.) pleut(paris) 1’+2’) prendre_parapluie(paris) 2. Renommage non nécessaire 3. Pgu = {X / paris} 4. appliquer 5. résolution
Résolution & prolog question 1) connaît_logique(X) bon_etudiant(X) enseignant(Y,X) logicien(Y) 2) bon_etudiant(david) 3) logicien(michel) 4) enseignant (michel,david) • connaît_logique(Z) • bon_etudiant(X)enseigant(Y,X) logicien(Y) • enseignant(Y,david) logician(Y) • logicien(michel) • {Z/X} {X/david} {Y/michel} Réponse = {Z/david} connaît_logique(david) {}
Backtracking • connait_logique(Z) • bon_etudiant(X)enseignant(Y,X) logicien(Y) • enseignant(Y,cécile)logicien(Y) • enseignant(Y,david) logicien(Y) • logicien(michel) • 1) connait_logic(X)bon_etudiant(X) enseignant(Y,X) logicien(Y) 2) bon_etudiant(cécile) 3) bon_etudiant(david) 4) logicien(michel) 5) enseigant(michel,david) Retour arrière ! Pour essayer une autre clause
Suite à vos cahiers • Description de la résolution prolog • un premier programme prolog