Vous êtes sur la page 1sur 50

INFO202 : Fondements mathématiques de

l’Informatique

Étienne KOUOKAM

Année académique 2016-2017


Table des matières

Partie I Logique 4

Chapitre 1 : Systèmes formels 6


1.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Ensembles récursifs et récursivement énumérables . . . . . . . . . . . 6
1.3 Systèmes formels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Définitions supplémentaires . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Résultats généraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Chapitre 2 : Logique propositionnelle 10


2.1 Première approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Sémantique dans le calcul des propositions . . . . . . . . . . . . . . . 13
2.3.1 Puissance d’expression . . . . . . . . . . . . . . . . . . . . . 14
2.3.2 Bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Formules et interprétations . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Arbres sémantiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Algorithme de réduction . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.1 formes duales . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6.2 formes normales . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6.3 Algorithme de normalisation . . . . . . . . . . . . . . . . . . 20
2.6.4 Foncteur booléen associé à une formule . . . . . . . . . . . . 22
2.6.5 Formes clausales . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.6 Méthode de résolution de Robinson . . . . . . . . . . . . . . . 24
2.6.7 Méthode de résolution sémantique . . . . . . . . . . . . . . . . 25
2.7 Système de preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Chapitre 3 : Logique des prédicats 29


3.1 Calcul des prédicats, le point de vue formel . . . . . . . . . . . . . . 29
3.1.1 Sous-formules d’une formule . . . . . . . . . . . . . . . . . . . 31
3.1.2 Variables libres ou liées . . . . . . . . . . . . . . . . . . . . . . 31
3.1.3 Standardisation des variables . . . . . . . . . . . . . . . . . . 32
3.2 Sémantique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Substitution et instanciation . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 Substitution d’une variable par un terme . . . . . . . . . . . . 34
3.4 Unification (de deux formules) . . . . . . . . . . . . . . . . . . . . . . 35

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


TABLE DES MATIÈRES 3

3.4.1 Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5 Algorithme d’unification . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.5.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.5.2 Règle de résolution . . . . . . . . . . . . . . . . . . . . . . . . 40
3.6 De la logique des prédicats à Prolog . . . . . . . . . . . . . . . . . . 41
3.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Partie II programmation logique 42

Chapitre 4 : Programmation Logique : Le langage Prolog 44


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Les éléments fondamentaux du Prolog . . . . . . . . . . . . . . . . . 44
4.2.1 Les faits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.2 Les questions ou les requêtes . . . . . . . . . . . . . . . . . . 45
4.2.3 Les types du Prolog . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.4 Variables partagées . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.5 Les règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Mise en œuvre d’un programme . . . . . . . . . . . . . . . . . . . . 48
4.3.1 Le lancement de l’interprète . . . . . . . . . . . . . . . . . . . 48
4.3.2 Chargement de fichiers . . . . . . . . . . . . . . . . . . . . . . 48
4.3.3 Limitation des choix . . . . . . . . . . . . . . . . . . . . . . 49
4.3.4 Position du cut . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.5 Optimisation des calculs . . . . . . . . . . . . . . . . . . . . 49
4.4 Negation as failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.5 Prolog et l’arithmétique . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6 Arithmétique selon Péano . . . . . . . . . . . . . . . . . . . . . . . 49
4.7 Arithmétique et prédicat extra-logique . . . . . . . . . . . . . . . . 49
4.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Première partie

Logique

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Préambule

La logique mathématique est définie comme une théorie scientifique des raisonne-
ments excluant les processus psychologiques mis en oeuvre et qui se divise en :
1. Calcul des propositions.
2. Calcul des prédicats.
La logique classique intègre, généralement deux parties, d’une part la logique propo-
sitionnelle (parfois aussi appelé "calcul des énoncés") dont la brique de base est la
proposition représentant soit un évènement soit un fait, elle étudie toutes les asso-
ciations possibles ; d’autre part la logique des prédicats, dont l’élément fondamental
est la relation et les termes internes aux propositions.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Chapitre Un

Systèmes formels

La théorie des systèmes formels constitue un cadre général dans lequel on peut expri-
mer et étudier, de façon rigoureuse, la notion de mécanisme déductif. En particulier,
les concepts de démonstration et de théorème deviennent des concepts mathéma-
tiques objets, au sujet desquels on peut établir des résultats (qualifiés de métama-
thématiques) au même titre qu’on établit des résultats au sujet des nombres entiers
ou des matrices inversibles.
La réalisation d’un système formel fournit un cadre de représentation d’une réalité
donnée où des règles automatiques produisent tous les éléments vrais. Le but est
d’avoir un petit nombre de vérités initiales (ce sont les axiomes) et de disposer de
mécanismes de raisonnement (ce sont les règles d’inférence) pour révéler des vérités
cachées.
Par exemple, un système expert, qui est constitué d’une base de faits et de règles
permettant d’inférer de nouvelles connaissances, est un système formel.

1.1 Définitions

1.2 Ensembles récursifs et récursivement énumérables


Soit E et F deux ensembles tels que E ⊆ F et x un objet arbitraire de F.
Considérons l’assertion "x appartient à E".
– L’ensemble E est dit reconnaissable ou récursif s’il l’on dispose d’un algorithme,
au lieu d’un critère non nécessairement exécutable, pour calculer, quel que soit
x, la valeur de vérité de l’assertion précédente.
– L’ensemble E sera dit semi-reconnaissable ou récursivement énumérable s’il
existe un algorithme qui, pour tout x appartenant à E, établira cette propriété
en un nombre fini d’étapes (mais on n’exige pas que cet algorithme se termine
lorsque x n’est pas élément de E).

Exemple 1 : L’ensemble des entiers naturels et l’ensemble des entiers naturels


pairs sont des ensembles récursifs.

Remarque 1 :

– Tout ensemble récursif est récursivement énumérable.


– Il existe des ensembles récursivement énumérables qui ne sont pas récursifs.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Systèmes formels 7

1.3 Systèmes formels


On appelle système formel (sf) S la donnée de :
(a) un alphabet dénombrable ΣS ,
(b) un sous-ensemble récursif FS de l’ensemble Σ∗S des suites finies d’éléments de
ΣS , appelé ensemble des formules bien formées (fbf) de S,
(c) un sous-ensemble récursif AS FS , appelé ensemble des axiomes de S,
(d) un ensemble fini Ω = {r1 , . . . , rn } de règles de d’inférence (qui permettent
d’enrichir le système) tel que, pour chaque ri il existe un algorithme Ai qui,
pour toute donnée f1 , . . . , fm , f ∈ FS , calcule la valeur de vérité de l’assertion
"on peut déduire la formule f à partir des formules f1 , . . . , fm par la règle ri ,
ce qui s’écrit :
f1 , . . . , fm ⊢ri f

Remarque 2 :
La construction d’un sf illustre bien le processus de définition inductive. En effet,
étant donné un ensemble E d’objets, sa définition (description) par un schéma d’in-
duction consiste en trois phases :
– en phase initiale, on choisit une base, i.e. un ensemble initial d’objets de l’en-
semble ;
– en phase inductive, on définit un ensemble de règles de production permettant,
à partir d’objets de l’ensemble, d’en produire de nouveaux ;
– en phase de clôture, on décide qu’un objet appartient à l’ensemble E si et seule-
ment si on l’obtient à partir d’éléments de la base en enchaînant un nombre
fini de règles et en produisant, si nécessaire, des objets intermédiaires.

Exemple 2 Soit le système formel S1 défini par :


ΣS = {1, +, =},
FS1 = {1n + 1m = 1p | n, m, p ∈ N\{0}} où 1k = |1 .{z
. . 1}
kf ois
AS1 = {1 + 1 = 11}, ΩS1 = {r1 , r2 } où
1n + 1m = 1p ⊢r1 1n+1 + 1m = 1p+1 et 1n + 1m = 1p ⊢r2 1n + 1m+1 = 1p+1 .

Remarque 3 :

1. L’ensemble des fbf peut être défini par un schéma d’induction ; dans ce cas, on
prendra bien garde de ne pas confondre les règles de production de ce schéma
et les règles de d’inférence du système.
2. Les règles de d’inférence s’appellent aussi règles de dérivation ou de dé-
duction.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Systèmes formels 8

1.4 Définitions supplémentaires


On se place dans le cadre d’un sf S = (ΣS , FS , AS , ΩS ). On appelle déduction
(ou démonstration ou preuve) à partir de formules h1 , . . . , hn toute suite finie de
formules f1 , . . . , fp telle que, pour tout i ∈ {1, . . . , p} :

(a) ou bien fi est un axiome


(b) ou bien fi est l’une des formules h1 , . . . , hn
(c) ou bien fi est obtenu par application d’une règle de déduction rk ∈ ΩS à partir
de formules fi0 , . . . , fil placées avant fi :
fi0 , . . . , fil ⊢rk fi avec i0 , . . . , il < i
.
Remarque 4 :
Dans le cas de la définition ci-dessus, on dit aussi que f1 , . . . , fp est une déduction
de fp à partir des hypothèses h1 , . . . , hn , ce que l’on note :
h1 , . . . , hn ⊢S fp
On appelle théorème de S toute formule t dont il existe une déduction (à partir de
l’ensemble vide). On le note ⊢S t et l’ensemble des théorèmes de S est désigné par
TS .
Remarque 5 :

(i) Tout axiome est un théorème.


(ii) Toute formule située avant un théorème dans une déduction de celui-ci est un
théorème.
On dit que S est cohérent s’il existe des fbf de S qui ne sont pas des théorèmes.
Si S comporte un symbole de négation ¬, on dit que S est consistant (ou non-
contradictoire) s’il n’existe aucune fbf ϕ ∈ FS telle que ϕ et ¬ϕ sont des théorèmes
de S. Dans le ces contraire, on dit que S est inconsistant ou contradictoire.

On dit que les axiomes de S sont indépendants si, à chaque fois que l’on enlève
un axiome à S, on obtient un sf ayant moins de théorèmes.

La question de décidabilité dans un sf est la question qui se pose lorsque l’on


cherche à savoir si une formule est un théorème du système ; le sf S est décidable
si TS est récursif.

Lorsque l’on a en vue la modélisation d’un problème par un sf S et que l’on voudrait
obtenir comme ensemble de théorèmes de S un ensemble T fixé à l’avance, on dit
que :
– S est correct si TS ⊆ T
– S est complet si T ⊆ TS .

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Systèmes formels 9

1.5 Résultats généraux


Proposition 1.5.1 Soit S un système formel. Si h ⊢S g et g ⊢S f , alors h ⊢S f .

Proposition 1.5.2 L’ensemble des déductions dans un système formel est récursif.

Proposition 1.5.3 L’ensemble des théorèmes dans un système formel est récursi-
vement énumérable.

Proposition 1.5.4 Il existe des systèmes formels non décidables, i.e., dont l’en-
semble des théorèmes n’est pas récursif.

Remarque 6 :
Ce résultat est fondamental car il montre que, bien que tous les objets intervenant
dans la définition d’un sf soient récursifs, l’ensemble des théorèmes peut ne pas l’être,
alors qu’il existe toujours un moyen algorithmique (i.e. un programme) qui détermine
si une suite de formules est une déduction ou pas.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Chapitre Deux

Logique propositionnelle

Préambule
L’objectif du cours de Logique est double :
1. Etudier les mécanismes déductifs permettant de tirer des conclusions a
partir d’hypothèses (prémisses données), c’est-à-dire d’enchainer toutes les
étapes d’inference.
2. Essayer dans la mesure du possible de mécaniser la pensée.
Ce sont les bases de l’Intelligence Artificielle.

Je supposerai connu les concepts fondamentaux présentés dans le cours de logique


informelle : arguments, argument valide, etc. Rappelons simplement ici que la lo-
gique est la science des arguments valides en vertu de leur forme uniquement. Le
but de la logique est de distinguer les arguments valides de part leur forme des
autres. Pour cela, les logiciens ont depuis Frege construit des langages particuliers,
des langages formels. Ces langages font complètement abstraction du contenu des
expressions, pour ne retenir que leur structure logique.
La question est alors bien entendu de savoir ce que cela peut bien être que la structure
logique, et c’est cette question que nous allons aborder dans ce chapitre. Nous nous
intéresserons surtout à la question pratique de savoir comment traduire la structure
logique d’un énoncé, c’est-à-dire à l’opération de formalisation.
Formaliser, cela n’a de sens que relativement à un langage artificiel, et cela revient
à traduire les énoncé de la langue naturelle vers les formules de ce langage artificiel.
Le système de la logique propositionnelle est le plus simple que nous étudierons.

2.1 Première approche


L’objectif de la logique propositionnelle (ou calcul des propositions) est d’étudier les
énoncés qui sont vrais ou faux.
La logique formelle se propose d’élaborer une théorie des raisonnements valides.
Ici, le raisonnement est purement syntaxique et non sémantique. De plus, les éléments
du discours sur lesquels porte le raisonnement peuvent être arbitrairement substitués
par d’autres sans modifier la validité du raisonnement.

Exemple 2.1.1 (syllogisme)


"Les hommes sont mortels, Socrate est un homme. Donc Socrate est mortel".

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 11

Les mots homme, mortel et Socrate sont substituables par des symboles : le raison-
nement restera valide.

La logique remonte à Aristote (IV siècle avant JC) qui posa les bases du syllogisme
que les philosophes scolastiques formalisèrent au Moyen-âge. C’est au XIXème siècle
avec Bolzano, Boole et de Morgan que la logique devient mathématique. Frege (1848-
1925) est le fondateur de la logique formelle, théorisée par Russel (1872-1970) et
Wittgenstein (1889-1951).

Définition 2.1.1 Un syllogisme est un raisonnement qui contient 3 propositions :


la majeure, la mineure et la conclusion. Dans un tel raisonnement, la conclusion est
déduite de la majeure par l’intermédiaire de la mineure.

Cas 1 Cas 2
Majeure Tous les hommes sont mortels Tout ce qui est rare est cher
Mineure Socrate est un homme Un cheval bon marché est rare
Conclusion Socrate est mortel Un cheval bon marché est cher
Table I – Exemple de majeure, mineure et conclusion

Dans le cas 2, le syllogisme n’est pas considéré comme valide car le sens associé à
rare a changé entre la majeure et la mineure.
Le modèle abstrait de ce raisonnement est : "Si tout X est Y, Si Z est un X
Alors Z est Y." où X, Y, Z sont des variables ou des symboles substituables tandis
que Si et Alors sont des opérateurs, i-e des symboles non substituables

Le calcul propositionnel ou logique des propositions a pour objet l’étude des formes
de raisonnement dont la validité est indépendante de la structure des propositions
composantes et résulte uniquement de leurs propriétés d’être vraies ou fausses.
Deux aspects, liés l’un à l’autre, doivent être pris en compte :
– l’aspect syntaxique qui revient simplement à définir un système formel dans
lequel les déductions qu’on peut faire conduisent à des théorèmes du calcul
propositionnel ;
– l’aspect sémantique qui est l’interprétation des formules, fondée sur les valeurs
de vérité de leurs propositions composantes.
La liaison entre les deux aspects est illustrée par le fait que les formules qui sont les
tautologies (i.e. qui sont sémantiquement valides) sont les mêmes que les formules
qui sont les théorèmes (i.e. qui sont syntaxiquement valides). Une conséquence de
ce résultat est que le calcul propositionnel est décidable.

2.2 Langage
La logique est un langage qui contient des règles et des signes. Ce langage est consti-
tué d’un système de symboles et de variables liés par des opérateurs qui déterminent

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 12

la structure interne des propositions et les relations existant entre ces différentes
propositions.

On considère un alphabet A constitué de 3 sous-ensembles disjoints :


1. P = { p, q, r, . . .} un ensemble fini ou dénombrable de propositions encore
appelées variables propositionnelles, éventuellement indicées
2. P onc = {(, )} un ensemble de délimiteurs,
3. Conn = {¬, ∧, ∨, ⇒, ⇔}, ces connecteurs se lisent respectivement non, et, ou,
implique, équivalent à. Nous reviendrons ultérieurement sur la signification à
accorder à ces différents connecteurs, et aux différences notables avec le lan-
gage naturel.

À partir de cet alphabet, on construit des mots qui appartiennent à A∗ .


Sur ces mots, on définit un sous ensemble noté F constituant les formules proposi-
tionnelles.
Définition 2.2.1 L’ensemble des formules propositionnelles F construites
sur P est le plus petit ensemble tel que :
– Si F ∈ F alors ¬F ∈ F
– Si F et G sont des formules, alors F ∧ G, F ∨ G, F ⇒ G et F ⇔ G appar-
tiennent à F
De cette définition, on peut tirer plusieurs remarques. La première est que l’on a
P ⊆ F , la seconde que F est bien définie, car A∗ vérifie la définition 2.2.1, que P
appartient à l’intersection de tous les ensembles vérifiant cette définition.

Il est cependant possible de définir les formules propositionnelles par induction de


la façon suivante :
Définition 2.2.2S – F0 = P S
– Fn+1 = Fn {¬F |F ∈ Fn } {(F ⋄ G)|F, G ∈ Fn , ⋄ ∈ {∧, ∨, ⇒, ⇔}}
De la définition 2.2.2, on constate que la suite Fn∈N est croissante. Nous allons
maintenant voir que les définitions 2.2.1 et 2.2.2 définissent le même objet.
Proposition 2.2.1 [
F= Fn
n

Démonstration: On établit S la démonstration de cette proposition en établissant


la double inclusion : F ⊇S n Fn . Il suffit d’établir la propriété
S par récurrence sur n.
Pour montrer que F ⊆ n Fn , il suffit de montrer que n Fn vérifie la définition
2.2.2. Comme par ailleurs, F est le plus petit ensemble vérifiant cette définition, la
démonstration en découle immédiatement. 2

Les lois logiques sur lesquelles repose le calcul des énoncés sont :

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 13

et

ou r

non non q

p p p

Figure 1 – Arbres syntaxiques

– Le principe d’identité : (f ≡ f )
– Le principe de non contradiction : ¬(f ∧ ¬f )
– Le principe du tiers exclus : (f ∨ ¬f )
– Le principe de la double négation : (¬¬f ≡ f )

Définition 2.2.3 La profondeur d’une formule F est le plus petit entier n tel que
F ∈ Fn . On peut associer à une formule logique, son arbre syntaxique (les nœuds in-
ternes sont les connecteurs logiques, les feuilles sont les variables propositionnelles),
la profondeur de la formule est aussi la profondeur de l’arbre.

Pour illustrer la définition 2.2.3 rien ne vaut quelques petits exemples, on se reportera
à la figure 1 pour les représentations des formules sous forme d’arbres syntaxiques.

Exemple 2.2.1 p a la profondeur 0, ¬p a la profondeur 1, ((¬p ∨ q) ∧ r) est de


profondeur 3

Définition 2.2.4 On dira qu’une formule G est une sous-formule d’une formule F ,
si l’arbre syntaxique de G est un sous-arbre de l’arbre syntaxique de F .
Si nous reprenons les formules de l’exemple 2.2.1, on constate que p est une sous
formule de ¬p qui est elle-même une sous formule de ((¬p∨q)∧r). On voit cependant
que la définition ne considère pas que (q ∧ r) est une sous-formule de ((¬p ∨ q) ∧ r).

2.3 Sémantique dans le calcul des propositions


Le rôle de la syntaxe est de différencier une formule d’un mot quelconque de A∗ .
La tâche dévolue à la sémantique est d’attribuer une signification aux énoncés, plus
particulièrement une valeur de vérité.

Une proposition est soit vraie, soit fausse. On peut alors lui attribuer un domaine
sémantique que l’on notera vrai, faux ou 0, 1 (dans ce cas, 0 représente le faux et 1 le

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 14

vrai). Interpréter une formule revient à lui associer une valeur de vérité. Une séman-
tique est une loi compositionnelle qui dépend de ses constituants. Les connecteurs
logiques sont considérés comme vérifonctionnels puisque une table de vérité définit
complètement leur comportement. Ci-après, nous donnons la table de vérité associée
à chaque connecteur : Avant d’aller plus loin, il semble nécessaire de comparer la

p q ¬p p∧q p∨q p⇒q p⇔q


0 0 1 0 0 1 1
0 1 1 0 1 1 0
1 0 0 0 1 0 0
1 1 0 1 1 1 1

Table II – table de vérité des connecteurs logiques classiques

sémantique attribuée aux connecteurs logiques et leur signification dans en langage


naturel (français, anglais, etc.).

" Et " logique vs " Et " français


Le et logique est commutatif, ce qui n’est pas le cas en français puisqu’il peut y
avoir un lien de causalité entre les deux propositions. On pourra, pour s’en assurer,
comparer les deux phrases suivantes : "Il prit peur et le tua", "Il le tua et prit peur".
Dans la même veine on pourra étudier les deux phrases : "Elle eut un enfant et se
maria" et "Elle se maria et eut un enfant".

" Ou " logique vs " Ou " français


Très souvent le ou français a une connotation d’exclusivité (les deux propositions ne
peuvent être vraies simultanément), alors que le ou logique est par nature inclusif.
À titre d’exemple on pourra considérer les phrases : "fille ou garçon", "fromage ou
dessert", "le pistolet ou la corde", etc. Pour exprimer le ou exclusif en logique on
utilisera au choix l’opérateur xor avec une table de vérité ad-hoc, correspondant à
l’une des formules logiques, ((¬p ∧ q) ∨ (¬q ∧ p)), ((¬p ∨ ¬q) ∧ (q ∨ p)).

Implication logique vs Implication française


L’implication française qui se traduit par l’usage de la syntaxe "si hypothèse alors
conclusion" indique une relation de causalité entre hypothèse et conclusion. L’impli-
cation logique (p ⇒ q) est en fait une notation commode pour exprimer l’alternative
(¬p ∨ q) qui montre qu’aucune relation n’est exigée entre les deux propositions (ou
formule logique) représentant l’hypothèse et la conclusion.

2.3.1 Puissance d’expression


Nous allons maintenant établir que les cinq connecteurs ne sont pas nécessaires pour
exprimer les formules logiques. Il existe d’autres ensembles de connecteurs offrant
toute la puissance d’expression de la logique propositionnelle. Ces ensembles seront

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 15

appelés base en regard de la logique. Pour s’assurer qu’un ensemble de connecteurs


forme une base, on se restreindra à la comparaison des tables de vérité de chaque
expression. Dans la suite nous utiliserons le signe ≡ entre deux expressions, pour
indiquer qu’elles ont même table de vérité, la construction et la vérification étant
laissées au lecteur à titre d’exercice.

2.3.2 Bases
Nous développerons ici l’étude de la base ¬, ⇒, les autres étant laissées à titre d’exer-
cice. On peut établir que cet ensemble est minimal, pour cela il faut prouver qu’un

p q ¬p
(p ∨ q) ≡ (¬p ⇒ q)
(p ∧ q) ≡ ¬(p ⇒ ¬q)
(p ⇒ q) ≡ ¬((p ⇒ q) ⇒ ¬(p ⇒ p))

Table III – Bases de connecteurs logiques ¬ et ⇒

connecteur ne peut pas s’exprimer en fonction de l’autre. En fait il suffit de prouver


que ¬p ne peut s’exprimer par le biais du connecteur ⇒. Comme (p ⇒ p) est vraie
quelque soit la valeur de p, la démonstration est immédiate.

Exercices : 2.8, page 27.


Remarque 7 Les connecteurs ↑, ↓ et ⊕ (ou exclusif ) sont les seuls opérateurs
binaires ayant la propriété d’être une base.

2.4 Formules et interprétations


Avant de commencer l’étude des interprétations que l’on peut associer à une formule,
il semble utile de regarder plus précisément, quelles sont les fonctions à 2 variables
que l’on peut définir. Comme chaque variable peut prendre 2 valeurs, il y a donc 4
couples distincts de valeurs, à chaque couple on peut associer (on dit aussi assigner)
2 réponses (0 ou 1), il y a ainsi 16 fonctions à deux variables possibles qui sont résu-
mées dans la table IV. A partir de la table IV, on reconnaît les identités suivantes :

p q f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16


0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1
1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1
1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1
Table IV – 16 fonctions à 2 variables

f1 (p, q) = 0 (fonction uniformément fausse), f2 (p, q) = (¬p ∧ q), f3 (p, q) = (p ∧ ¬pq),


f4 (p, q) = (p ∧ q), f5 (p, q) = (p ≡ ¬q) = (¬p ≡ q) = ¬(p ≡ q), f6 (p, q) = q,
f7 (p, q) = p, f8 (p, q) = (p ∨ q), f9 (p, q) = (p ↓ q), f10 (p, q) = ¬p, f11 (p, q) = ¬q,

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 16

f12 (p, q) = (p ≡ q), f13 (p, q) = (p ↑ q), f14 (p, q) = (p ⇒ q), f15 (p, q) = (q ⇒ p),
f16 (p, q) = 1.

La fonction f1 est appelée contradiction dont l’expression type est (p ∧ ¬p), tandis
que la fonction f 16 est appelée tautologie dont l’expression type est (p ∨ ¬p) . Il
en résulte que la négation d’une contradiction est une tautologie et réciproquement.

Définition 2.4.1 Une fonction d’interprétation (ou interprétation) est une appli-
cation i qui à toute variable propositionnelle p associe une valeur de vérité.
On étend facilement cette notion aux formules, par le biais des tables de vérité. Cette
extension notée I est aussi une interprétation.

Définition 2.4.2 Une interprétation qui rend une formule F vraie est appelée un
modèle de F.

Remarque 8 Une formule possédant k variables propositionnelles admet 2k inter-


prétations différentes.

Exemple 2.4.1 Prenons la formule F = (p ∨ q), et considérons l’interprétation I


vérifiant, I[p] = 1, I[q] = 0, c’est un modèle de F , puisque I[F ] = 1.

Définition 2.4.3 Un littéral est soit une variable propositionnelle, soit la négation
d’une variable propositionnelle. En d’autre terme, si p ∈ P, alors p et ¬p sont des
littéraux, le premier sera dit positif et le second négatif.

Une interprétation détermine une partition de l’ensemble des littéraux, en deux sous-
ensembles notés L0 et L1 , chaque ensemble contenant exactement un élément de la
paire (p, ¬p) . Par exemple, si on considère l’interprétation I de l’exemple 2.4.1, on
a {p, ¬q} ⊆ L1 et {¬p, q} ⊆ L0 . Une conséquence immédiate de cette définition est
qu’une interprétation vérifie les trois points suivants :
1. I[F ] = 1 − I[¬F ], ∀F ∈ F
2. I[F ∨ G] = max(I[F ], I[G]), ∀F, G ∈ F
3. I[F ∧ G] = min(I[F ], I[G]), ∀F, G ∈ F

Définition 2.4.4 Une formule sera dite sémantiquement consistante (ou plus sim-
plement consistante) si elle admet un modèle. Une formule qui n’est pas consistante
est dite inconsistante. Une formule est dite valide si elle est toujours vraie. Enfin
une formule qui n’est ni valide, ni inconsistante sera dite contingente.

Exercices : 2.8, page 27. pour maîtriser le vocabulaire précédent.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 17

Notation
On utilisera la notation |= F pour indiquer qu’une formule F est une tautologie.
Par extension, si E est un ensemble de formules, on notera E |= F pour indiquer
que toute interprétation I modèle de E est modèle de F . On dit aussi que "F est
une conséquence logique de E". Lorsque l’ensemble de formules se réduit à une seule
formule, on omet les accolades. Ainsi {G} |= F est noté G |= F .
Remarque 9 2 remarques :
– {G} |= F revient à dire que (F ⇒ G)  est une tautologie

Vk
– {F1 , F2 , . . . , Fk } revient à dire que |= i=1 Fi ⇒ G

Dire qu’un ensemble E de formules est cohérent (ou consistant), c’est dire que tous
les éléments de E admettent le même modèle (ou encore qu’il existe un modèle pour
la conjonction des formules de E). Enfin, dire que F est conséquence logique d’un
ensemble de formules E, c’est établir que E ∪ {¬F } est incohérent (ou inconsistant).
Cette dernière approche est à la base de la déduction qui consiste à déterminer si
une formule F est conséquence logique d’un ensemble de formules {F1 , F2 , . . . , Fk }.

Les questions que l’on peut vouloir résoudre sont :


1. Déterminer si un mot m ∈ A∗ est une formule. Il s’agit d’un problème trivial.
2. Déterminer si une formule F ∈ F est
– consistante,
– valide,
– contingente.
sont des problèmes qui sont soient difficiles, soient fastidieux.
On peut résoudre ces questions par les arbres sémantiques ou par des algorithmes
de réduction que nous allons maintenant étudier.

2.5 Arbres sémantiques


Soit E un ensemble fini ou dénombrable de propositions.
Définition 2.5.1 Un arbre sémantique est un arbre binaire tel que :
– chaque arc est étiqueté par un littéral,
– issu d’un même nœud les arcs sont étiquetés par un littéral et son opposé,
– dans une branche donnée (chemin depuis la racine), on ne rencontre au plus
qu’une seule occurrence d’un littéral,
– dans aucune branche on ne trouve un littéral et son opposé.

Remarque 10 2 remarques :
– Si E est fini, l’arbre est fini. Si E est infini, l’arbre est infini (une branche au
moins est infinie).
– L’ordre des variables influe sur la construction de l’arbre sémantique. Recher-
cher l’ordre permettant de construire l’arbre sémantique de taille minimum (le
moins de sommets possible) est un problème difficile.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 18

À partir de cette construction, il est possible de définir une interprétation partielle


au niveau des nœuds en fonction du chemin depuis la racine. Cette interprétation
n’est pas définie pour une variable p ∈ E, si aucun des littéraux p et ¬p n’appartient
au chemin. On dira, que l’arbre sémantique est complet si chaque feuille de l’arbre
est une interprétation totale. En 1950, Quine a établi que si toute extension possible
d’une interprétation partielle attribue la même valeur de vérité à une formule, il est
inutile de continuer à développer le sous-arbre.

On peut définir deux représentations graphiques (équivalentes) pour un arbre sé-


mantique. La première découle directement de la définition 2.5.1, la seconde adopte
la représentation suivante :
– un nœud est étiqueté par une variable propositionnelle,
– un arc est étiqueté 1, si le littéral est pris positivement et 0 sinon.
La figure 2 donne les deux représentations possibles pour la formule (p ∨ q).

. p

¬p 0
p 1
. . . q
¬q 0
q 1
. . . .

Figure 2 – Arbre sémantique de (p ∨ q)

Exercices : 2.8, page 27.

2.6 Algorithme de réduction


Cette méthode correspond à ce que l’on appelle en mathématiques une preuve
par l’absurde, cette approche est particulièrement efficace dans le cas où la formule
utilise un grand nombre de connecteurs ⇒. Nous allons illustrer cette approche
au travers d’un exemple. Avant cela, nous introduisons le concept de substitution
uniforme.

Définition 2.6.1 Le principe de la substitution uniforme consiste à remplacer, dans


une formule logique, toutes les occurrences d’une proposition par une formule, on

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 19

notera F [p/f ] cette opération, où F est la formule sur laquelle on applique la sub-
stitution, p est la proposition remplacée et f la formule de remplacement.
Le principe de la substitution uniforme permet de générer autant de tautologies que
l’on veut. En effet, si F est une tautologie, si p est une proposition et si f est une
formule alors F [p/f ] est une tautologie.

Exemple 2.6.1 Considérons la formule F = (p ∨ ¬p) et la formule f = (q ∧ ¬r).


F est une tautologie comme l’est aussi F [p/f ]

Exemple 2.6.2 Soit la formule F = (((p ∧ q) ⇒ r) ⇒ (p ⇒ (q ⇒ r))).

– Posons F1 = ((p ∧ q) ⇒ r) et F2 = ((p ⇒ (q ⇒ r))).


Faisons l’hypothèse que I[F1 ] = 1 et I[F2 ] = 0.
D’où l’on tire que I[p] = 1 et I[q ⇒ r] = 0, i-e I[q] = 1 et I[r] = 0.
– Remplaçons ces valeurs dans F1 , on aboutit à I[F1 ] = 0, ce qui est contraire
aux hypothèses.
– On en déduit que F est une tautologie.

Il est possible de construire des formules telles que la méthode par arbres sémantiques
et l’algorithme de réduction ne sont pas plus efficaces qu’un algorithme purement
énumératif. Le problème de savoir si une formule est valide est un problème NP-
complet.

2.6.1 formes duales


Définition 2.6.2 Soit une formule F ne contenant que des connecteurs pris dans
la base {¬, ∧, ∨}, et soit F la formule obtenue à partir de F en interchangeant les
connecteurs ∧ et ∨ et en remplaçant les littéraux par leurs opposés. F est la forme
duale de F .

On a le théorème suivant :

Théorème 2.6.1 Pour toute formule F ∈ F construit sur la base {¬, ∧, ∨}, on a
F = ¬F

Démonstration: La démonstration se fait par induction sur le nombre de connec-


teurs apparaissant dans la formule F . 2

Corolaire
Soit F, G, H ∈ F des formules construites sur la base {¬, ∧, ∨}, on a les propriétés
suivantes :
1. Si F = G, alors F = G
2. Si F = (G ∨ H), alors F = G ∧ H
3. Si F = (G ∧ H), alors F = G ∨ H

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 20

2.6.2 formes normales


On identifie deux types de formes normales :
– les formes normales conjonctives (fnc) et
– les formes normales disjonctives (fnd ).
Que l’on peut définir de la manière suivante :

Définition 2.6.3 Une forme normale conjonctive est soit un littéral, soit une conjonc-
tion de formules écrites comme disjonctions de littéraux.
Une forme normale disjonctive est soit un littéral, soit une disjonction de formules
écrites comme conjonctions de littéraux.

On notera que toute formule peut s’écrire, indifféremment en fnc ou en fnd cette
propriété est basée sur les équivalences suivantes :

Propriété 2.6.1 La négation offre les équivalences telles que

¬(f ∨ g) ≡ ¬f ∧ ¬g ¬(f ∧ g) ≡ ¬f ∨ ¬g ¬¬f ≡ f

Les deux premières égalités sont connues sous le nom de loi de de Morgan.
Les connecteurs ou et et sont associatifs et distributifs l’un par rapport à l’autre,
ainsi on a

(f ∨ (g ∨ h)) ≡ ((f ∨ g) ∨ h) (f ∧ (g ∧ h)) ≡ ((f ∧ g) ∧ h) et

(f ∧ (g ∨ h)) ≡ ((f ∧ g) ∨ (f ∧ h) (f ∨ (g ∧ h)) ≡ ((f ∨ g) ∧ (f ∨ h)))


Les connecteurs et et ou sont absorbants au sens où (p∨(p∧q)) ≡ p, (p∧(p∨q)) ≡ p.

Grâce à ces propriétés, il est possible de simplifier des expressions et de trouver ainsi
des valeurs de vérité plus aisément. Ces simplifications sont aussi utilisées lorsque
les formules sont mises sous forme clausale afin de préparer leur résolution par le
biais de la méthode de Robinson.

2.6.3 Algorithme de normalisation


Il existe deux méthodes pour mettre une formule quelconque sous forme normale, la
première passe par une suite d’équivalence (au sens du signe ≡ tel que défini page
15) en remplaçant le membre gauche par le membre droit. Cet méthode peut se
résumer par les règles suivantes :
– Suppression de ⇔ : (F ⇔ G) ≡ (F ⇒ G) ∧ (G ⇒ F )
– Suppression de ⇒ : (F ⇒ G) ≡ (¬p ∨ q)
– Déplacement de ¬ à l’intérieur des formules : ¬(F ∧ G) ≡ ¬F ∨ ¬G et ¬(F ∨
G) ≡ ¬F ∧ ¬G
– Sistributivité des opérateurs ∨ et ∧ :

(f ∧ (g ∨ h)) ≡ ((f ∧ g) ∨ (f ∧ h) (f ∨ (g ∧ h)) ≡ ((f ∨ g) ∧ (f ∨ h)))

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 21

La seconde méthode consiste à déterminer la fonction booléenne associée, puis à


construire une formule sous forme normale. Les étapes peuvent se résumer de la
manière suivante :
1. On détermine les interprétations I telles que I[f ] = 1
2. A chaque Ik telle que Ik [f ] = 1, est associée une gormule gk qui est une
conjonction de littéraux
3. La formul g est finalement obtenue par la disjonction des gk .
Afin de clarifier ces deux méthodes considérons l’exemple de normalisation suivant .

Exemple 2.6.3 Soit à normaliser la formule ¬(p ≡ (q ⇒ r)).


Par la méthode direct, on obtient :
¬((p ⇒ (q ⇒ r)) ∧ ((q ⇒ r) ⇒ p))
¬((¬p ∨ (¬q ∨ r)) ∧ (¬(¬q ∨ r) ∨ p))
(¬(¬p ∨ (¬q ∨ r)) ∨ ¬((¬¬q ∧ ¬r) ∨ p))
((¬¬p ∧ ¬(¬q ∨ r)) ∨ (¬(¬¬q ∧ ¬r) ∧ ¬p))
((¬¬p ∧ (¬¬q ∧ ¬r)) ∨ ((¬¬¬q ∨ ¬¬r) ∧ ¬p))
((p ∧ (q ∧ ¬r)) ∨ ((¬q ∨ r) ∧ ¬p))
(p ∧ (q ∧ ¬r)) ∨ ((¬q ∧ ¬p) ∨ (r ∧ ¬p)) qui est une fnd.

Par la seconde méthode on peut construire la table de vérité de la formule est on


trouve :

p q r (q ⇒ r) (p ≡ (q ⇒ r)) f = ¬(p ≡ (q ⇒ r)) Minterms


0 0 0 1 0 1 ¬p ∧ ¬q ∧ ¬r
0 0 1 1 0 1 ¬p ∧ ¬q ∧ r
0 1 0 0 1 0
0 1 1 1 0 1 ¬p ∧ q ∧ r
1 0 0 1 1 0
1 0 1 1 1 0
1 1 0 0 0 1 p ∧ q ∧ ¬r
1 1 1 1 1 0

Table V – table de vérité de f = ¬(p ≡ (q ⇒ r))

La fnd que l’on trouve est donc (¬p∧¬q∧¬r)∨(¬p∧¬q∧r)∨(¬p∧q ∧r)∨(p∧q∧¬r).


Elle semble à priori différente de celle que nous avons trouvé précédemment. Nous
allons voir que ces deux formes sont équivalentes :
À partir des lignes 1 et 2 on peut construire la formule (¬p ∧ ¬q, à partir des lignes 2
et 4 on peut construire la formule (¬p ∧ r, la formule 7 restant isolée. La disjonction
des interprétations nous redonne la forme normale trouvée précédemment.

On aurait pu aussi construire l’arbre sémantique, en utilisant l’algorithme de Quine,


et construire la fnd en prenant la disjonction des interprétations qui valent 1 au
niveau des feuilles de l’arbre.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 22

2.6.4 Foncteur booléen associé à une formule


L’approche de la logique du point de vue de fonctions booléennes est fondamen-
tale pour la modélisation de circuits logiques. Nous ne développerons dans cette
partie que les bases de l’approche, sans aborder, par exemple les notions de treillis,
de tableaux de Karnaugh ou de simplification de fonctions booléennes. On se place
ici dans le cadre où on a un nombre fini de variables propositionnelles. À une formule
F portant sur n variables propositionnelles, on peut associer un foncteur booléen
fF : {0, 1}n −→ {0, 1}. On dira que deux formules F et G sont équivalentes si les
foncteurs fF et fG sont égaux. On dispose alors du théorème suivant :

Théorème 2.6.2 Soit E = {p1 , p2 , . . . , pn } un ensemble fini de variables proposi-


tionnelles. Toute fonction f de {0, 1}n −→ {0, 1} peut être représentée par une
formule booléenne F portant sur {p1 , p2 , . . . , pn } de telle sorte que pour toute inter-
prétation I on ait f (I) = I[F ].

Démonstration: La preuve de ce théorème s’établit par récurrence sur n.


– n = 1. Il existe 4 fonctions possibles représentées dans la table suivante :

p f1 f2 f3 f4
0 0 0 1 1
1 0 1 0 1
(p ∧ ¬p) p ¬p (p ∨ ¬p)

Table VI – foncteurs booléens pour n = 1

– supposons la propriété vraie jusqu’au rang n−1, et considérons E = {p1 , p2 , . . . , pn }.


A toute interprétation I sur {p1 , p2 , . . . , pn−1 }, on peut faire correspondre I¯
une interprétation sur E. Notons f0 et f1 les restricteurs de f au cas I[p ¯ n] = 0
¯
et I[pn ] = 1. Ainsi, si f correspond à une formule F ({p1, p2 , . . . , pn }), f0 à
G({p1 , p2 , . . . , pn−1}) et f1 à H({p1, p2 , . . . , pn−1 }), on obtient

F = (¬pn ∧ G) ∨ (pn ∧ H)

Afin de clarifier notre propos, considérons l’exmple VII :

Exemple 2.6.4 Considérons la formule F (p1 , p2 , p3 ) qui vaut 1, lorsqu’il y a un


nombre pair de 1, sa table de vérité est la suivante : La formule G(p1 , p2 ) correspond
aux lignes ayant un 0 dans la colonne de p3 , la formule H(p1, p2 ) aux lignes ayant
un 1 dans la colonne de p3 . On voit que G(p1 , p2 ) = p1 ∧ p2 et H(p1 , p2 ) = (¬p1 ∧
p2 ) ∨ (p1 ∧ ¬p2 ). La formule F (p1 , p2 , p3 ) = (¬p3 ∧ G(p1 , p2 )) ∨ (p3 ∧ H(p1 , p2 )) .

Corollaire 2.6.1 Toute formule F peut se ramener à une fnc ou à une fnd.

La preuve découle directement du théorème 2.6.2 et des propriétés d’associativité,


de commutativité et de distributivité sur les connecteurs et et ou.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 23

p1 p2 p3 F
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0

Table VII – Exemple de foncteurs booléens

2.6.5 Formes clausales


Nous allons dans cette partie voir une nouvelle représentation de formules boo-
léennes appelée forme clausale. Puis nous étudierons deux méthodes de résolution,
la première est basée sur la syntaxe (Robinson 1965), la seconde sur la sémantique
(Davis et Putnam 1960).

Définition 2.6.4 Une clause est une disjonction d’un nombre fini de littéraux,
que l’on écrira sous forme ensembliste. Il n’existe qu’une clause inconsistante qui
sera notée dans la suite {} ou 2.
Un ensemble de clauses est une conjonction de clauses.

Remarque 11 Toute formule pouvant se mettre en fnc il est facile de la mettre


sous forme clausale. Il ne s’agit en fait que d’une autre forme de présentation.

Définition 2.6.5 Un modèle pour un ensemble de clauses est un modèle pour cha-
cune des clauses constituantes.
Un ensemble de clauses est dit cohérent s’il admet un modèle.
Un ensemble de clauses est dit incohérent s’il n’admet pas de modèle.
La résolution à partir de formes clausales considère un ensemble de clauses C et une
formule F et a pour but de déterminer si C |= F , ou en d’autre terme si C ∪ ¬F est
inconsistant.

Simplification dans les clauses


Avant d’aborder les méthodes de résolution de formules sous forme clausale, il est
bon de savoir nettoyer ces expressions. Pour cela on applique les règles suivantes.

Définition 2.6.6 .

1. Si une clause contient un littéral et son opposé, on l’enlève.


2. Dans une clause, on supprime les multiples occurrences d’un littéral.
3. Si une clause ci contient une clause cj , on supprime ci . On dit que cj subsume
ci .

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 24

Il nous faut maintenant établir que ces règles sont valides, pour cela nous allons
démontrer que si I est un modèle pour un ensemble de clauses, c’est aussi un modèle
pour l’ensemble réduit. Il faudra aussi démontrer que tout modèle de l’ensemble de
clauses réduit, est un modèle de l’ensemble initial.
Démonstration: Soit C = {c1 , c2 , . . . , ck } un ensemble de clauses, une clause
ci ∈ C est de la forme {l1i , l2i , . . . , lki }. Un modèle pour un ensemble de clauses est
un modèle pour chacune des clauses constituantes. Par conséquent, un modèle d’un
ensemble de clauses C0 est un modèle pour tout sous-ensemble de C0 .
1. Une clause contenant un littéral et son opposé est une tautologie (vraie quelque
soit l’interprétation choisie).
2. Une clause étant une disjonction de littéraux, et le connecteur ∨ étant ab-
sorbant, supprimer au sein d’une clause les occurrences multiples d’un littéral
n’influe pas sur le modèle.
3. Soient ci , cj ∈ C telles que ci ⊆ cj , et soit I un modèle de ci cela signifie qu’il
existe qj ∈ {1j , 2j , . . . , kj } tel que I[lqj = 1] ; comme lqj ∈ ci , I est un modèle
de ci .
Ces 3 points démontrent que tout modèle de l’ensemble réduit est un modèle de
l’ensemble initial. 2
Exemple 2.6.5 Trouver la forme clausale simplifiée de la formule ¬(p ≡ (q ⇒ r)).
Après simplification on obtient
((p ∧ (q ∧ ¬r)) ∨ ((¬q ∨ r) ∧ ¬p))
((p ∨ ((¬q ∨ r) ∧ ¬p)) ∧ ((q ∧ ¬r) ∨ ((¬q ∨ r) ∧ ¬p)))
((p ∨ ¬q ∨ r) ∧ (p ∨ ¬p) ∧ (((q ∧ ¬r) ∨ (¬q ∨ r)) ∧ ((q ∧ ¬r) ∨ ¬p)))
((p ∨ ¬q ∨ r) ∧ (p ∨ ¬p) ∧ (q ∨ (¬q ∨ r)) ∧ (¬r ∨ ¬q ∨ r) ∧ (q ∨ ¬p) ∧ (¬r ∨ ¬p))
Ce qui donne l’ensemble de clauses suivant :
C = {{p, ¬q, r}, {p, ¬p}, {q, ¬q, r)}, {¬r, ¬q, r}, {q, ¬p}, {¬r, ¬p}, }
Les clauses 2, 3 et 4 sont des tautologies ; l’ensemble final réduit est donc :
C = {{p, ¬q, r}, {q, ¬p}, {¬r, ¬p}, }

2.6.6 Méthode de résolution de Robinson


Définition 2.6.7 Soient deux clauses c1 et c2 et soit l un littéral tel que l ∈ c1
et ¬l ∈ c2 . La résolvante est obtenue en ajoutant les littéraux de c1 et de c2 et
en faisant disparaître les occurrences (positive et négative) de l, plus formellement
r = (c1 \ {l} ∪ c2 \ {¬l}).
La propriété suivante démontre que chercher un modèle pour deux clauses c1 et c2 ,
c’est chercher un modèle pour r.
Proposition 2.6.1 Soient deux clauses c1 = {l11 , l21 , . . . , lk1 } et c2 = {l12 , l22 , . . . , lk2 }.
Supposons (sans perte de généralité) que l11 = ¬l12 . Alors :
{c1 , c2 } |= {l21 , . . . , lk1 , l22 , . . . , lk2 }}

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 25

Démonstration: Soit I un modèle de {c1 , c2 }. Il y a deux cas à considérer. Soit


I[l11 ] = 1, donc I[l12 ] = 0, comme I est un modèle de c2 , il existe un i ∈ 22 . . . k2 tel
que I[li ] = 1 d’où I est un modèle de r. Le deuxième cas, symétrique du premier est
I[l11 ] = 0, donc I[l12 ] = 1 ; par le même type de raisonnement, on aboutit à la même
conclusion. Donc on a établi la proposition. 2

Exemple 2.6.6 .
Considérons 4 clauses c1 = {p, q, r}, c2 = {¬p, q}, c3 = {¬q, r}, c4 = {¬r, p}.
À partir de c1 et c2 , on peut construire c12 = {q, r} en combinant ensuite avec c3
on obtient c123 = {r}. Si on combine ensuite avec c4 on aboutit à c1234 = {p}. Enfin
en combinant de nouveau avec c2 on trouve c12342 = {q}. Ce qui revient à dire que
{c1 , c2 , c3 , c4 } |= (p ∧ (q ∧ r)) ou que {c1 , c2 , c3 , c4 } ∪ {¬p, ¬q, ¬r} est incohérent.

On constate que si le principe de cette résolution est simple, il n’en demeure pas
moins qu’elle est longue et fastidieuse, car elle nécessite de combiner toutes les
clauses. Néanmoins le processus peut être amélioré, en évitant la création de tau-
tologies, en suivant une résolution linéaire, ou en restreignant le type de clauses
(clauses de Horn (clause ayant au plus un littéral positif), par exemple). La réso-
lution sera dite linéaire si la résolvante construite à la k + 1eme étape utilise la
résolvante trouvée à l’étape k. Certaines de ces améliorations ont permis la mise en
place du langage PROLOG.

2.6.7 Méthode de résolution sémantique


Dans ce cadre, établir la cohérence d’un ensemble de clauses, revient à chercher
un modèle, c’est-à-dire assigner une valeur de vérité à chaque variable proposition-
nelle. Ce principe d’affectation est un problème que l’on peut présenter sous forme
récursive :
(1) choisir un littéral
(2) lui assigner la valeur vrai
(3) À partir de là 3 situations sont envisageables :
1. L’affectation rend vraie toutes les clauses. La résolution se termine, un modèle
a été trouvé.
2. L’affectation provoque une incohérence. Une clause ne contient que des litté-
raux affectés à faux. Il faut soit changer l’affectation, soit revenir sur une af-
fectation antérieure. Lorsque toutes les alternatives ont été épuisées l’ensemble
de clauses est dit incohérent.
3. Il n’y a pas d’incohérence et certaines clauses ne sont pas encore vraies. Le
processus d’affectation doit continuer.

Remarque 12 Cette méthode revient grosso modo à la méthode élaborée par Quine
sur les arbres sémantiques

Considérons l’exemple suivant :

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 26

Exemple 2.6.7 .
Soit C = {{¬p}, {p, q}, {p, r}, {p, ¬s}} et la formule F = ((p1 ∧ ¬p) ∨ ¬p1 ).
On construit le nouvel ensemble de clauses
C ∪ {¬F } = C ∪ {¬p1 , p}, {p1}} = C ′
On pose I[p1 ] = 1, cette affectation ne pose pas de problème pour C ; pour que C ′
admette un modèle il faut que I[p] = 1 et que C admette un modèle. Ce n’est pas le
cas à cause de la clause {¬p}. Il faut donc revenir sur un choix antérieur, si I[p] = 0
alors C ′ est incohérent. Il faut revenir sur l’affectation de p1 et choisir I[p1 ] = 0, ce
qui rend C ′ incohérent. Donc on établit que C |= F .

2.7 Système de preuve


Système à la Hilbert
On se donne un ensemble d’axiomes logiques A qui sont des formules valides du
calcul propositionnel. On se donne une règle d’inférence appelée modus ponens : Si
on a f et f ⇒ g alors on a g.
Définition 2.7.1 Soit ϕ une formule. Une preuve de ϕ est une liste finie ordonnée
de formules ϕ1 , ϕ2 , . . . , ϕn où ϕn = ϕ et chaque ϕi est
– Soit une instance d’axiome de A (ou de théorème) c’est-à-dire l’un des axiomes
logiques (ou l’un des théorèmes déjà démontrés) dans lequel les variables pro-
positionnelles sont remplacées par des formules.
– Soit une formule conséquence des formules antérieures par modus ponens.
Une formule ϕ qui admet une preuve est un théorème, que l’on note |= ϕ
Remarque 13 Il existe plusieurs choix possibles d’ensembles d’axiomes. Certains
ensembles d’axiomes sont définis pour les connecteurs {⇒, ¬}. On a vu que cet
ensemble n’est pas moins expressif que {∧, ¬, ∨, ⇒, ⇔}.
Voici un exemple de système d’axiomes A pour les connecteurs {∧, ¬, ∨, ⇒} :
– Axiome K : f ⇒ (g ⇒ f )
– Axiome S : (f ⇒ (g ⇒ h)) ⇒ ((f ⇒ g) ⇒ (f ⇒ h))
– Raisonnement par l’absurde : (¬f ⇒ g) ⇒ ((¬f ⇒ ¬g) ⇒ f )
– Contraposition : (¬f ⇒ ¬g) ⇒ (f ⇒ g)
– f ⇒ (g ⇒ (f ∧ g))
– (f ∧ g) ⇒ f, (f ∧ g) ⇒ g
– f ⇒ (f ∨ g), g ⇒ (f ∨ g)
– Raisonnement par cas : (f ∨ g) ⇒ ((f ⇒ h) ⇒ ((g ⇒ h) ⇒ h))

Pour simplifier les preuves, on étend le système en ajoutant la possibilité d’utiliser


des hypothèses (formules non prouvées).

Le système A est correct car tout théorème est une tautologie (on ne démontre
pas des formules qui ne sont pas valides !) et complet car toute tautologie est un
théorème, c’est-à-dire qu’on peut construire une preuve pour toute formule valide.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 27

2.8 Exercices
Exercice 1:
1. Démontrer que {¬, ∧, ∨} forme une base en regard de la logique. Cette base
n’est pas minimale, puisque les ensembles {¬, ∧} et {¬, ∨} sont aussi des bases.
2. Démontrer que l’opérateur ternaire ite (si-alors-sinon) défini par la relation
ite(x, y, z) = (x ∧ y) ∨ (¬x ∧ z) forme une base.
3. Démontrer que l’opérateur binaire ↑ (non-et) qui vérifie (p ↑ q) = ¬(p ∧ q)
forme une base.
4. Démontrer que l’opérateur binaire ↓ (non-ou) qui vérifie (p ↓ q) = ¬(p ∨ q)
forme une base.
Exercice 2:
1. Trouver des formules simples et utilisant la base {¬, ∨, ∧} (au sens où elles
mettent en jeu peu de connecteurs logiques, et peu de variables proposition-
nelles) qui soient : valides, inconsistantes, consistantes mais non valides, contin-
gentes.
2. Trouver une formule valide utilisant comme connecteur principal l’implication
logique (⇒).
Exercice 3:
– Construire l’arbre sémantique associé à la formule ((((p ∧ q) ⇒ r) ∧ (p ∧ q)) ⇒
(p ⇒ r)). En prenant comme ordre sur les variables, l’ordre de rencontre dans
la formule.
– Construire l’arbre sémantique associé, dans le cas où l’ordre est r, p, q.
Exercice 4:
– Montrer que la formule ((p ⇒ q) ⇒ r) n’est pas identique à la formule (p ⇒
(q ⇒ r)). Trouver un exemple en français.
– Montrer que les formules ((p ≡ q) ≡ r) et (p ≡ (q ≡ r)) sont identiques.
Exercice 5: Quelle est votre conclusion pour les quatre situations suivantes :
1. (((p ⇒ q) ∧ p) ⇒?)
2. (((p ⇒ q) ∧ q) ⇒?)
3. (((p ⇒ q) ∧ ¬p) ⇒?)
4. (((p ⇒ q) ∧ ¬q) ⇒?)
Exercice 6: Tiré de B. Ruyer :
Arthur, Barnabé et Casimir sont soupçonnés d’avoir peint en vert le chat de la voi-
sine. Ils font les déclarations suivantes :
Arthur : Barnabé est le coupable, Casimir est innocent ;
Barnabé : Si Arthur est coupable, Casimir aussi ;
Casimir : Je suis innocent, mais au moins l’un des deux autres est coupable.

Transcrire les trois déclarations dans le langage de la logique en posant : a =


"Arthur est coupable", b = "Barnabé est coupable", c = "Casimir est coupable".
Puis, à l’aide d’une table de vérité, répondre aux questions suivantes :

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique propositionnelle 28

1. Si Casimir a menti, que dire de la déclaration d’Arthur.


2. Si Casimir a menti, que dire de la déclaration de Barnabé.
3. En supposant que tous ont dit la vérité, qui est coupable, qui est innocent.
4. En supposant que tous sont coupables, qui a menti, qui a dit la vérité.
5. En supposant que tout innocent dit la vérité et que tout coupable ment, qui
est innocent, qui est coupable.
6. Que répondre à la question : "En supposant que les innocents ont menti et que
les coupables ont dit la vérité, qui est innocent, qui est coupable".
Exercice 7: Cinq amis (A)ndré, (B)arnabé, (C)asimir, (D)ésiré et (L)udovic sont
au restaurant où il mange du b uf. On cherche à déterminer, à partir des assertions
ci-dessous, quel(s) condiment(s) ils ont choisi.
1. A prend du sel, ssi B ou L prend du sel et de la moutarde.
2. A prend de la moutarde, ssi C ou D prend un seul condiment.
3. B prend du sel, ssi C ne prend que du sel ou que de la moutarde.
4. B prend de la moutarde, ssi D ne prend ni sel ni moutarde ou A prend du sel
et de la moutarde.
5. C prend du sel, ssi B ne prend qu’un des deux condiments ou A n’en prend
aucun.
6. C prend de la moutarde, ssi D prend du sel et de la moutarde ou L prend du
sel et de la moutarde.
7. D prend du sel, ssi B ne prend ni sel ni moutarde ou C prend du sel et de la
moutarde.
8. D prend de la moutarde, ssi L ou A ne prennent aucun condiment.
9. L prend du sel, ssi B ou D ne prennent aucun condiment.
10. L prend de la moutarde, ssi C ou A ne prennent aucun condiment.
Exercice 8:
– Trouver la forme clausale simplifiée de la formule ((p ⇒ (q ⇒ r)) ⇒ ((p ∧s) ⇒
r)).
– En prenant la formule de l’exercice précédent appliquer les différentes tech-
niques de résolution exposées au cours de ce chapitre.
Exercice 9:

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Chapitre Trois

Logique des prédicats

Dès qu’on veut manipuler des propriétés générales un peu compliquées et des re-
lations entre objets, on est conduit à utiliser des énoncés dont la valeur de vérité
dépend de variables, comme par exemple : "lundi il pleut et dimanche il ne pleut
pas". De tels énoncés s’appellent des prédicats et leur théorie, qui généralise le cal-
cul propositionnel, s’appelle le calcul des prédicats, introduit par les mathématiciens
pour répondre à leurs propres besoins, et la preuve de son immense pouvoir d’ex-
pression est qu’il leur permet effectivement de représenter les objets et notions dont
ils se servent.
C’est à cause de son aptitude très générale pour la représentation et la manipulation
des connaissances que le calcul des prédicats a intéressé les informaticiens.

La logique propositionnelle est limitée, elle ne peut traiter des syllogismes de la


forme :
"p : Tout homme est mortel, q : Socrate est un homme, r : Socrate est mortel" qui
peu ou prou se traduirait en Logique Propositionnelle par p ∧ q ⇒ r alors que la
formule correcte devrait être :

[∀x(homme(x) ⇒ mortel(x)) ∧ homme(Socrate)] ⇒ mortel(Socrate)

Ainsi, la logique des prédicats, aussi appelée logique du premier ordre, introduit un
nouvel objet : le prédicat.
Exemple 3.0.1 grand-pere(marcel,albert)
Le résultat du prédicat est un booléen, i.e. à valeur dans {vrai, f aux}. Dans le cas
où le résultat est vrai, il y a évaluation des arguments incomplètement spécifiés.

Dans une fonction, tous les arguments sont spécifiés, l’évaluation de la fonction
retourne une valeur. Un prédicat, peut-être vu comme la relation existant entre une
fonction (munie de ses paramètres) et le résultat retourné.

3.1 Calcul des prédicats, le point de vue formel


Un prédicat est une expression qui retourne une valeur de vérité quand elle est
appliquée à certains arguments (les arguments d’un prédicat sont des termes). Si
un prédicat accepte seulement un argument, on dit qu’il définit une propriété.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 30

Il nous faut définir les objets manipulés par ce calcul, de la même façon que nous
avons défini un langage propositionnel. Il y a ainsi :
1. Des connecteurs logiques (comme pour la logique propositionnelle).
2. Des quantificateurs, universel et existentiel.
3. Des constantes relationnelles (prédicats), par exemple grand-pere.
4. Des variables.
5. Des constantes, par exemple 1, 2, albert, marcel dans grand-pere(albert,marcel).
6. Des constantes fonctionnelles, par exemple cons, car, cdr

Notation
Nous allons maintenant fixer les notations pour chaque objet de ce langage :
1. Les variables seront notées x, y, z éventuellement indicées.
2. Les prédicats seront p, q, r éventuellement indicés.
3. Les constantes seront a, b, c éventuellement indicées.
4. Les constantes fonctionnelles f, g, h éventuellement indicées.
5. Les connecteurs logiques principalement utilisés seront ¬, ∨, ∧, ⇒, ≡.
6. Les deux connecteurs seront ∃, ∀.
7. Les constantes booléennes 1 (ou vrai) et 0 (ou faux).
8. Les symboles de ponctuations "(", "," et ")".

Définition 3.1.1 Un terme est soit :


– une constante,
– une variable,
– une constante fonctionnelle suivie d’une suite de termes t1 , . . . , tk entre paren-
thèses. La constante fonctionnelle est appelée foncteur principal.
Un terme sera dit clos s’il ne contient aucune variable.

Exemple 3.1.1 Quelques exemples de termes :

Terme Arité
a 0
x 0
f (x, a, x, g(a), f (a, b)) 5

Table VIII – Exemples de termes

Définition 3.1.2 Une forme prédicative est un terme particulier dont le foncteur
principal est un prédicat. L’arité est définie de manière similaire.

Exemple 3.1.2 p, (resp. q(f (a, b), x, y, g(x, a))) est une forme prédicative d’arité 0
(resp. 4)

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 31

Définition 3.1.3 L’ensemble des formules atomiques contient les formes suivantes :
– t1 = t2 où les ti sont des termes
– une forme prédicative est une formule atomique.
Définition 3.1.4 Une formule est définie de manière inductive par :
1. Les constantes booléennes sont des formules.
2. Une formule atomique est une formule.
3. ¬A est une formule si A est une formule.
4. Si A et B sont des formules alors (A ⊲⊳ B) est une formule pour
⊲⊳∈ {∨, ∧, ⇒, ≡}.
5. Si x est une variable et A une formule ne contenant pas ∀xB ou ∃xB, alors
∀xA est une formule et ∃xA aussi.

3.1.1 Sous-formules d’une formule


L’ensemble des sous-formules d’une formule est défini de la manière suivante :
– si A est une formule atomique, alors l’ensemble des sous-formules de A est
{A} ;
– si A est une formule, alors l’ensemble des sous-formules de ¬A est {¬A} union
l’ensemble des sous-formules de A ;
– si A est une formule, x une variable et si Q désigne l’un des quantificateurs ∀
ou ∃, alors l’ensemble des sous-formules de Qx A est {Qx A} union l’ensemble
des sous-formules de A ;
– si A et B sont des formules et si conn ∈ {∨, ∧, ⇒, ≡} , alors l’ensemble des
sous-formules de A conn B est l’ensemble {A conn B} union l’ensemble des
sous-formules de A union l’ensemble des sous-formules de B.
Exemple 3.1.3 Soit le langage L du calcul des prédicats défini par
L = {a, b, c} ∪ {f /2, g/3, h/1} ∪ {P/3, Q/2}
Le premier ensemble est composé des constantes qui, dans une définition plus gé-
nérale, peuvent être considérées comme des fonctions d’arité 0. Le deuxième en-
semble est composé des fonctions et de leurs arités. Cette arité est généralement
sous-entendue dans l’écriture des formules. Le troisième ensemble est composé des
prédicats et de leurs arités. La formule
(∀xP (f (x, a), b, y)) ⇒ (∀uQ(z, b))
est une formule de L dont (∀xP (f (x, a), b, y)) est une sous-formule.

3.1.2 Variables libres ou liées


Les notions de variables libres ou variables liées jouent un rĹole crucial en logique
des prédicats. En effet, seules les variables libres sont substituables dans une formule.
Cette distinction est étroitement liée à la notion de portée d’un quantificateur dans
une formule, i.e. la sous-formule sur laquelle le quantificateur s’applique.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 32

Définition 3.1.5 Une occurrence d’une variable x est dite liée dans une formule A
si elle appartient à une sous-formule de A qui débute par ∀x ou ∃x ; sinon elle est
dite libre.

Exemple 3.1.4
Dans la formule ∀xP (x, y, f (x)) ⇒ E(g(x, y), x), les deux premières occurrences de
x sont liées, les deux dernières sont libres.
Dans la formule ∀x(P (x, y, f (x)) ⇒ E(g(x, y), x)), toutes les occurrences de x sont
liées.

Définition 3.1.6 Une variable libre (resp. liée) d’une formule A est une variable
qui a une occurrence libre (resp. liée) dans A. Une formule sans variable libre est
dite close.

Revenons à la Logique est considérons la formule : ∀x(homme(x) ⇒ mortel(x)).

La variable x est liée ; la liaison est introduite par la première occurrence de x


qui suit immédiatement un quantificateur. Une autre façon de présenter, consiste à
considérer une formule comme une chaîne de caractère, on dira qu’une variable x
est liée dans une formule Φ, s’il existe une sous chaîne de Φ qui soit une formule
de la forme ∀xΦ ou ∃xΦ. La portée d’une quantification est la formule à laquelle
la quantification se rapporte. La première occurrence de x est dite quantifiée. Une
variable sera dite libre si elle n’est ni liée, ni quantifiée.

Exemple 3.1.5 Examinons les formules suivantes :


– ∀xp(x, a) ⇒ ∃xq(x)
– ∀xp(x, a) ⇒ q(x)
Dans la première formule, la deuxième occurrence de x est liée par le quantificateur
universel, tandis que la quatrième occurrence est liée par le quantificateur existentiel,
on aurait pu écrire ∀xp(x, a) ⇒ ∃yq(y). Dans la seconde, la deuxième occurrence de
x est liée par le quantificateur universel, tandis que la troisième occurrence de x est
libre (q(x) n’est pas dans la portée du quantificateur), dans ce cas il est préférable de
la réécrire sous la forme ∀yp(y, a) ⇒ q(x).

3.1.3 Standardisation des variables


Une formule est dite propre ou rectifiée lorsque l’ensemble de ses variables liées
est disjoint de celui des variables libres, et que toutes les occurrences d’une variable
liée appartiennent à une même sous-formule de liaison.

Pour transformer une formule non propre en une formule propre, il suffit de stan-
dardiser les variables en les renommant de la manière suivante :
– renommer les occurrences liées de toute variable libre,
– donner des noms différents à toutes les variables liées se trouvant dans des
sous-formules de liaison différentes.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 33

Exemple 3.1.6 Soit la formule non propre

A = ∀x(∃yP (x, y) ⇒ ∀zQ(x, y, z) ∧ ∀y∃xR(f (x), y)).

Elle se transforme en la formule propre

A′ = ∀x(∃uP (x, u) ⇒ ∀zQ(x, y, z) ∧ ∀v∃wR(f (w), v)).

Soit x1 , . . . , xn l’ensemble des variables libres d’une formule propre A. La formule


close ∀x1 (. . . (∀xn A) . . .) est appelée clĹoture universelle de A.

3.2 Sémantique
Une interprétation pour le calcul des prédicats est un triplet I = (DI , Ic , Iv ) avec :
1. DI 6= ∅, c’est le domaine d’interprétation
2. Ic une fonction qui associe à toute constante fonctionnelle f d’arité n, Ic (f ) :
DIn → DI et qui à toute constante prédicative p d’arité Ic (p) : DIm → {0, 1}
3. Iv une fonction qui, à toute variable associe une valeur dans DI .
On peut maintenant définir I

Définition 3.2.1

Une interprétation I = (DI , Ic , Iv ) vérifie les points suivants :


– Si x est une variable libre, I[x] = Iv (x).
– Si f est une fonctionnelle d’arité n et si t1 , t2 , . . . , tn sont des termes alors
I(f (t1 , t2 , . . . , tn )) = Ic (f ()(I[t1 ], . . . , I[tn ])
– Si p est une constante prédicative d’arité m et si t1 , t2 , . . . , tm sont des termes
alors I(p(t1 , t2 , . . . , tm )) = Ic (p()(I[t1 ], . . . , I[tm ]).
– Si t1 et t2 sont des termes alors I[t1 = t2 ] = 1, si I[t1 ] = I[t2 ] et 0 sinon.
– Si A et B sont des formules, alors I[¬A], I[AθB] avec θ ∈ {∨, ∧, ⇒, ≡} s’in-
terprètent comme dans le calcul des propositions.

Pour ce qui est de l’interprétation des quantificateurs, on doit préalablement intro-


duire une notation : Si I est une interprétation de domaine DI , si d ∈ DI alors I x/d
désigne l’interprétation J telle que :
1. DJ = DI
2. Jc = Ic
3. Jv (x) = d et Jv (y) = Iv (y) pour toute variable libre y 6= x.
Dans ce cas les règles d’interprétation sont données par :
– I[∀xA] = 1, si I x/d (A) = 1 pour tout élément d de DI .
– I[∃xA] = 1, si I x/d (A) = 1 pour au moins un élément d de DI .
On dira qu’une formule A du calcul des prédicats est vraie pour une interprétation
I lorsque l’on a I[A] = 1.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 34

On a, dans le calcul des prédicats les mêmes notions de formules valides (vraies pour
toute interprétation), inconsistantes (vraies pour aucune interprétation) et consis-
tantes (ou contingentes) (vraie pour au moins une interprétation). Si A est une
formule, un modèle de A est une interprétation I telle que I[A] = 1. L’introduction
des quantificateurs entraîne certaines relations avec les connecteurs logiques. Le ta-
bleau IX est un résumé de ces correspondances :
En exo, (voir 3.8)

(∀xA ∧ ∀xB) ≡ (∀x(A ∧ B)


(∀xA ∨ ∀xB) ⇒ (∀x(A ∨ B)
∀x(A ⇒ B) ⇒ (∀xA ⇒ ∀xB)
∀x(A ≡ B) ⇒ (∀xA ≡ ∀xB)
(∃x(A ∨ B) ≡ (∃xA ∨ ∃xB)
(∃x(A ∧ B) ⇒ (∃xA ∧ ∃xB)
∃x(A ⇒ B) ≡ (∃xA ⇒ ∃xB)
∀x¬A ≡ ¬∃xA
∀x∀yA ≡ ∀y∀xA
∃x∃yA ≡ ∃y∃xA
∃x∀yA ⇒ ∀y∃xA

Table IX – Schémas avec quantificateurs

3.3 Substitution et instanciation


3.3.1 Substitution d’une variable par un terme
On appelle substitution toute application s de l’ensemble des variables V vers
l’ensemble des termes T :
 σ: V → T
 σ(X) = nom_f onct(terme1, terme2, . . . , termen)
X 7−→ σ(X) = Constante

σ(X) = variable
Une substitution σ est finie si σ(X) 6= X pour un nombre fini de variables X. Nous
ne considèrerons dans la suite du cours que des substitutions finies, et le qualificatif
sera donc omis.

Soient A une formule dont x est une variable libre et t un terme. La substitu-
tion de t à x dans A, notée (x|t)A, est la formule obtenue en remplaçant chaque
occurrence libre de x dans A par t, et ceci après avoir renommé des variables liées
de telle manière que que x ne soit plus variable liée (si x l’était) et que plus aucune
variable de t ne soit liée (s’il y en avait).
Exemple 3.3.1 Soit A = P (x) ∨ ∀x∃yQ(x, y) et t = f (y, u). Pour obtenir (x|t) A,
on renomme d’abord les occurrences liées de x et y, ce qui donne :
P (x) ∨ ∀z1 ∃z2 Q(z1 , z2 ),

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 35

puis on effectue la substitution, ce qui donne :

P (f (y, u)) ∨ ∀z1 ∃z2 Q(z1 , z2 ).

Soit x une variable libre d’une fbf A et t un terme. Le terme t est substituable à x
si aucune occurrence libre de x, lorsque remplacée par t, ne devient liée en ce sens
qu’il y apparait des occurrences liées de variables de t.
Exemple 3.3.2 Le terme f (y, u) est substituable à x dans P (x) ∨∀x∃yQ(x, y) mais
pas dans ∀yP (x, y) ∨ ∀x∃yQ(x, y)

Définition 3.3.1 On représente une substitution σ par l’ensemble de paires de la


forme x|t où σ(X) = X. On étend la notion de substitution au terme de la façon
suivante :
Soit σ = {x|f (y), z/g(y, y)} et soit t = h(g(x, y), f (a, z)), σ(t) = h(g(f (y), y), f (a, g(y, y)))
La composée de deux substitutions σ1 et σ2 est la fonction σ2 ◦ σ1 définie par :

(σ2 ◦ σ1 )(t) = σ2 (σ1 (t))

Un terme t1 est une instanciation d’un terme t s’il existe une substitution σ1 telle
que
σ1 (t) = t1

On supposera, par la suite que les substitutions sont idempotentes, c’est-à-dire que
quelque soit la substitution utilisée on aura :

(σ ◦ σ)(t) = σ

Soit φ une formule de LP1. On appelle substituée de φ par une substitution


σ = [X → σ(X)] la formule obtenue par remplacement de toute occurrence de
la variable X dans φ par le terme substitué σ(X). Par extension, on note σ(φ) la
substituée.

3.4 Unification (de deux formules)


L’unification est la mise en coïncidence des atomes par un bon choix des termes
substitués aux variables. Il s’agit là d’une idée qui est assez ancienne en logique
mathématique. Son utilisation comme élément fondamental d’un algorithme de dé-
monstration automatique est due à Robinson (1965).

On se donne (S1) : P (x) ∨ R(A) et (S2) : P (B) ∨ R(y).


Soient φ1 et φ2 deux formule quelconques de LP1. On dit que φ1 et φ2 sont uni-
fiables ssi il existe une substitution s telle que σ(φ1 ) = σ(φ2 ). La substitution s est
alors appelée unificateur de φ1 et φ2 .

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 36

On introduit maintenant la notion d’unification, soit A et B deux termes ; s’il existe


une certaine substitution θ telle que θ(A) = θ(B) on dira que θ est un unificateur
de A et B, ou encore que A et B sont unifiables. Un unificateur de A et B sera
dit mgu s’il est plus général que tout autre unificateur de A et B. De fait, on a le
théorème de Robinson qui stipule que :
Théorème 3.4.1 Il existe un algorithme (appelé algorithme d’unification) qui pro-
duit, pour deux termes, un mgu, s’ils sont unifiables, ou un message indiquant l’ab-
sence d’un unificateur.

3.4.1 Substitution
Les formules considérées dans ce sous-paragraphe ne sont pas quantifiées.

On appelle composant de substitution toute expression de la forme (x|t) où


x est une variable et t un terme quelconque du calcul des prédicats. Si A est une
formule du calcul des prédicats, on note (x|t)A la formule obtenue en remplaçant
dans A toutes les occurrences de x par t.
Remarque 14 Les formules envisagées dans cette section n’étant pas quantifiées,
le renommage des variables n’est pas nécessaire.
Une substitution est une application σ de l’ensemble des fbf du calcul des prédicats
du premier ordre dans lui-même, de la forme :

σ : A −→ c1 . . . ck A

où c1 . . . ck sont des composants de substitution. La suite finie c1 . . . ck est appelée


décomposition de la substitution σ, ce que l’on note σ = [c1 . . . ck ]. La substitution
identique sera notée [] ou ǫ.
Exemple 3.4.1 Soit σ = [(x|f (a))(y|f (x))] une substitution. Alors

σP (x, y) = (x|f (a))P (x, f (x)) = P (f (a), f (f (a)))

Remarque 15 La décomposition en composants de substitution n’est en général ni


commutative (se vérifie à partir de l’exemple ci-dessus), ni unique ([(x|y)(z|y)] =
[(z|y)(x|y)]).

Soit Γ = A1 , . . . , An un ensemble fini de formules atomiques du calcul des prédicats


du premier ordre. On appelle unificateur de Γ toute substitution σ telle que σA1 =
. . . = σAn .
Exemple 3.4.2 Soit Γ = A1 , A2 , A3 avec A1 = P (x, z), A2 = P (f (y), g(a)) et
A3 = P (f (u), z). Alors σ = [(x|f (u))(y|u)(z|g(a))] est un unificateur de Γ .

Remarque 16 Si σ est un unificateur d’un ensemble fini de formules Γ , alors pour


toute substitution α, ασ est un unificateur de Γ . 2) Il est possible qu’un ensemble
de formules n’admette aucun unificateur (Γ = P (x, f (x)), P (f (y), y)).

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 37

Soit σ un unificateur d’un ensemble de formules Γ . On dit que σ est un plus grand
unificateur (ou un unificateur le plus général ) de Γ si pour tout unificateur α
de Γ il existe une substitution β telle que σ = βα.
Exemple 3.4.3 En reprenant l’exemple précédent, σ est un plus grand unificateur
de Γ . La substitution σ = [(x|f (v))(y|v)(z|g(a))(u|v)] en est un autre et on a σ =
(v|u)ρ et ρ = (u|v)σ.

3.5 Algorithme d’unification


La résolution de 2 clauses suppose d’avoir un littéral dans une clause et sa négation
dans l’autre clause. L’algorithme d’unification permet d’unifier 2 littéraux proches
pour ensuite appliquer la résolution.
Exemple 3.5.1 {P (f (z), z) ∨ φ, ¬P (f (a), x) ∨ Ψ}
Unificateur de P(f(z),z) et P(f(a),x) : [z := a][x := a]
On obtient :
{P (f (a), a) ∨ φ([z := a][x := a]), P (f (a), a) ∨ Ψ([z := a][x := a])}

3.5.1 Algorithme
On déplace un pointeur de gauche à droite le long des deux littéraux à unifier Placer
le pointeur sous la première paire de termes (ou sous-termes, etc.) discordants.
Si les deux (sous-)termes sont des constantes, s’arrêter et déclarer les littéraux non
unifiables.
Si l’un des (sous-)termes est une variable xi , et si l’autre ti la contient, s’arrêter et
déclarer les littéraux non unifiables, sinon substituer ti à xi et retourner au début
de l’algorithme.

Comme dans le cadre de la logique propositionnelle, on va pouvoir définir la no-


tion de littéral (qui ici sera soit une forme prédicative soit sa négation), la notion
de clause (comme disjonction de littéraux) et les notions de forme conjonctive (resp.
disjonctive) normale. Une forme de Skolem est une formule qui ne comporte plus
de quantificateurs existentiels. On dira qu’une formule est sous forme clausale si
c’est une forme conjonctive normale sous forme de Skolem. À partir de là, on va
pouvoir définir la notion de résolution dans le cadre du calcul des prédicats.

En logique du premier ordre, toute formule admet une forme clausale qui en est
la conséquence logique. Contrairement à la logique propositionnelle, cette forme
clausale n’est pas unique.

Algorithme de normalisation
1. Mise sous fnc : idem qu’en Logique Propositionnelle (LP), sauf que restent
les quantifications
2. Mise sous forme prenexe : déplacement des quantifications en tête de fnc

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 38

3. Skolemisation : élimination des ∃


4. Mise sous forme clausale : élimination des ∀

Forme normale : formules d’équivalence


– réduction de la portée des négations : ¬∀xA ≡ ∃x¬A et ¬∃xA ≡ ∀x¬A
– mise sous forme prenexe
(∀xA ∧ ∀xB) ≡ (∀x(A ∧ B)
(∃xA ∧ ∀xB) ≡ (∃x(A ∧ B)
(∀xA ∧ B) ≡ (∀x(A ∧ B)
(∀xA ∨ B) ≡ (∀x(A ∨ B)
(A ∧ ∀xB) ≡ (∀x(A ∧ B)
(A ∨ ∀xB) ≡ (∀x(A ∨ B)
(∃xA ∧ B) ≡ (∃x(A ∧ B)
(∃xA ∨ B) ≡ (∃x(A ∨ B)
(A ∧ ∃xB) ≡ (∃x(A ∧ B)
(A ∨ ∃xB) ≡ (∃x(A ∨ B)
– Forme de Skolem : remplacement des variables quantifiées existentiellement
– par une constante si la variable est dans la portée d’aucune autre quantifi-
cation universelle.
– par une fonction f(x1, ... , xn) où les xi sont les variables correspondant aux
quantifications universelles dans la portée desquelles se trouvait la variable

Forme prénexe
Soit A une formule du calcul des prédicats du premier ordre. On dit que A est
sous forme prénexe si A est de la forme :

A = Q1 x1 . . . Qn xn B

où chaque Qi est soit ∀, soit ∃ et où B ne contient aucun quantificateur.

Proposition 3.5.1 Pour toute formule A du calcul des prédicats du premier ordre,
il existe une formule A′ sous forme prénexe qui est sémantiquement équivalente à A.

On sait que si dans une formule F comportant une sous-formule B, on remplace


B par une formule (sémantiquement) équivalente B ′ , on obtient une formule F ′
(sémantiquement) équivalente à F . Voici une méthode permettant, à partir d’une
formule quelconque, d’obtenir une formule équivalente sous forme prénexe. Le fait
que cette méthode se termine et donne effectivement une formule sous forme prénexe
équivalente à celle de départ résulte de considérations élémentaires.
(a) Se débarrasser de ⇒ et ⇔ en utilisant les équivalences suivantes de gauche à
droite :
a1 (A ⇒ B) ≡ (¬A ∨ B)
a2 (A()B) ≡ ((A ∧ B) ∨ (¬A ∧ ¬B))

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 39

(b) Changer le nom de certaines variables liées de manière à n’avoir plus de variable
quantifiée deux fois, en utilisant les équivalences suivantes :
b1 ∀x A(x) ≡ ∀y A(y)
b2 ∃x A(x) ≡ ∃y A(y).
(c) Faire remonter tous les quantificateurs en tête en utilisant les équivalences
suivantes de gauche à droite (x n’étant pas variable libre de C) :
c1 ¬∃x A(x) ≡ ∀x¬A(x)
c2 ¬∀x A(x) ≡ ∃x¬A(x)
c3 (C ∨ ∀x A(x)) ≡ ∀x (C ∨ A(x))
c4 (C ∨ ∃x A(x)) ≡ ∃x (C ∨ A(x))

Exemple 3.5.2 (∀x A(x) ⇒ (∃yB(y) ∨ ∃y C(y)))


≡ (¬∀x A(x) ∨ (∃yB(y) ∨ ∃y C(y))) (a1)
≡ (¬∀x A(x) ∨ (∃yB(y) ∨ ∃z C(z))) (b2)
≡ (∃x ¬A(x) ∨ (∃yB(y) ∨ ∃z C(z))) (c2)
≡ ∃x(¬A(x) ∨ (∃yB(y) ∨ ∃z C(z))) (c4 et commutativité de ∨)
≡ ∃x(¬A(x) ∨ ∃y(B(y) ∨ ∃z C(z))) (c4 et commutativité de ∨)
≡ ∃x∃y(¬A(x) ∨ (B(y) ∨ ∃z C(z))) (c4)
≡ ∃x∃y(¬A(x) ∨ ∃z (B(y) ∨ C(z))) (c4)
≡ ∃x ∃y ∃z (¬A(x) ∨ (B(y) ∨ C(z))) (c4)

Remarque 17 Pour limiter le nombre de quantificateurs de la formule finale, il


peut être intéressant de ne pas mener complètement l’étape (b) et, à l’étape (c),
d’utiliser les deux équivalences supplémentaires suivantes :
c7 (∀x A(x) ∧ ∀x B(x)) ≡ ∀x (A(x) ∧ B(x))
c8 (∃x A(x) ∨ ∃x B(x)) ≡ ∃x (A(x) ∨ B(x))

Exemple 3.5.3 En reprenant l’exemple précédent : (∀x A(x) ⇒ (∃y B(y)∨∃y C(y)))
≡ (¬∀xA(x) ∨ (∃y B(y) ∨ ∃y C(y))) (a1) ≡ (¬∀xA(x) ∨ ∃y (B(y) ∨
C(y))) (c8) ≡ (∃x ¬A(x) ∨ ∃y (B(y) ∨ C(y))) (c2)
≡ (∃x ¬A(x) ∨ ∃x (B(x) ∨ C(x))) (b2) ≡ ∃x (¬A(x) ∨ (B(x) ∨ C(x)))(c∀)

Forme de Skolem
Soit Q1 x1 . . . Qn xn B une formule A mise sous forme prénexe. On appelle forme
de Skolem de A, et on note AS , la formule obtenue en enlevant tous les ∃xi , en
remplaÿcant chacune des variables xi quantifiées avec un ∃ par fi (xj1 , . . . xjl ) o‘u
xj1 , . . . xjl sont les variables quantifiées par des ∀ placés avant le ∃xi . Lorsqu’il n’y a
aucun quantificateur ∀ avant le ∃xi , le symbole que l’on introduit est une constante
(une constante est un symbole fonctionnel d’arité nulle). On suppose, bien sĹur,
que les symboles fonctionnels fi introduits sont différents de tous ceux utilisés par
ailleurs.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 40

Exemple 3.5.4 La forme de Skolem de

∃x1 ∀x2 ∃x3 ∀x4 ∃x5 P (x1 , x2 , x3 , x4 , x5 )

est
∀x2 ∀x4 P (a, x2 , f1 (x2 ), x4 , f2 (x2 , x4 )).

Proposition 3.5.2 (Théorème de Skolem).


Soit {A1 , . . . , An } un ensemble fini de formules du calcul des prédicats du premier
ordre. Soit {AS1 , . . . , ASn } l’ensemble des formes de Skolem de ces formules. Alors
{A1 , . . . , An } admet un modèle de base (domaine) D ssi {AS1 , . . . , ASn } admet un
modèle de base D.

3.5.2 Règle de résolution


Le principe est le même qu’en LP mais il faut ici faire l’unification des clauses pour
pouvoir les identifier lors de l’application de la règle de résolution. Ainsi :
Soient φ1 et φ2 deux clauses quelconques de LP1. On dit que φ1 et φ2 forment une
paire résolvable ssi elles contiennent une paire opposée de formules atomiques
ayant pour forme respective P (t1 , . . . , tn ) et ¬P (t′1 , . . . , t′n ) et qui peuvent être uni-
fiées par un unificateur σ. On appelle alors résolvante de φ1 et φ2 , la clause :

res(φ1 , φ2 ) = σ(φ1 \ {P }) ∪ σ(φ2 \ {P })

Preuve par résolution


Soit T un ensemble de clauses. On appelle preuve par résolution une suite finie de
clauses de T, (C1 , . . . , Cn ), telle que, pour tout i, Ci ∈ T ou il existe j, k < i tels
que : Cj ∧ Ck |= Ci .

Notation :
C est prouvable par résolution à partir de T se note : T |= C.

Deux emplois de la méthode


Méthode directe : on veut inférer des conséquences d’un ensemble de formules.
Méthode indirecte : on veut vérifier qu’une formule donnée Φ est bien conséquence
logique d’un ensemble de formules E. On considère alors l’ensemble E ∪ ¬Φ, et on
montre par la méthode de résolution que E ∪ ¬Φ |= {}.

Exemple 3.5.5 Soit le problème de savoir si la formule

B = ∃x ∃y Q(x, y)

est conséquence de l’ensemble des formules

Γ = ∀x (P (x) =)∃y (R(y) ∧ Q(x, y))), ∃x P (x).

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Logique des prédicats 41

L’ensemble Γ0 est alors : Γ0 = ∀x(P (x) =)∃y(R(y) ∧ Q(x, y))), ∃xP (x), ¬∃x∃yQ(x, y).
On obtient successivement les ensembles de formules :
Γ1 = ∀x∃y(¬P (x) ∨ (R(y) ∧ Q(x, y))), ∃xP (x), ∀x∀y¬Q(x, y),
Γ2 = ∀x(¬P (x) ∨ (R(f (x)) ∧ Q(x, f (x)))), P (a), ∀x∀y¬Q(x, y),
Γ3 = ¬P (x) ∨ (R(f (x)) ∧ Q(x, f (x))), P (a), ¬Q(x, y),
Γ4 = ¬P (x) ∨ Q(x, f (x)), ¬P (x) ∨ R(f (x)), P (a), ¬Q(x, y)

Si Γ4 n’a pas de modèle, alors la formule B est conséquence logique de l’ensemble


de formules Γ ; autrement, la formule B n’est pas conséquence logique de l’ensemble
de formules Γ

3.6 De la logique des prédicats à Prolog


3.7 Exercices
Définition 3.7.1

3.8 Exercices
Exercice 10: Pour chacune des formules du tableau IX (des schémas avec
quantificateurs) qui met en jeu le connecteur ⇒ en tant que connecteur principal,
montrez que l’on ne peut avoir ≡. Idée : on prendra le domaine des entiers et les
opérations arithmétiques de base. Ainsi pour établir la dernière formule, on pourra
considérer :
∀x∃y(x × y = 1
que l’on comparera à
∃y∀x(x × y = 1

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Deuxième partie

programmation logique

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


43

La programmation logique est une programmation déclarative, dont le tout


premier langage de programmation est PROLOG (Luminy, 1973). Cette program-
mation est basée sur la logique des prédicats.

Un programme logique est un ensemble fini de règles de la forme : "A." ou


A ← B1 , B2 , . . . , Bn . où A est appelé tête de la règle, A ← B1 , B2 , . . . , Bn . en
est le corps tandis que Ai , Bi pour 1 ≤ i ≤ n sont appelés atomes.

La programmation logique se distingue de la programmation impérative. En pro-


grammation impérative, le codage d’un algorithme se fait dans un langage de pro-
grammation et chaque type de question nécessite l’écriture d’une partie ou d’un
programme différent. Par conséquent, on ne traite pas de situations non spécifiées à
l’avance. En programmation logique par contre, la représentation des connaissances
sur un sujet se fait dans un formalisme adéquat eon peut, à partir de cette repré-
sentation, déduire des réponses aux questions de l’utilisateur. Le tableau X résume
quelque peu les différences entre ces deux approches de programmation.

Programmation logique Programmation impérative


Règle Procédure
Ensemble de règles Programme
Question (but) Appel de procédure
Preuve Exécution
Substitution, unification Passage de paramètres

Table X – Programmation logique vs Programmation impérative

Quoiqu’il en soit, le langage utilisé est celui de la logique des prédicats.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Chapitre Quatre

Programmation Logique : Le langage


Prolog

4.1 Introduction
Le Prolog est un langage répandu essentiellement dans le domaine universitaire
et le monde de la recherche. Il est lié de manière non exhaustive :
– à la logique formelle et à de nouvelles formes de programmation ;
– à une modélisation du raisonnement ;
– au traitement linguistique, à l’écriture de grammaires, d’analyseurs ;
– d’un point de vue plus applicatif, aux bases de données : il est facile de trans-
crire du SQL en Prolog et d’interfacer une base de données avec un module
logique écrit en Prolog.

4.2 Les éléments fondamentaux du Prolog


4.2.1 Les faits
Les faits sont des affirmations qui décrivent des relations ou des propriétés, par
exemple :
Program 1:
élève(jean, 1975, info, 2).
élève(catherine, 1974, info, 2).
élève(luc, 1976, _, 1).
masculin(jean).
masculin(luc).
féminin(catherine).
père(paul, jean).% paul est le père de jean
mère(isabelle, jean).

La forme générale d’un fait est la suivante : prédicat(argument1, argument2, · · · ).


Un prédicat est un symbole qui traduit une relation. L’arité est le nombre de ses
arguments. On identifie un prédicat par son nom et son arité : prédicat/arité, par
exemple mère/2, élève/4.

On charge ou on substitue le fichier (mise à jour) dans l’interprète Prolog avec


la commande :

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Programmation Logique : Le langage Prolog 45

?- consult(nom_de_fichier). ou bien avec le raccourci :


?- [nom_de_fichier].

4.2.2 Les questions ou les requêtes


Une fois le programme chargé, on peut poser des questions sur les faits :
?- masculin(jean).
Yes
?- masculin(françois).
No. (Pas dans la base de données)

On peut aussi utiliser des variables. Elles peuvent s’identifier à toutes les autres va-
leurs : aux constantes, aux termes composés, aux variables elles-mêmes. Les constantes
commencent par une minuscule, les variables commencent par une majuscule.
?- masculin(X).
X = jean ;
X = luc ;
No

Le caractère " ; " permet de demander la solution suivante. Le caractère Retour


arrête la recherche des solutions.

?- élève(X, Y, Z, 2)
X = jean, Y = 1975, Z = info ;
X = catherine, Y = 1974, Z = info.
?-

4.2.3 Les types du Prolog


En Prolog, tout est un terme :
– Les constantes ou les termes atomiques :
1. Les atomes sont des chaînes alphanumériques qui commencent par une
minuscule : jean, paul, tOtO1. On peut transformer une chaîne contenant
des caractères spéciaux (point, espaces, etc.) dans un atome en l’entourant
de caractères " ’ ". Ainsi ’Mal Juin’, ’Bd Pasteur’ sont des atomes.
2. Les nombres : 19, -25, -3.14, 23E-5
– Les variables commencent par une majuscule ou le signe _. _ tout seul est
une variable anonyme : X XYZ Xyz _x _3 _. Le système renomme en interne
ses variables et utilise la convention _nombre, comme _127 ou _G127.
Les structures ou termes composés se composent d’un foncteur avec une suite
d’arguments. Les arguments peuvent être des atomes, des nombres, des variables,
ou bien des structures comme par exemple élève(robert, 1975, info, 2, adresse(8265,
’Ngoa Ekellé’, ’Yaoundé’)). Dans l’exemple, élève est le foncteur principal.

Lors d’une question, si elle réussit, les variables s’unifient en vis-à-vis aux autres

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Programmation Logique : Le langage Prolog 46

termes. Les termes peuvent être composés comme par exemple adresse(8265, ’Ngoa
Ekellé’, ’Yaoundé’). Ajoutons le terme élève(robert, 1975, info, 2, adresse(8265, ’N-
goa Ekellé’, ’Yaoundé’)) dans le ficher et consultons-le. Posons la question :

?- élève(X, Y, Z, T, W).
X = robert
Y = 1975
Z = info
T=2
W = adresse(8265, ’Ngoa Ekellé’, ’Yaoundé’)

Le Prolog unifie le terme de la question au terme contenu dans la base de don-


nées. Pour ceci, il réalise la substitution des variables X, Y, Z, T, W par des termes,
ici des constantes et un terme composé. On note cette substitution : X = robert, Y
= 1975, Z = info, T = 2, W = adresse(8265, ’Ngoa Ekellé’, ’Yaoundé’).

On dit qu’un terme A est une instance de B s’il existe une substitution de A à
B:
– masculin(jean) et masculin(luc) sont des instances de masculin(X)
– X = jean ou X = luc sont les substitutions correspondantes.
Un terme est fondé (ground term) s’il ne comporte pas de variable : f(a, b) est fondé,
f(a, X) ne l’est pas ; une substitution est fondée si les termes qui la composent sont
fondés : X = a, Y = b est fondée, X = a, Y = f(b, Z) n’est pas fondée.

4.2.4 Variables partagées


On utilise une même variable pour contraindre deux arguments à avoir la même va-
leur. Par exemple, pour chercher un élève qui porterait le nom de sa filière (l’exemple
est un peu idiot) :
?- élève(X, Y, X, Z).

Les questions peuvent être des conjonctions et on peut partager des variables entre
les buts. Pour chercher tous les élèves masculins, on partage la variable X entre élève
et masculin :
?- élève(X, Y, Z, T), masculin(X).

4.2.5 Les règles


Les règles permettent d’exprimer des conjonctions de buts. Leur forme générale
est :

TÊTE :- C1, C2,... ,Cn.

La tête de la règle est vraie si chacun des éléments du corps de la règle C1,... ,Cn
est vrai. On appelle ce type de règles des clauses de Horn.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Programmation Logique : Le langage Prolog 47

fils(A, B) :- père(B, A), masculin(A).


fils(A, B) :- mère(B, A), masculin(A).
parent(X, Y) :- père(X, Y).
parent(X, Y) :- mère(X, Y).
grand_parent(X, Y) :- parent(X, Z), parent(Z, Y).% On utilise une variable inter-
médiaire Z

Un prédicat correspond donc à un ensemble de règles ou de faits de même nom


et de même arité : les clauses du prédicat. La plupart des versions de Prolog exigent
que toutes les règles et tous les faits d’un même prédicat soient contigus - groupés
ensembles - dans le fichier du programme. On note le prédicat par son nom et son
arité, par exemple fils/2, parent/2, grand_parent/2. Les faits sont une forme parti-
culière de règles qui sont toujours vraies. La notation :
fait. est en effet équivalente à :
fait :- true.

Définissons un nouveau prédicat " ancêtre/2 " déterminant l’ancêtre X de Y par


récursivité :

1. Condition de terminaison de la récursivité si c’est un parent direct.


ancêtre(X, Y) :- parent(X, Y).

2. Sinon X est ancêtre de Y si et seulement si il existe Z, tel que X parent de Z


et Z parent de Y.
ancêtre(X, Y) :- parent(X, Z), ancêtre(Z, Y).

Lors de l’exécution d’une requête, Prolog examine les règles ou les faits correspon-
dants dans l’ordre de leur écriture dans le programme : de haut en bas. Il utilise la
première règle (ou le premier fait) du prédicat pour répondre. Si elle échoue, alors
il passe à la règle suivante et ainsi de suite jusqu’à épuiser toutes les règles (ou tous
les faits) définies pour ce prédicat. Lorsqu’une règle est récursive, l’interprète Pro-
log rappelle le prédicat du même nom en examinant les règles (ou les faits) de ce
prédicat dans le même ordre.

Dans le corps d’une règle, la virgule " , " est le symbole représentant un ET logique :
le conjonction de buts. Le symbole " ; " représente le OU logique, la disjonction de
buts :
A :- B ; C.
est équivalent à A :- B.
A :- C.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Programmation Logique : Le langage Prolog 48

4.3 Mise en œuvre d’un programme

4.3.1 Le lancement de l’interprète


Pour le lancer, exécutez le fichier Prolog de swi-prolog qui provient de SWI
(http ://www.swi.psy.uva.nl/projects/SWI-Prolog/).

4.3.2 Chargement de fichiers


Les programmes sont dans des fichiers avec le suffixe " .pl " en général. Pour
compiler et charger un programme :
?- consult(nom_du_fichier). où nom_du_fichier est un atome, par exemple :

?- consult(’file.pl’). ou bien le raccourci avec la commande :


?- [nom_du_fichier].

Pour charger plusieurs fichiers simultanément :


?- [’file1.pl’, ’file2.pl’].

Une fois que les fichiers sont chargés, on peut exécuter les commandes. Elles se
terminent par un point " . " : ?- gnagnagna.

Les conjonctions de buts sont séparées par des " , " :


?- gna1, gna2, gna3.

On peut aussi inclure des directives dans un fichier par l’instruction : :- clause_à_exécuter.
Les directives sont des clauses que l’interprète exécutera lors du chargement du pro-
gramme.

L’affichage du contenu du fichier chargé se fait par :


?- listing.

L’affichage d’une clause particulière, ici père, se fait par :


?- listing(père).

Si on modifie le programme dans le fichier, on peut mettre à jour la base de données


par (Pas avec SWI où on ne peut que consulter) :
?- reconsult(’file.pl’).

Le raccourci de rechargement est :


?- [-’file.pl’].

Finalement, on quitte Prolog avec


?- halt.

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Programmation Logique : Le langage Prolog 49

4.3.3 Limitation des choix


4.3.4 Position du cut
4.3.5 Optimisation des calculs

4.4 Negation as failure


4.5 Prolog et l’arithmétique
4.6 Arithmétique selon Péano
4.7 Arithmétique et prédicat extra-logique
4.8 Exercices

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique


Bibliographie

Etienne KOUOKAM/INFO202 Fondements mathématiques de l’Informatique