Cours Logique
Cours Logique
Cours Logique
AUDIBERT Laurent 1
4 mai 2004
Le but de la logique est de calculer des conclusions sûres. Le langage naturel s’avère
trop imprécis et riche pour permettre des développements simples et rigoureux.
La logique est un outil pour parler et raisonner dans un domaine déterminé. Différents
domaines ont différentes logiques. C’est un problème à la fois philosophique et mathéma-
tique que de savoir si une logique donnée est adéquate pour un domaine particulier.
Les logiques classiques (la logique des propositions et la logique des prédicats) ont été
créées pour raisonner sur des objets mathématiques. Comme ces objets sont conceptuelle-
ment assez simple, ces logiques le sont aussi. Tout comme en mathématiques, les systèmes
déductifs de la logique classique se limitent à la formalisation du raisonnement valide.
Un système formel de déduction de la logique classique est composé d’un ensemble de
schémas d’axiomes et de règles d’inférence. Un tel système permet d’inférer des conclusions
à partir de prémisses et définit donc une relation de déduction entre formules, notée ⊢.
Cette relation possède les propriétés suivantes :
– propriété de réflexivité : {p1 , . . . ,pn ,q} ⊢ q ;
– propriété de monotonie : si {p1 , . . . ,pn } ⊢ q alors {p1 , . . . ,pn ,r} ⊢ q ;
– propriété de transitivité : si {p1 ,...,pn } ⊢ r et {p1 ,...,pn ,r} ⊢ q alors {p1 ,...,pn } ⊢ q
.
Dans les expressions ci-dessus, p1 , . . . ,pn ,q et r désignent des formules du langage lo-
gique considéré. Ces propriétés fondamentales traduisent formellement certaines exigences
du raisonnement valide :
– Inférer une conclusion identique à l’une des prémisses est une opération valide ;
– Un résultat acquis n’est pas remis en cause par des résultats ultérieurs ;
– Des résultats intermédiaires peuvent être utilisés pour établir la validité d’une
conclusion.
TABLE DES MATIÈRES 2
2.2.6 Traduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.7 Interprétation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Équivalence des formules bien formées . . . . . . . . . . . . . . . . . . . . 33
2.3.1 Formules équivalentes . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2 Formes prénexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 Travaux dirigés (Logique des prédicats) . . . . . . . . . . . . . . . . . . . . 34
2.4.1 Compréhension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4.2 Traduction I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4.3 Traduction II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4.4 Forme prénexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Annexe 43
Bibliographie 54
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 4
Chapitre 1
1.1 Introduction
Le but initial de la logique est de formaliser certaines relations qui peuvent apparaître
de bon sens. Si je dis la phrase p : « il fait beau et je suis en vacances », cette phrase
sera vraie si les deux propositions q : « il fait beau » et r : « je suis en vacances » sont
vraies toutes les deux. Si l’une des deux est fausse, alors la phrase p sera fausse. Nous
utilisons donc une interprétation intuitive du connecteur et qui nous permet de déterminer
la valeur de vérité d’une phrase contenant deux sous-propositions reliées par et si nous
connaissons la valeur de vérité de chacune des propositions. De même, nous utilisons un
mécanisme semblable pour des phrases contenant les connecteurs ou, donc, . . . , c’est le
principe de compositionalité.
P1 P2 P 1 équivalent à P 2 P 1 donc P 2 P 1 et P 2 P 1 ou P 2
vrai vrai vrai vrai vrai vrai
vrai faux faux faux faux vrai
faux vrai faux vrai faux vrai
faux faux vrai vrai faux faux
Parenthèsage
Explicitez le parenthèsage implicite des formules suivantes :
1. a → b → c
2. a ∨ b ∧ c
3. a ∨ b ∧ c ↔ d → ¬ e ∨ f ∧ g
Simplifiez au maximum le parenthèsage des formules suivantes :
1. (a)
2. ((a ∨ b))
3. ((a) ∧ (b))
4. (¬(a ∨ b))
5. ¬(((a) ∧ b))
6. a ∨ (b ∧ c)
7. (a ∨ b) ∧ c
8. ((a ∧ b) → c)
9. (a ∧ (b → c))
10. ((a ∨ b) ∧ c) ↔ e
11. (((a ∨ b) ∧ c) ↔ e) → f
12. ((a ∧ b) ∨ c) ↔ (e → f )
13. (((a → b) → c) → d)
14. (a ∧ (b ∧ c))
15. (a → (b → c))
1.3.2 Définitions
Définition 1.7 -Valuation- On appelle valuation, ou L-Modèle, d’un ensemble de
variables propositionnelles v ⊆ v(L), une fonction m de v(L) dans { T ,F} (ie. m : v(L) →
{ T ,F}).
L’ensemble des valuations (L-modèles) est noté M (L), ou plus simplement ML .
Définition 1.8 -Sémantique des connecteurs- Soient A et B deux formules, la sé-
mantique des connecteurs est donnée par les tables de vérité représentées dans les tableaux
1.3 et 1.4.
A B A↔B A→B A∧B A∨B
T T T T T T
T F F F F T
F T F T F T
F F T T F F
A ¬A
T F
F T
Définition 1.10 -Modèle d’une formule- Une interprétation I est un modèle d’une
formule ϕ si elle est vrai (si elle vaut T ).
Définition 1.14 -Formules invalides- Une formule invalide est fausse dans au
moins une interprétation.
Définition 1.15 -Formules contingentes- Une formule contingente est vraie dans
certaines interprétations et fausse dans d’autres.
Remarques
Soit une formule bien formée A, on a :
– A valide entraîne A consistante ;
– A inconsistante entraîne A invalide ;
– A est valide si et seulement si ¬A est inconsistante.
Trois cas se présentent pour A :
– soit A est valide (donc consistante) ;
– soit A est invalide mais consistante (i.e. contingente) ;
– soit A est inconsistante (donc invalide).
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 11
Valeur de formules
1. A l’aide d’une table de vérité, étudiez la validité et la consistance des formules que
vous avez trouvées pour l’exercice « Formalisation d’un énoncé » du TD 1.2.2.
2. A l’aide d’une table de vérité, étudiez la validité et la consistance de la formule
suivante :
F = (P ∧ Q → ¬R) ∧ ¬P ∧ R → ¬Q
Traduction
Traduire en formule logique les énoncés suivants, puis étudier leur validité et leur
consistance :
1. Quand on fait de l’alpinisme, on est montagnard ou sportif ;
un montagnard est un sportif ;
donc, quand on n’est pas sportif, on ne fait pas d’alpinisme.
2. Il ne dit rien s’il travaille ou s’il est seul ;
il se repose mais il se tait ;
donc il est seul.
3. Jean ne sort que s’il fait beau ;
or, il pleut ;
donc, Jean reste chez lui.
Démonstration
Montrer que les deux premières équivalences de l’absorption
(A ∨ (¬A ∧ B) ≡ A ∨ B et A ∧ (¬A ∨ B) ≡ A ∧ B) sont justes en utilisant, entre
autres, la distributivité.
Simplification
En utilisant des équivalences de formules, tenter de trouver une forme plus simple pour
les formules suivantes :
1. (a → a) ∨ (a → b)
2. a ∧ (¬a ∨ c)
3. ¬a ∧ (a → b)
4. a ∨ (¬c ∨ (b → c))
5. a ∧ ¬b ∨ b ∧ ¬a → a
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 13
Travail pratique 1
On se propose d’établir la table de vérité des 5 connecteurs logiques que nous avons
vus à l’aide du logiciel Microsoft Excel. Voir la figure 1.1 pour une capture d’écran de la
feuille de calcul correspondant au TP1.
1. Remplir les colonnes B et C du tableau pour obtenir toutes les valuations possibles
de l’ensemble de variables propositionnelles {A,B}.
2. Saisir, dans les cellules de la ligne 3 du tableau, les formules correspondant à nos 5
connecteurs. Par exemple, dans la cellule D3 on saisira = N ON (B3).
3. Faire un copier coller vers les trois lignes au dessous.
Travail pratique 2
On se propose d’établir la table de vérité de la formule
F = (P ∧ Q → ¬R) ∧ ¬P ∧ R → ¬Q
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 14
à l’aide du logiciel Microsoft Excel. Voir la figure 1.2 pour une capture d’écran de la feuille
de calcul correspondant au TP2.
Travail pratique 3
On se propose d’étudier la validité et la consistance de différentes formules. Voir la
figure 1.3 pour une capture d’écran de la feuille de calcul correspondant au TP3.
Le déroulement de ce TP est analogue à celui du TP2. Les colonnes intermédiaires
pour faciliter l’évaluation des formules sont absentes, il faudra donc saisir des formules
plus complexes dans le tableau.
Définitions
On a pu voir (définition 2.16 page 30) qu’une formule est insatisfiable si et seulement
si elle n’a pas de modèle. Cette notion s’étend simplement à un ensemble de formules :
Algorithme de Quine
L’Algorithme de Quine est une amélioration des arbres sémantiques. A chaque nœud
de l’arbre binaire, on réalise une évaluation partielle en prenant en compte tous les atomes
dont la valeur est déterminée. Si cette évaluation permet de conclure directement, on ne
poursuit pas la construction à partir de ce nœud.
Algorithme de réduction
Basée sur un mécanisme de preuve par l’absurde, cette méthode peut être avantageu-
sement utilisée quand la formule comprend de nombreuses implications. Elle consiste à
supposer que la formule initiale est fausse, puis à en déduire les sous-valeurs logiques de
chacune des deux sous-formules placées de chaque côté de l’implication et à réitérer le
processus jusqu’au bout.
Voici un exemple. Soit la formule : ((p ∧ q) → r) → (p → (q → r)). On va supposer
qu’il existe une assignation de p, q, r qui rend cette formule fausse. On en déduit alors :
1. (p ∧ q) → r est assignée à T ;
2. p → (q → r) est assignée à F
A partir de ces éléments, on peut appliquer à nouveau le processus sur (2) ; on obtient
alors que p est T , et enfin que q est T et r est F. Or cette affectation est en contradiction
avec (1). Donc la formule est valide.
Algorithme de réduction
En utilisant l’algorithme de réduction, étudiez la validité de la formule suivante :
F = (A → B) ∧ (B → C) → (A → C)
Définition 1.19 -Forme conjonctive normale- Une forme normal conjonctive est
une conjonction de clauses.
Définition 1.20 -Forme conjonctive normale pure- Une forme normale ne conte-
nant aucune clause valide est dite forme conjonctive normale pure.
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 18
Remarques :
– si une clause Ci, élément d’une forme normale, contient une clause Cj , élément de
la même forme normale, la clause Ci peut être supprimée de la forme normale sans
que son sens ne soit changé ;
– une forme normale vide est valide ;
– une forme normale contenant la clause vide est inconsistante ;
– les formules valides ont une forme normale pure vide ; le test de validité d’une forme
normale est trivial ;
– on réduit classiquement deux clauses opposées (A ∧ ¬A) en ∅, et n’importe quelle
conjonction de clauses avec ∅, par exemple A ∧ ∅, à ∅. La clause ∅ est la seule
clause inconsistante.
Normalisation
Trouver une forme normale conjonctive des formules suivantes :
1. p ∧ q → p ∨ q ;
2. p ∨ q → p ∧ q ;
3. p ↔ (p → r) ;
4. p ↔ (q → r).
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 19
Exemple :
– C1 = ¬M ∨ S, C2 = M ∨ S, la résolvante de C1 et C2 est R = S ;
– C1 = ¬M , C2 = P ∨ M ∨ S, la résolvante de C1 et C2 est R = S ∨ P ;
– C1 = A ∨ B, C2 = ¬B ∨ C ∨ D, la résolvante de C1 et C2 est R = A ∨ C ∨ D ;
– C1 = A ∨ B, C2 = A ∨ C, il n’y a pas de résolvante ;
– C1 = ¬B∨A, C2 = B∨C ∨¬A il y a deux résolvantes pour C1 et C2 , R1 = A∨C ∨¬A
et R2 = ¬B ∨ B ∨ C ; ces deux résolvantes sont des tautologies et n’apportent rien.
Le principe de résolution peut s’avérer très efficace dès lors que l’on sait choisir les
bonnes clauses dans le bon ordre, mais il ne fournit pas, en général, de méthode plus
efficace que les algorithmes vus précédemment.
Application
Nous voulons démontrer que : {p → r, q → r} (p ∨ q) → r.
– D’après le théorème de déduction, l’énoncé précédent se ramène à : {p → r, q →
r, ¬((p ∨ q) → r)} ∅.
– Il nous reste donc à démontrer que {p → r, q → r, ¬((p ∨ q) → r)} est inconsistant.
– En ramenant notre ensemble de clauses en forme normale, nous obtenons : {¬p ∨
r, ¬q ∨ r, p ∨ q, ¬r}.
– Nous allons appliquer le principe de résolution pour démontrer cette inconsistance.
Nous allons numéroter nos clauses
{¬p ∨ r , ¬q ∨ r , p ∨ q , |{z}
¬r }.
| {z } | {z } | {z }
(1) (2) (3) (4)
Remarque
Comme nous l’avons déjà dit, le test de validité d’une forme normale est trivial puisque
les formules valides ont une forme normale pure vide. Mais alors à quoi sert le principe
de résolution? En fait, le principe de résolution est surtout utile en logique des prédicats.
C’est la base du language prolog. Le principe de résolution n’est pas vraiment utile en
logique des propositions.
Comparatif
Soit la formule suivante :
Exercice complet
Traduire l’énoncé suivant dans le formalisme de la logique des propositions, puis étudier
sa validité au moyen de l’algorithme de Quine puis du principe de résolution :
– quand un bateau fait naufrage, cela fait parler les journalistes ;
– les sponsors sont inquiets quand les journalistes parlent et qu’un bateau fait nau-
frage ;
– un bateau fait naufrage ;
– donc les sponsors sont inquiets.
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 21
Définition 1.21 -Clause de Horn- Une clause de Horn est une clause comportant
au plus un littéral positif. Il existe donc trois types de clauses de Horn :
– celles comportant un littéral positif et au moins un littéral négatif, appelées clauses
de Horn strictes ;
– celles comportant un littéral positif et aucun littéral négatif, appelées clauses de
Horn positives;
– celles ne comportant que des littéraux négatifs, appelées clauses de Horn néga-
tives(et dont fait partie la clause vide ∅)
Remarques
– Nous nous permettons ici de remplacer N par (N \ {C}) ∪ R alors que l’algorithme
général demande d’utiliser N ∪ R. Mais dans le cas présent, la clause C est une
conséquence valide de R, et peut donc être omise (deuxième formule équivalente de
l’absorption). Nous engendrons donc bien des conséquences valides de N .
– On remarque que la résolvante R de P et C n’est autre que C \ {¬p}. On supprime
donc à chaque étape un atome dans une clause de N . On est donc certain que l’al-
gorithme aboutit. En ce qui concerne la complexité, il existe un algorithme linéaire
résolvant le problème de la satisfiabilité d’un ensemble de clauses de Horn.
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 22
Exemple de résolution
Nous allons utiliser cette méthode pour démontrer l’inconsistance de :
{¬p ∨ r,¬r ∨ s,p,¬s}
1. Par sélection de p et ¬p ∨ r, l’ensemble se réduit à : {r,¬r ∨ s,p,¬s}.
2. Par sélection de r et ¬r ∨ s, nous obtenons : {r,s,p,¬s}.
3. Enfin, par sélection de s et ¬s : {r,s,p,∅}.
L’ensemble de clauses est bien inconsistant.
Interprétation
Quel est le cadre d’application des clauses de Horn? Ou encore, que peut-on représenter
avec des clauses de Horn?
– Les clauses de Horn positives, par exemple p, sont appelées faits. Il s’agit en effet
de l’énoncé de la vérité logique d’un atome.
– Les clauses de Horn strictes q ∨ ¬p1 ∨ . . . ∨ ¬pn sont équivalentes à {p1 , . . . ,pn } |= q
et représentent des règles du type si . . . alors . . .. Elles permettent de déduire de
nouveaux faits à partir de faits existants.
– les clauses négatives peuvent se comprendre comme des buts à atteindre. Considé-
rons que nous souhaitions prouver {H1 , . . . ,Hn } |= (p ∧ q ∧ r). La partie (p ∧ q ∧ r)
est le but de notre résolution. En appliquant une technique d’inconsistance nous
sommes ramenés à {H1 , . . . ,Hn ,(¬p ∨ ¬q ∨ ¬r)} |= ∅. La clause (¬p ∨ ¬q ∨ ¬r) est
une clause de Horn négative qui modélise donc bien le but à atteindre.
Enquête logique
Trois personnes, Adrien, Béatrice et Christophe, accusées d’un meurtre, déclarent res-
pectivement :
– Béatrice est coupable et Christophe est innocent (Adrien) ;
– si Adrien est coupable, alors Christophe l’est aussi (Béatrice) ;
– je suis innocent, mais au moins l’une des deux personnes est coupable (Christophe).
Utiliser le formalisme du calcul des propositions pour traduire les questions suivantes
et donner la réponse :
1. Les trois déclarations sont-elles compatibles?
CHAPITRE 1. LOGIQUE DES PROPOSITIONS 23
Chapitre 2
Exemple
Par exemple, Socrate, x, y, Carré(x), P lus(x,y), P lus(x,Carré(y)), peuvent être des
termes. Ici Carré est une fonction d’arité 1 qui renvoie le carré de sont argument et P lus
est une fonction d’arité 2 qui renvoie la somme de ses deux arguments.
La définition des formules 1 en calcul des prédicats est très proche de la définition des
formules en calcul propositionnel. Nous commençons par définir les atomes :
Définition 2.3 -Atome- Si p est un symbole de prédicat d’arité n et que t1 ,t2 , . . . ,tn
sont des termes, alors p(t1 ,t2 , . . . ,tn ) est un atome, ou formule atomique.
1. nous parlons ici de formules bien formées, bien entendu.
CHAPITRE 2. LOGIQUE DES PRÉDICATS 26
Exemple
Par exemple, ∀x Inf (x,P lus(x,x)) ou encore ∀x (H(x) → M (x)) sont des formules.
Parenthèsage
De la même manière qu’en logique des propositions, nous accepterons les formules dont
le parenthèsage est partiellement ou complètement implicite. Pour cela, les connecteurs
et les quantificateurs sont traditionnellement classés de la façon suivante (par
priorité décroissante des connecteurs et quantificateurs) : ∀, ∃, ¬, ∧, ∨, →,
↔. Dans le cas où deux connecteurs ont même priorité, et en l’absence de
parenthèse, l’associativité se fait de gauche à droite. Ainsi, ¬∀x A ∨ B doit se lire
((¬(∀x A)) ∨ B).
Termes
Dites si les « écritures » suivantes correspondent à des termes :
1. y
2. c
3. x ∨ a
4. f (x)
5. f (x,a)
6. f (a ∧ b)
7. f (y(a),b)
8. g(h(x),f (x,y),c)
9. f (f (f (f (x))))
CHAPITRE 2. LOGIQUE DES PRÉDICATS 27
Formules atomiques
Dites si les « écritures » suivantes correspondent à des formules atomiques :
1. p
2. p(a)
3. p(x)
4. p(a ∨ b)
5. q(x,y,b)
6. r(f (x))
7. q(g(f (a)),b)
8. p(b) ∨ q(a)
Formules
Dites si les « formules » suivantes sont des formules bien formées :
1. a∨b
2. p
3. p∨r
4. ∀x p(x)
5. ∀x ∨ q(y)
6. ∃x p(x) ∨ q(y)
7. q(x,y,b) → p(x) ∨ p(a) ∧ r
8. ∀b q(x,y,b) → p(x) ∨ p(a) ∧ r
9. ∃y q(x,y,b) → p(x) ∨ p(a) ∧ r
10. ∀z∀x (∃y q(x,y,b) → p(z) ∨ p(a) ∧ r)
Définition 2.5 -Variable liées- L’ensemble des variables liées d’une formule A, noté
B(A), se définit de façon inductive par :
– si A est un atome, B(A) = φ ;
– si A est de la forme (B → C), (B ↔ C), (B ∧ C), (B ∨ C), alors
B(A) = B(B) ∪ B(C) ;
– si A est de la forme (¬B) alors B(A) = B(B) ;
– si A est de la forme (∀x B) ou (∃x B), alors B(A) = {x} ∪ B(B).
Définition 2.6 -Variable libre- L’ensemble des variables libres d’une formule A,
noté F(A), se définit de façon inductive par :
– si A est un atome, F(A) est égal à l’ensemble des variables apparaissant dans A;
CHAPITRE 2. LOGIQUE DES PRÉDICATS 28
Définition 2.7 -Formule close- Une formule A telle que F(A) = φ est dite close,
fermée ou est encore appelée énoncé.
– p(x) ∨ q(y)
– ∀xp(x) ∨ q(y)
– ∀xp(x) ∨ q(y,z)
– ∃z(∀xp(x,z) ∨ q(y,z))
– ∃z(p(x,z) ∨ ∃yq(y,z))
– ∀xp(x) ∨ q(x)
– p(x,y) ∨ p(y,x) ∧ p(x,x) → p(x,y)
– ∀x∀y(p(x,y) ∨ p(y,x)) ∧ p(x,x) → p(x,y)
– ∀x∀y(p(x,y) ∨ p(y,x)) ∧ p(x,x) → ∃x∀yp(x,y)
– ∀x∀y(p(x,y) ∨ p(y,x)) ∧ ∀xp(x,x) → ∃x∀yp(x,y)
CHAPITRE 2. LOGIQUE DES PRÉDICATS 29
2.2.2 Interprétation
Définition 2.10 -Interprétation- Une interprétation d’une formule F est caracté-
risée par la donnée d’un ensemble de définition D non vide, appelé le domaine de l’inter-
prétation et d’une fonction d’interprétation I qui associe :
– à chaque symbole de constante de F , un élément de D ;
– à chaque symbole de fonction f d’arité n de F , le graphe d’une fonction de Dn → D
définissant f ;
– à chaque symbole de prédicat p d’arité n de F , le graphe d’une fonction de Dn →
{ T , F} définissant p.
CHAPITRE 2. LOGIQUE DES PRÉDICATS 30
Définition 2.11 -Interprétation des termes- Soit une formule F et I une inter-
prétation de cette formule. On peut étendre l’interprétation I aux termes de F :
– à chaque symbole de constante, on associe sa valeur selon I ;
– à chaque variable, on associe la variable elle-même ;
– à chaque terme f (t1 , . . . ,tn ), on associe le terme f ′ (t′1 , . . . ,t′n ) où t′1 , . . . ,t′n sont les
interprétations des t1 , . . . ,tn et f ′ est l’interprétation de f .
Définition 2.12 -Interprétation des formules- Elle est définie par :
– si F est un atome p(t1 , . . . ,tn ), I(F ) est la fonction p′ (t′1 , . . . ,t′n ) où p′ est l’inter-
prétation de p et où chaque t′i est l’interprétation de ti ;
– si F est de la forme (¬G), (G → H), (G ↔ H), (G ∧ H), (G ∨ H), I(F ) est définie
par les mêmes lois fonctionnelles que celles définies pour le calcul propositionnel ;
– si F est de la forme ∀xG(x,y1 , . . . ,yn ), pour tout n- uplet (a1 , . . . ,an ) ∈ Di , I(F )(a1 , . . . ,an ) =
T si pour toute valeur a ∈ D, I(G)(a,a1 , . . . ,an ) = T ,
I(F )(a1 , . . . ,an ) = F sinon ;
– si F est de la forme ∃xG(x,y1 , . . . ,yn ), pour tout n- uplet (a1 , . . . ,an ) ∈ Di , I(F )(a1 , . . . ,an ) =
T s’il existe une valeur a ∈ D, I(G)(a,a1 , . . . ,an ) = T ,
I(F )(a1 , . . . ,an ) = F sinon ;
interprétations possibles pour p (table 2.1). Nous pouvons ensuite nous lancer dans la
construction de la table de vérité de A (table 2.2) en prenant en compte les différentes
interprétations possibles de p et de q et les différentes valeurs possibles de y.
Détaillons le calcul des deux premières lignes par exemple. L’interprétation de p utilisé
est I1 et on suppose que l’interprétation de q est T . L’interprétation de p(x) → q est
une fonction d’une variable x et est toujours égale à T d’après l’interprétation I1 . On
en déduit que la formule close ∀x(p(x) → q) s’interprète par la fonction constante T .
L’interprétation de p(y) est une fonction d’une variable y constante égale à T (d’après
I1 ). On en déduit que sous I1 , l’interprétation de la formule A est la fonction d’une variable
constante et égale à T . D’où les deux premières lignes.
On déduit du contenu de la table que la formule n’est pas valide puisqu’il existe
un domaine et une interprétation I (telle que I(p) = I2 (p) et Iq = F) pour lesquels
l’interprétation de A n’est pas la fonction constante T .
En revanche si un ou plusieurs des domaines sont infinis, le problème est tout autre.
On ne peut plus construire de table de vérité et l’on est forcé de tenir des raisonnements
d’ordre général pour démontrer la validité d’une formule (pour démontrer qu’elle n’est
pas valide, il suffit bien sûr d’exhiber un cas où elle est fausse).
Cette particularité rend la théorie des modèles du calcul des prédicats beaucoup plus
délicate à manipuler que la théorie des modèles du calcul propositionnel.
2.2.7 Interprétation
Soit la formule suivante :
F = ∀x∃yp(x,y) → ∃yp(yy)
∀xA(x) → ∃yA(y)
CHAPITRE 2. LOGIQUE DES PRÉDICATS 33
Remarque :
– ⋆ ∀xA(x) ∨ ∀xB(x) 6≡ ∀x(A(x) ∨ B(x)) ⋆
– ⋆ ∃xA(x) ∧ ∃xB(x) 6≡ ∃x(A(x) ∧ B(x)) ⋆
– ¬∃xA ∀x¬A.
5. faire passer les quantificateurs en tête en utilisant les règles de réécriture suivantes
(et en utilisant l’associativité, la commutativité ou le renommage de variable si
nécessaire) :
– (∀xA ∧ B) ∀x(A ∧ B) si B ne contient pas x ;
– (∃xA ∧ B) ∃x(A ∧ B) si B ne contient pas x ;
– (∀xA ∨ B) ∀x(A ∨ B) si B ne contient pas x ;
– (∃xA ∨ B) ∃x(A ∨ B) si B ne contient pas x.
Exemple
Nous allons construire la forme prénexe équivalente à la formule :
2.4.2 Traduction I
En utilisant le prédicat mieux_vaut(x,y) (lire x vaut mieux que y) traduire les énoncés
suivants dans le langage de la logique des prédicats :
2.4.3 Traduction II
Traduire les raisonnements suivants dans le langage de la logique des prédicats :
1. Tous les politiciens parlent à la radio.
Parmi les gens qui parlent à la radio, certains sont des menteurs.
Donc, quelques politiciens sont menteurs.
2. Seuls les oiseaux ont des plumes.
Aucun mammifère n’est un oiseau.
Donc, tout mammifère est dépourvu de plumes.
CHAPITRE 2. LOGIQUE DES PRÉDICATS 35
Chapitre 3
3.1 Présentation
prolog est né d’un pari : créer un langage de très haut niveau, même inefficace au sens
des informaticiens de l’époque. L’efficacité consistait alors à faire exécuter très rapidement
par une machine des programmes écrits laborieusement. Le pari était donc de pouvoir
écrire rapidement des programmes, quitte à ce que la machine les exécute laborieusement.
prolog signifie PROgrammation en LOGique. Le nom du langage est significatif.
Programmer en prolog, c’est exprimer sous forme de relations logiques les différentes
propriétés d’un système. Une fois le problème formalisé, le langage sera, le plus souvent,
capable de fournir les réponses aux questions posées par l’utilisateur en utilisant une
méthode de résolution automatique.
La programmation en prolog est assez différente de la programmation dans un lan-
guage classique. prolog est un language dit déclaratif, en ce sens qu’on ne décrit pas
comme dans les langages traditionnels (dits procéduraux) une méthode (ou algorithme)
de résolution, mais que l’on déclare les propriétés du problème, le système se chargeant
lui-même d’appliquer une méthode de résolution.
Les formules logiques que prolog peut utiliser sont les clauses de Horn de la logique
des prédicats telles que nous les avons décrites au chapitre 1. prolog met en application
les techniques de résolution et d’unification de la logique des prédicats (nous n’avons pas
abordé ces technique pour la logique des prédicats, mais nous avons vu la résolution en
logique des propositions).
prolog a vu le jour en 1971 sur une idée d’Alain Colmerauer qui travaillait alors aux
problèmes de traduction automatique au Groupe Intelligence Artificielle de Marseille-
Luminy. Le premier langage prolog a été créé par Alain Colmerauer avec l’aide de
Philippe Roussel dans le cadre d’un contrat de communication homme-machine.
Nous nous basons pour présenter prolog sur le système swi-prolog
(http://www.swi.psy.uva.nl/projects/SWI-Prolog/).
CHAPITRE 3. PROGRAMMATION LOGIQUE : prolog 37
3.2 Terminologie
L’objet de cette section est de décrire rapidement l’emploi de certains termes dans le
contexte prolog.
Base de faits - On appelle base de fait l’ensemble des faits relatifs au problème que
l’utilisateur formalise en prolog. « Médor est un chien » peut se représenter par
un fait. Formellement, les faits sont des clauses de Horn positives.
Base de règles - On appelle base de règles l’ensemble des règles relatives au problème
que l’utilisateur formalise en prolog. « Un chien est un mammifère » peut se
représenter par une règle. Les règles sont des clauses de Horn strictes.
Question - La question est ce que l’utilisateur demande au système. C’est une clause
de Horn négative.
Moteur d’inférence de prolog - Le moteur d’inférence de prolog est la partie du
système qui réalise les inférences logiques sur les faits et la question posée par
l’utilisateur, de façon à donner une (ou plusieurs) réponses. Il opère sur un ensemble
de faits et de règles, donc un ensemble de clauses de Horn négatives ou strictes. Sur
un plan théorique, le moteur prolog fait une preuve d’inconsistance sur la base de
clauses de Horn.
3.3 Syntaxe
Nous allons ici présenter la syntaxe du swi-prolog de manière informelle et simplifiée.
Les variables - Une variable commence par une majuscule ou le signe « _ ». Par
exemple, X, XA, A123, _a sont des symboles de variables autorisés en swi-prolog
tandis que ab, a1b, r2d2 sont invalides.
Les symboles de prédicats - un symbole de prédicat est un mot commencent par
une minuscule. Il peut avoir des arguments, auquel cas il est suivi d’une parenthèse
ouvrante, de la liste des arguments séparés par des virgules et d’une parenthèse
fermante. Les arguments peuvent être des variables comme X ou des symboles de
constantes comme toto par exemple. Les symboles de fonctions et de constantes
ont la même structure syntaxique que les prédicats, ambiguïté qui peut parfois
porter à confusion. Par exemple, chien(X), toto(A,B,C), truc(fop(X), Y) sont
des utilisations de symboles de prédicats correctes.
Les listes - une liste est une suite d’objets entre « [] » séparés par des « , ». Les paren-
thèses sont utilisées pour délimiter les sous-listes. Par exemple, les listes [a,b,toto,2,]
et [a,(b,c),d,] sont des listes syntaxiquement correctes.
Les faits - Un fait s’écrit predicat_tete.. Un exemple de fait correctement exprimé
est chien(fido). pour signifier que fido est un chien.
Les règles - Une règle s’écrit predicat_tete :- predicat_1, predicat_2 ... Un
exemple de prédicat correctement exprimé est mammifere(X) :- chien(X) .. Ce
prédicat peut signifier « pour tout X, si X est un chien alors X est un mammifère ».
Attention, le signe le signe :-, qui s’écrit souvent -> sur d’autres interpréteurs prolog,
n’est pas un signe d’implication ! Il peut s’interpréter comme un signe de réécriture. En
CHAPITRE 3. PROGRAMMATION LOGIQUE : prolog 38
Complétez la base de faits suivante pour que l’intégralité de l’arbre généalogique soit
représenté :
homme(elton).
homme(gaston).
...
femme(eva).
CHAPITRE 3. PROGRAMMATION LOGIQUE : prolog 39
femme(simone).
femme(magali).
...
parent(elton,edouard).
parent(elton,magali).
parent(eva,edouard).
parent(eva,magali).
...
Dans ce program homme(X) signifie que X est un homme, femme(X) signifie que X est
une femme et parent(X,Y) signifie que X est un parent de Y.
En utilisant la convention d’écriture relation(X,Y) signifiant « X est relation de
Y», établir les règles suivantes :
1. enfant(X,Y) ;
2. fils(X,Y) ;
3. fille(X,Y) ;
4. pere(X,Y) ;
5. mere(X,Y) ;
6. grand_parent(X,Y) ;
7. grand_pere(X,Y) ;
8. grand_mere(X,Y) ;
9. petit_enfant(X,Y) ;
10. petit_fils(X,Y) ;
11. petite_fille(X,Y) ;
12. frere(X,Y) ;
13. soeur(X,Y) ;
14. oncle(X,Y) ;
15. tante(X,Y).
Pensez à tester vos règles au fur et à mesure !
CHAPITRE 3. PROGRAMMATION LOGIQUE : prolog 40
En prolog
Dans un premier temps, on aimerait avoir un programme en prolog qui accepte des
phrases et nous dit si elles sont correctes d’après la grammaire spécifiée.
Si on convient que phrase_correcte(X) signifie X est une liste de mots formant une
phrase syntaxiquement correcte d’après la grammaire spécifiée, alors nous aurions :
?- phrase_correcte([le, chat, mange, la, souris]).
Yes
?- phrase_correcte([le, chat, mange, souris]).
No
Cela pourrait être fait de la manière suivante :
– soit append(X, Y, Z) un prédicat prédéfinie qui est vrai quand la liste Z peut
s’unifier avec la concaténation des listes X et Y ;
– soit syntagme_nominal(X) un prédicat vrai si X est un syntagme nominal ;
– soit syntagme_verbal(X) un prédicat vrai si X est un syntagme verbal.
CHAPITRE 3. PROGRAMMATION LOGIQUE : prolog 41
?- phrase_correcte(P).
Quelles sont vos remarque?
Problèmes
Comme vous l’avez peut-être remarqué, notre programme est fortement perfectible. Il
pose, à l’état actuel, trois problèmes que nous allons essayer de corriger dans les sections
qui suivent.
Problème de performance : notre programme n’est absolument pas performant en
analyse et totalement inutilisable en génération.
Décomposition syntaxique : le programme se contente de dire si une phrase est syn-
taxiquement correcte ou pas, mais dans le cas où une phrase est correcte, il ne donne
pas sa décomposition.
Accords en genre : les accords en genre ne sont pas gérés.
signifiant :
– il y a un syntagme nominal en tête de la phrase Phrase, et
– ce qui reste de la phrase après se syntagme nominal est RestePhrase.
Nous devrions alors avoir :
?- syntagme_nominal([le, chat, mange, la, souris], RestePhrase).
Yes
Par soucis d’homogénéité, toutes nos règles, hormis phrase_correcte(X), serons de
la forme :
règle(Portion, RestePortion)
La règle phrase_correcte(X) qui ferait exactement ce que l’on aimerait pourrait
s’écrire en prolog :
phrase_correcte(X) :-
syntagme_nominal(X, R1),
syntagme_verbal(R1, []).
La liste vide [] dans syntagme_verbal(R1, []) signifie que, pour que X soit une
phrase correcte, il faut qu’il ne reste rien une fois enlevé le syntagme nominal et le syn-
tagme verbal.
Ecrivez la suite du programme en prolog.
Testez votre programme avec les requête suivantes :
?- phrase_correcte([le, chat, mange, la, souris]).
?- phrase_correcte(P).
Yes
La règle phrase_correcte(X) qui ferait exactement ce que l’on aimerait pourrait
s’écrire en prolog :
phrase_correcte(X, ph(TRGN,TRGV)) :-
syntagme_nominal(X, R1, TRGN),
syntagme_verbal(R1, [], TRGV).
CHAPITRE 3. PROGRAMMATION LOGIQUE : prolog 43
Ici ph(TRGN,TRGV) est un terme où ph(x,y) est une fonction à laquelle on passe deux
arguments : la décomposition syntaxique du syntagme nominal (TRGN) et la décomposition
syntaxique du syntagme verbal (TRGV).
Ecrivez la suite du programme en prolog puis testez le.
Annexe A
Parenthèsage
Explicitez le parenthèsage implicite des formules suivantes :
1. a → b → c ≡ ((a → b) → c)
2. a ∨ b ∧ c ≡ (a ∨ (b ∧ c))
3. a ∨ b ∧ c ↔ d → ¬ e ∨ f ∧ g ≡ ((a ∨ (b ∧ c)) ↔ (d → ((¬e) ∨ (f ∧ g))))
Correction TD, Logique des propositions 45
1. Propositions élémentaires :
b ≡ il fait beau ;
h ≡ Jean est heureux.
Hypothèse 1 : H1 ≡ b → h (Quand il fait beau, Jean est heureux )
Hypothèse 2 : H2 ≡ b (il fait soleil )
Conclusion : C ≡ h (Jean est heureux )
Formulation : H1 ∧ H2 → C ≡ (b → h) ∧ b → h
2. Propositions élémentaires :
b ≡ il fait beau ;
h ≡ Jean est heureux.
Hypothèse 1 : H1 ≡ b → h (Quand il fait beau, Jean est heureux )
Hypothèse 2 : H2 ≡ ¬b (il fait mauvais)
Conclusion : C ≡ ¬h (Jean est malheureux )
Formulation : H1 ∧ H2 → C ≡ (b → h) ∧ ¬b → ¬h
3. Propositions élémentaires :
b ≡ il fait beau ;
h ≡ Jean est heureux.
Correction TD, Logique des propositions 46
Valeur de formules
1. A l’aide d’une table de vérité, étudiez la validité et la consistance des formules que
vous avez trouvées pour l’exercice « Formalisation d’un énoncé » du TD 1.2.2.
Premier énoncé : (b → h) ∧ b → h
b h b → h (b → h) ∧ b (b → h) ∧ b → h
F F T F T
F T T F T
T F F F T
T T T T T
Correction TD, Logique des propositions 47
L’énoncé est vrai dans toutes les interprétations (quelques soient les valuations
de b et h), il est donc valide et donc, à fortiori, consistant.
Deuxième énoncé : (b → h) ∧ ¬h → ¬b
b h b → h ¬h (b → h) ∧ ¬h ¬b (b → h) ∧ ¬h → ¬b
F F T T T T T
F T T F F T T
T F F T F F T
T T T F F F T
L’énoncé est vrai dans toutes les interprétations, il est donc valide et donc, à
fortiori, consistant.
2. A l’aide d’une table de vérité, étudiez la validité et la consistance de la formule
suivante :
F = (P ∧ Q → ¬R) ∧ |¬P{z∧ R} → ¬Q
| {z }
F1 F2
vraie.
On en déduit immédiatement la ligne (8).
(d) Il ne reste plus qu’à évaluer de manière classique la ligne (4) de la table de
vérité.
P Q R P ∧ Q ¬R F1 ¬P F2 F1 ∧ F2 ¬Q F
F F F ...... ... .. ... .. ....... ... T (1)
F F T ...... ... .. ... .. ....... ... T (2)
F T F ...... ... .. ... .. ....... ... T (3)
F T T F F T T T T F F (4)
T F F ...... ... .. ... .. ....... ... T (5)
T F T ...... ... .. ... .. ....... ... T (6)
T T F ...... ... .. ... .. ....... ... T (7)
T T T ...... ... .. ... .. ....... ... T (8)
Traduction
Traduire en formule logique les énoncés suivants, puis étudier leur validité et leur
consistance :
1. Quand on fait de l’alpinisme, on est montagnard ou sportif ;
un montagnard est un sportif ;
donc, quand on est pas sportif, on ne fait pas d’alpinisme.
2. Il ne dit rien s’il travaille ou s’il est seul ;
il se repose mais il se tait ;
donc il est seul.
3. Jean ne sort que s’il fait beau ;
or, il pleut ;
donc, Jean reste chez lui.
1. Propositions élémentaires :
A ≡ Faire de l’alpinisme ;
M ≡ Être montagnard ;
S ≡ Être sportif.
Hypothèse 1 : H1 ≡ A → M ∨ S
Hypothèse 2 : H2 ≡ M → S
Conclusion : C ≡ ¬S → ¬A
Formulation : H1 ∧ H2 → C ≡ (A → M ∨ S) ∧ (M → S) → (¬S → ¬A)
Une table de vérité permettra de montrer que cette formule est valide (et donc, à
fortiori, consistante).
2. Propositions élémentaires :
P ≡ Ne pas parler ;
T ≡ Travailler ;
S ≡ Être seul.
Hypothèse 1 : H1 ≡ T ∨ S → P
Hypothèse 2 : H2 ≡ ¬T ∧ P
Conclusion : C ≡ S
Formulation : H1 ∧ H2 → C ≡ (T ∨ S → P ) ∧ (¬T ∧ P ) → S
Correction TD, Logique des propositions 49
Une table de vérité permettra de montrer que cette formule est invalide mais consis-
tante. En fait, elle n’est fausse que dans l’interprétation :
3. Propositions élémentaires :
S ≡ Sortir ;
B ≡ Beau temps.
Hypothèse 1 : H1 ≡ S → B
Hypothèse 2 : H2 ≡ ¬B
Conclusion : C ≡ ¬S
Formulation : H1 ∧ H2 → C ≡ (S → B) ∧ ¬B → ¬S
Une table de vérité permettra de montrer que cette formule est valide (et donc, à
fortiori, consistante).
Démonstration
Montrer que les deux premières équivalences de l’absorption sont justes en utilisant,
entre autres, la distributivité.
– A ∨ (¬A ∧ B) ≡ A ∨ B
≡ (A ∨ ¬A) ∧ (A ∨ B)
≡ T ∧ (A ∨ B)
≡A∨B
– A ∧ (¬A ∨ B) ≡ A ∧ B
≡ (A ∧ ¬A) ∨ (A ∧ B)
≡ F ∨ (A ∧ B)
≡A∧B
Simplification
En utilisant des équivalences de formules (propriété 1.1 page 11), tenter de trouver une
forme plus simple pour les formules qui suivent. Entre parenthèses est précisée la règle
d’équivalence utilisée pour la nouvelle formule. La règle de commutativité, qui intervient
souvent, est généralement non spécifiée.
1. (a → a) ∨ (a → b)
≡ (¬a ∨ a) ∨ (¬a ∨ b) (1re de implication)
≡ T ∨ (¬a ∨ b) (1re de complémentarité)
≡ T (3e de élément neutre)
2. a ∧ (¬a ∨ c)
≡a∧c (2e de absorption)
3. ¬a ∧ (a → b)
≡ ¬a ∧ (¬a ∨ b) (1re de implication)
≡ ¬a (4e de absorption)
Correction TD, Logique des propositions 50
4. a ∨ (¬c ∨ (b → c))
≡ a ∨ (¬c ∨ (¬b ∨ c)) (1re de implication)
≡ ¬c ∨ c ∨ a ∨ ¬b (1re de associativité)
≡ T ∨ a ∨ ¬b (1re de complémentarité)
≡ T (3e de élément neutre)
5. a ∧ ¬b ∨ b ∧ ¬a → a
≡ ¬((a ∧ ¬b) ∨ (b ∧ ¬a)) ∨ a (1re de implication)
≡ (¬(a ∧ ¬b) ∧ ¬(b ∧ ¬a)) ∨ a (1re de Morgan)
≡ ((¬a ∨ b) ∧ (¬b ∨ a)) ∨ a (2e de Morgan)
≡ (¬a ∨ b ∨ a) ∧ (¬b ∨ a ∨ a) (1re de distributivité)
≡ ( T ∨ b) ∧ (¬b ∨ a) (1re de complémentarité et 2e de idempotence)
≡ T ∧ (¬b ∨ a) (3e de élément neutre)
≡ ¬b ∨ a (2e de élément neutre)
F = (P ∧ Q → ¬R) ∧ ¬P ∧ R → ¬Q
Cet algorithme permet de construire l’arbre sémantique partiel représenté sur la figure
A.1. L’explication de la construction est la même que celle de la table de vérité partielle
vue dans le TD 1.3.5 page 48 pour cette même formule. La valeur (1) correspond à l’in-
terprétation partielle {Q = F}. La formule F est donc vrai pour toutes les interprétation
où Q est faux...
Algorithme de réduction
En utilisant l’algorithme de réduction, étudiez la validité de la formule suivante :
F = (A → B) ∧ (B → C) → (A → C)
Correction TD, Logique des propositions 51
On va suppose qu’il existe une assignation de A, B et C qui rend cette formule fausse.
On en déduit alors :
1. (A → B)∧(B → C) est assigné à T et A → C est assignée à F (seule interprétation
qui peut rendre la formule fausse) ;
2. A → C assignée à F implique A = T et C = F ;
3. (A → B) ∧ (B → C) assigné à T implique A → B assigné à T et B → C assigné
à T;
4. A → B assigné à T implique A = F ou B = T , or, d’après (2), A = T , donc on
ne peut avoir que B = T ;
5. B → C assigné à T implique B = F ou C = T , or B = F est en contradiction
avec (4) et C = T est en contradiction avec (2), donc la formule est valide.
Normalisation
Forme normale conjonctive des formules :
1. p ∧ q → p ∨ q,
f.n.c. : ¬p ∨ ¬q ∨ p ∨ q ;
f.n.c.p. sous d’ensemble de clauses : {} ;
2. p ∨ q → p ∧ q ,
f.n.c. : (¬p ∨ q) ∧ (¬q ∨ p) ;
f.n.c.p. sous d’ensemble de clauses : {¬p ∨ q , ¬q ∨ p} ;
3. p ↔ (p → r),
f.n.c. : (¬p ∨ r) ∧ p ;
f.n.c.p. sous d’ensemble de clauses : {¬p ∨ r} ;
Correction TD, Logique des propositions 52
4. p ↔ (q → r),
f.n.c. : (¬p ∨ ¬q ∨ r) ∧ (q ∨ p) ∧ (¬r ∨ p) ;
f.n.c.p. sous d’ensemble de clauses : {¬p ∨ ¬q ∨ r , q ∨ p , ¬r ∨ p} ;
1. F ≡ (A → B) ∧ A → B
¬F ≡ (A → B) ∧ A ∧ ¬B
S¬F = {¬A
| {z∨ B} , |{z} ¬B }
A , |{z}
(1) (2) (3)
Comparatif
Soit la formule suivante :
Exercice complet
Traduire l’énoncé suivant dans le formalisme de la logique des propositions, puis étudier
sa validité au moyen de l’algorithme de Quine puis du principe de résolution :
– quand un bateau fait naufrage, cela fait parler les journalistes ;
– les sponsors sont inquiets quand les journalistes parlent et qu’un bateau fait nau-
frage ;
– un bateau fait naufrage ;
– donc les sponsors sont inquiets.
Enquête logique
Trois personnes, Adrien, Béatrice et Christophe, accusées d’un meurtre, déclarent res-
pectivement :
Utiliser le formalisme du calcul des propositions pour traduire les questions suivantes
et donner la réponse :
Bibliographie
Alliot, J.-M., & Schiex, T. (1994). Intelligence artificielle & informatique théorique.
Cépaduès éditions.
Arcangeli. (1995-1996). Logique formelle et calculabilité. (Cours dispensé à l’Institut Na-
tional des Sciences Appliquées de Toulouse, en seconde année de Génie Informatique
et Industriel)
Hulaas, J. (2002). Les règles grammaticales en prolog. http://cui.unige.ch/~blond/-
Langages/Prolog/Tutorial/6_grammaire.html. (Université de genève)
Nugues, P. (2000a). Informatique linguistique et le langage prolog. (Notes de cours,
ISMRA, 2ème année de Génie Informatique)
Nugues, P. (2000b). La programmation logique et le prolog. (Notes de cours, ISMRA,
2ème année de Génie Informatique)
Siegel, P. (1997-1998). Eléments de logique. (Cours de Diplôme d’Etude Approfondie
dispensé à la faculté des sciences de Luminy)