Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
l’Informatique
Étienne KOUOKAM
Partie I Logique 4
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
Logique
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.
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
Remarque 1 :
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.
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.
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.
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 .
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.
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.
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).
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
la structure interne des propositions et les relations existant entre ces différentes
propositions.
Les lois logiques sur lesquelles repose le calcul des énoncés sont :
et
ou r
non non q
p p p
– 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.
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).
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
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
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))
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.
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.
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 }.
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.
. p
¬p 0
p 1
. . . q
¬q 0
q 1
. . . .
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.
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.
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
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
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 :
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
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.
p f1 f2 f3 f4
0 0 0 1 1
1 0 1 0 1
(p ∧ ¬p) p ¬p (p ∨ ¬p)
F = (¬pn ∧ G) ∨ (pn ∧ H)
Corollaire 2.6.1 Toute formule F peut se ramener à une fnc ou à une fnd.
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
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.
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.
Définition 2.6.6 .
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}, }
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.
Remarque 12 Cette méthode revient grosso modo à la méthode élaborée par Quine
sur les arbres sémantiques
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 .
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.
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.
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.
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é.
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 ")".
Terme Arité
a 0
x 0
f (x, a, x, g(a), f (a, b)) 5
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)
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.
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.
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.
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
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)
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 ),
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)
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) = σ
3.4.1 Substitution
Les formules considérées dans ce sous-paragraphe ne sont pas quantifiées.
σ : A −→ c1 . . . ck A
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.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.
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
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
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.
(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.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.
est
∀x2 ∀x4 P (a, x2 , f1 (x2 ), x4 , f2 (x2 , x4 )).
Notation :
C est prouvable par résolution à partir de T se note : T |= C.
B = ∃x ∃y Q(x, y)
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)
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
programmation logique
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.
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
?- élève(X, Y, Z, 2)
X = jean, Y = 1975, Z = info ;
X = catherine, Y = 1974, Z = info.
?-
Lors d’une question, si elle réussit, les variables s’unifient en vis-à-vis aux autres
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é’)
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.
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).
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.
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.
Une fois que les fichiers sont chargés, on peut exécuter les commandes. Elles se
terminent par un point " . " : ?- gnagnagna.
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.