Académique Documents
Professionnel Documents
Culture Documents
- Pourquoi l’utilisation des tables des vérités n’est pas pratique pour le calcul des vérités en logique
propositionnelle ?
Car explosion combinatoire : 2n
- Qu’est ce qu’une forme normale conjonctive ? Expliquer la skolemisation en logique du 1 er ordre.
Conjonction de clauses. Une clause est conjonction de littéraux. Un littéral est un atome positif ou
négatif
Skolémisation est un processus qui transforme une phrase en une forme conjoctive sans
quantificateurs ( élimination de il existe par remplacement de fonction, « quelque » soit reste
implicite
Exercice 1 : Dire (en justifiant) si raisonnement suivant est correct ou pas ?
1)
Skolem
P(a) (D( y) L(a,y))
P(x) Q(y) L(x,y)
D(x) Q(x)
Clauses :
P(a)
D( y) L(a,y)
P(x) Q(y) L(x,y)
D(x) Q(x)
2)
H3 est une conséquence logique de H1 et H2 (car la négation de H3 se traduit par 2 clauses D(b) et Q(b))
Avec la résolution :
P(x) L(x,b) ( effacement Q(b) et Q(y) {y=b})
L(a,b) (effacement de de D(b) et D(b) {y=b})
P(a) (effacement de de L(a,b) et L(x,b) {x=a})
Vide (effacement de P(a)
3) Prolog
p(a).
l(a,y) :-d(y).
:- p(x),q(y),l(x,y).
:-d(x),q(x).
Exercice 4 :
a) Traduisez les énoncés suivants en logique du premier ordre. Numérotez vos formules.
1. Les fruits sont des aliments périssables (pas éternelles).
2. Une pomme est un fruit.
3. L’objet pom1 est une pomme.
4. Les aliments périssables doivent être mangés avant d’être expirés ou jetés.
5. pom1 est expirée.
b) Convertissez les formules obtenues en (a) sous forme clausale.
c) Prouvez l’affirmation «pom1 doit être jetée».
a)
1. ∀x, fruit(x) → perissable(x)
2. ∀x , pomme(x) → fruit(x)
3. pomme(pom1)
5. expire(pom1)
b)
1. ¬fruit(x1) ∨ perissable(x1)
2. ¬pomme(x2) ∨ fruit(x2)
3. pomme(pom1)
6. expire(pom1)
c)
Commencez par écrire la négation de l’énoncé à prouver. Numérotez cette nouvelle clause en continuant
la numérotation utilisée en (b). Ensuite, utilisez la technique de résolution. À chaque étape, indiquez les
numéros des deux clauses utilisées et l’unificateur (substitution de variables) requis. Rappel : le but est
d’obtenir une clause vide (une contradiction).
7. ¬jette(pom1) – – – –
12. vide // Clauses 7 et 11 avec l’UPG {} Nous avons montré une contradiction. Donc, pom1 doit être
jetée. 2 sur 7
Exercice 5 : Soit le programme Prolog suivant :
oiseau(pigeon). %fait : F1
oiseau(hirondelle). %fait : F2
carnivore(loup). %fait : F3
carnivore(lion). %fait : F4
animal(lion). %fait : F5
animal(X) :-oiseau(X). %fait : R1
manger(X,Y) :-carnivore(X),animal(Y), X\=Y. %fait : R2
1)
Les pigeons et les hirondelles sont des oiseaux
Les loups et les lions sont des carnivores
Les lions et les oiseaux sont des animaux
Les carnivores mangent les animaux qui ne sont pas des carnivores
2)
Par unification : manger(lion, Y) = manger(X,Y) / X= lion, Y = ?
On applique R2 : on doit vérifier carnivore(lion) et animal(Y), Y \= lion.
H1 y P(a) D( y) L(a, y)
A partir F4 : carnivore(lion) est vrai, il reste à vérifier animal(Y) tel que Y \= lion.
A partir R1 : on doit vérifier oiseau(X).
A partir F1 et F2 X= pigeon et X= hirondelle.
Donc :
Y=pigeon
Y=hirondelle
3)
Arbre de résolution
OK
4)
Très simple, remplacez X par lion dans la réponse précédente. On annule la branche F5 car
Y \= lion.
Exercice 6 : Définir deux prédicats en Prolog: l’un affiche les nombres de 1 à N par ordre croissant, l’autre
par ordre décroissant (utiliser le prédicat write(X) pour afficher X).