Introduction à la logique
Support de cours

Auteur original : Michel Masson

Révision et remise en page : Gauthier Picard

Adaptation HTML et révision : Antoine Zimmermann

Tronc commun informatique – Mines Saint-Étienne

Dans sa version actuelle, cette page Web est la retranscription presque fidèle du document de Gauthier Picard (anciennement Mines Saint-Étienne), reprenant lui-même une grande partie d’un cours de Michel Masson (anciennement Université Paris Dauphine). La traduction en HTML, la mise en page, la correction de fautes et de problèmes typographiques ont été implémentés par Antoine Zimmermann. De nombreux étudiants ont repéré de petites coquilles au fil des années, ce qui a contribué à améliorer ce livret. Ce document est la propriété de ses auteurs.

 

Table des matières

Table des matières

  1. Logique des propositions
    1. Syntaxe
    2. Sémantique
    3. Calcul propositionnel : méthode des tables de vérité
    4. Calcul propositionnel : déduction axiomatique (système formel)
    5. Calcul propositionnel : méthode des tableaux
    6. Exercices
  2. Logique des prédicats (du premier ordre)
    1. Syntaxe
    2. Sémantique
    3. Calcul des prédicats : déduction axiomatique (système formel)
    4. Calcul des prédicats : méthode des tableaux
    5. Exercices
  3. Principe de résolution
    1. Mise sous forme prénexe
    2. Skolémisation
    3. Forme normale conjonctive
    4. Résolution
    5. Exercices
  4. Programmation logique
    1. Un cas particulier du principe de résolution
    2. Fonctionnement de l’interpréteur Prolog
    3. Conventions syntaxiques de Prolog

Préambule

L’objectif de ce cours est d’initier les élèves-ingénieurs à la modélisation logique et au raisonnement sur des systèmes logiques, en complément de leur capacité de modélisation mathématique de réalités physiques. La modélisation logique formelle permet de mieux analyser des textes ou des ensembles de connaissances de manière rigoureuse, en levant les ambiguïtés et en soulignant les contradictions – notons d’ailleurs l’usage intensif de la logique formelle dans le domaines des sciences humaines (philosophie, loi). Ce cours est une introduction à la modélisation logique de systèmes d’information, mais également vers l’automatisation des raisonnements et des preuves de théorèmes, qui sont des concepts importants en informatique et en intelligence artificielle, comme, par exemple, dans la conception de systèmes experts ou dans la vérification de systèmes.

À l’issu de ce cours, les élèves auront donc acquis les outils pour : (i) traduire un énoncé (texte libre) sous une forme logique formelle ; (ii) raisonner systématiquement sur des modèles logiques pour déduire de nouveaux faits à partir d’un énoncé, ou bien de réfuter des discours, ou de pointer des contradictions.

Logique des propositions

En logique formelle, la logique des propositions est la première étape dans la définition de la logique et du raisonnement. Dans la logique propositionnelle, on étudie les relations entre des énoncés, que l’on va appeler propositions ou encore des formules. Elle définit les règles de déduction qui relient les propositions entre elles, sans en examiner le contenu. Ces relations peuvent être exprimées par l’intermédiaire de connecteurs logiques qui permettent, par composition, de construire des formules syntaxiquement correctes.

Dans le cadre de la logique des propositions, le calcul propositionnel (ou un système déductif) est un ensemble de règles permettant en un nombre fini d’étapes et selon des règles explicites de déterminer si une proposition est vraie. Un tel procédé s’appelle une démonstration. Nous verrons également que nous pouvons établir des raisonnements plus large sur l’équivalence de formules.

Syntaxe

La logique des propositions traite des expressions construites à l’aide d’un vocabulaire 𝓥 constitué de propositions (ou atomes) 𝓟 et d’opérateurs (ou connecteurs) 𝓒 :

  • 𝓟 = {p, q, …}
  • 𝓒 = {¬, ∧, ∨, →, ↔}
  • 𝓥 = 𝓟 ⋃ 𝓒 ⋃ {(, )}

Les symboles de 𝓟 (p, q, etc.) dénotent des affirmations telles que « le moteur est en marche », « la vanne de sécurité est ouverte », « la cuve de liquide radioactif fuit », etc. On remplace ces affirmations par des symboles neutres pour s’affranchir du sens particulier de ces phrases et pour ne se concentrer que sur la cohérence, la validité du raisonnement, et non sur le sens des propositions elles-mêmes.

Nous proposons ici un ensemble de connecteurs parmi d’autres existants, plus ou moins riches — e.g. {¬, ∨}, {¬, ∧}, {¬, ∧, ∨}, etc.

Expression
Une expression est une concaténation de termes de 𝓥.

On note 𝓥* l’ensemble de toutes les expressions que l’on peut former avec le vocabulaire 𝓥.

pq(, p, ¬∧ sont des expressions de 𝓥*.

On construit, sur 𝓥, le langage propositionnel 𝓛0 ⊂ 𝓥* (ou ensemble de formules) comme étant le plus petit sous-ensemble de 𝓥* obtenu par les lois suivantes :

  1. tout atome appartient à 𝓛0 ;
  2. si φ ∈ 𝓛0 et ψ ∈ 𝓛0 alors ¬φ, (φ ∧ ψ), (φ ∨ ψ), (φ → ψ), (φ ↔ ψ) ∈ 𝓛0 ;
  3. il n’existe pas d’autres façons d’obtenir un élément de 𝓛0.

Seules les expressions formées à partir des règles indiquées sont dites « bien formées ».

Formule
On appelle formule ou ebf (expression bien formée) tout élément de 𝓛0.

p, (p → q), (p → ((q → r) ∨ t) sont des expressions de 𝓛0.

Sémantique

La sémantique détermine les règles d’interprétations des propositions, et permet ainsi d’attacher des valeurs de vérité à des formules.

Interprétation
On appelle interprétation toute application I : 𝓟 ⟶ {⊤, ⊥}. (ou Vrai ou 1) et (ou Faux ou 0) sont appelées valeurs de vérité.

Une interprétation est une correspondance entre des éléments de 𝓛0 et une image du monde extérieur ; cette correspondance peut être étendue à toutes les formules de 𝓛0 en reprenant les lois de construction de 𝓛0. Soit une formule η ∈ 𝓛0, l’interprétation étendue d’une formule η, notée I[η], est obtenue récursivement de la façon suivante :

  • si η est un atome, alors I[η] est obtenue directement par I
  • si η est obtenue par la loi (ii), plusieurs cas sont possibles :
    • η = ¬φ alors I[η] = ⊤ ssi I[φ] = ⊥
    • η = (φ ∧ ψ) alors I[η] = ⊤ ssi I[φ] = I[ψ] = ⊤
    • η = (φ ∨ ψ) alors I[η] = ⊤ ssi I[φ] = ⊤ ou I[ψ] = ⊤
    • η = (φ → ψ) alors I[η] = ⊤ ssi I[φ] = ⊥ ou I[ψ] = ⊤
    • η = (φ ↔ ψ) alors I[η] = ⊤ ssi I[φ] = I[ψ]

Cependant, par souci de simplicité, nous utiliserons également la notation I pour désigner l’interprétation étendue I.

Les tables suivantes indiquent, pour chaque connecteur, la valeur résultante :

¬

Lorsqu’on attribue des valeurs de vérité à chacune des propositions élémentaires intervenant dans une proposition de telle sorte que la proposition est vraie pour cette interprétation, on dit que l’on définit un modèle de la proposition.

Soit η = (a → (b ∨ c)), soit I telle que I(a) = I(b) = ⊤, I(c) = ⊥, alors :

  • I(η) = I(a → (b ∨ c))
  •  = (I(a) → (I(b) ∨ I(c))
  •  = (⊤ → (⊤ ∨ ⊥))
  •  = (⊤ → ⊤)
  •  = ⊤

Voici quelques définitions et notations essentielles, reposant sur la notion de sémantique et d’interprétation en logique des propositions. Il s’agit ici de qualifier les différentes formules selon leur interprétation.

Tautologie
On appelle tautologie toute formule φ telle que I[φ] = ⊤ pour toute interprétation I. On écrit alors : ⊨ φ
Contradiction
On appelle contradiction toute formule φ telle que I[φ] = ⊥ pour toute interprétation I.
Satisfiabilité
Une formule φ est dite satisfiable s’il existe au moins une interprétation I telle que I[φ] = ⊤.
Conséquence logique
On note φ ⊨ ψ (ψ conséquence logique de φ) si pour toute interprétation I telle que I[φ] = ⊤ alors I[ψ] = ⊤.
Équivalence logique
On note φ ≡ ψ (ψ équivalent logiquement à φ) ssi φ ⊨ ψ et ψ ⊨ φ.

Quelques équivalences

Pour toutes formules φ et ψ de 𝓛0, on a les résultats suivants :

  • ¬¬φ ≡ φ(1.2.1)
  • ¬(φ ∧ ψ) ≡ (¬φ ∨ ¬ψ)(1.2.2)
  • ¬(φ ∨ ψ) ≡ (¬φ ∧ ¬ψ)(1.2.3)
  • ρ ∧ (φ ∨ ψ) ≡ ((ρ ∧ φ) ∨ (ρ ∧ ψ))(1.2.4)
  • ρ ∨ (φ ∧ ψ) ≡ ((ρ ∨ φ) ∧ (ρ ∨ ψ))(1.2.5)
  • (φ ∧ ψ) ≡ (ψ ∧ φ)(1.2.6)
  • (φ ∨ ψ) ≡ (ψ ∨ φ)(1.2.7)
  • (φ → ψ) ≡ (¬φ ∨ ψ)(1.2.8)

Pour démontrer ces équivalences, il est possible d’utiliser la méthode des tables de vérité.

Forme normale conjonctive

Il peut être certaines fois nécessaire de s’intéresser à des formules ayant des formes particulières (standardisée), notamment dans le cadre de la déduction automatique et de la programmation logique, où ces formules devront être interprétable par un ordinateur.

Forme normale conjonctive
φ ∈ 𝓛0 est sous forme normale conjonctive (ou FNC) ssi φ = (C1 ∧ … ∧ Cn), avec Ci = (Li1 ∨ … ∨ Lip) et Lij = a, a ∈ 𝓟 ou Lij = ¬a, a ∈ 𝓟. Les Lij sont appelés des littéraux.

D’autres formes normales existent, notamment la forme normale disjonctive (FND).

Pour toute formule φ ∈ 𝓛0, il existe une formule φc sous forme normale conjonctive telle que φ ≡ φc

Calcul propositionnel : méthode des tables de vérité

Cette méthode permet d’obtenir facilement des démonstrations dans 𝓛0. En effet, une interprétation I associe à chaque élément la valeur ou  ; une propriété faisant intervenir n éléments offre 2n interprétations envisageables. On obtient alors une démonstration par exhaustivité. Une telle démarche peut être utilisée pour montrer qu’une formule est une tautologie (la formule doit prendre la valeur pour toutes les interprétations) ou pour montrer une équivalence logique.

Par exemple, l’équivalence logique (1.2.4) peut être établie de la façon suivante :

ρ φ ψ (φ ∨ ψ) (ρ ∧ (φ ∨ ψ)) (ρ ∧ φ) (ρ ∧ ψ) ((ρ ∧ φ) ∨ (ρ ∧ ψ))

Les deux membres de l’expression (1.2.4) prennent les mêmes valeurs de vérité, il y a donc équivalence logique (colonnes grisées).

Malheureusement, cette méthode est systématique et trés coûteuse. Une alternative à cette méthode est la formalisation (ou déduction axiomatique).

Calcul propositionnel : déduction axiomatique (système formel)

Un système formel est défini par un tuple 〈𝓥, 𝓔, 𝓐, 𝓡〉, tel que :

  • 𝓥 est un ensemble de symboles
  • 𝓔 est un ensemble d’expressions bien formées dans 𝓥*
  • 𝓐 est un ensemble d’axiomes (𝓐 ⊂ 𝓔)
  • 𝓡 est un ensemble de règles de déduction de la forme :
    • ri : f1, f2, …, fn ⊢ g avec fi, g ∈ 𝓔

Un système formel est un mécanisme abstrait permettant d’engendrer un ensemble d’ebf à partir des axiomes en utilisant les règles.

Déduction ou preuve
Soit un système formel SF, on appelle déduction (ou preuve) de cp à partir de h1, h2, …, hn dans SF, et on note
  • h1, h2, …, hn ⊢ cp
toute suite c1, c2, …, cp telle que pour i = 1, …, p
  • ou bien ci est un axiome (ci ∈ 𝓐)
  • ou bien ci est une des hypothèses (hk)
  • ou bien ci peut être obtenue par application d’une règle ri telle que
    • ci1, ci2, …, cik ⊢ ci avec i1, …, ik < i

On peut assimiler une déduction à une forme de démonstration de l’expression cp à l’aide des hypothèses hi ; un cas particulier apparaît lorsque la démonstration peut être établie sans utilisation d’hypothèses.

Théorème
Étant donné un système formel SF, t est un théorème de SF et on note ⊢ t si t peut être déduit sans hypothèse.

Un système formel pour la logique des propositions

Définissons un système formel, avec son axiomatique et ses règles propres, dans le cadre de la logique des propositions, afin d’obtenir un système de preuve. Ce système est un exemple parmi d’autres.

Système formel pour 𝓛0
Soit SF0 le système formel suivant (où A, B et C désignent des variables pouvant être remplacées par toute expression de 𝓛0) :
  • 𝓥 = {a, b, c, …, ¬, →, (, )}
  • 𝓔 est l’ensemble d’expressions bien formées dans 𝓥*
  • 𝓐 = {A1, A2, A3} avec :
    • A1 : (A → (B → A))
    • A2 : ((A → (B → C)) → ((A → B) → (A → C)))
    • A3 : ((¬A → ¬B) → (B → A))
  • 𝓡 = {RMP} contient une unique règle (le modus ponens) :
    • RMP : A, (A → B) ⊢ B

Montrons que ⊢ a → a. (a → a) est un théorème si on peut construire une déduction c1, …, cp, avec cp = (a → a).

  • c1 = ((a → ((b → a) → a)) → ((a → (b → a)) → (a → a)))Axiome A2 avec A = a, B = (b → a), C = a
  • c2 = (a → ((b → a) → a))Axiome A1 en posant A = a, B = (b → a)
  • c3 = ((a → (b → a)) → (a → a))Règle RMP sur c2 et c1
  • c4 = (a → (b → a))Axiome A1 en posant A = a, B = b
  • c5 = (a → a)Règle RMP sur c4 et c3

Voici quelques résultats clés en logique des propositions.

Théorème de la déduction
Pour tout φ1, …, φn, ψ ∈ 𝓛0 :
  • φ1, …, φn–1 ⊢ (φn → ψ) ssi φ1, …, φn ⊢ ψ

Il y a équivalence entre être une tautologie et être prouvable, comme l’énoncent les théorèmes suivants.

Théorème de la correction en calcul propositionnel
Dans SF0, pour tout φ ∈ 𝓛0, ⊨ φ si  ⊢ φ.
Théorème de la complétude en calcul propositionnel
Dans SF0, pour tout φ ∈ 𝓛0, ⊢ φ si  ⊨ φ.

Ces résultats expriment que l’ensemble des tautologies correspond à l’ensemble des théorèmes établis dans le cadre du système formel SF0. Ce système formel permet de construire des déductions de façon syntaxique — i.e. sans faire référence à la notion de ou — qui correspondent à des expressions prenant la valeur (tautologies). SF0 est une caractérisation syntaxique des tautologies de 𝓛0.

Calcul propositionnel : méthode des tableaux

Le système formel étudié dans la section précédente permet d’obtenir des déductions dont le résultat est l’ensemble des tautologies de la logique des propositions. La méthode des tableaux (ou des arbres de vérité) est une autre façon de construire des déductions ; sa manipulation plus intuitive permet d’obtenir plus facilement des déductions. Par contre son aspect graphique en limite l’usage à des expressions simples.

Arbre de déduction
On appelle arbre de déduction, tout arbre dont les sommets sont des ebf de 𝓛0 et dont toutes les branches sont fermées.
Branche fermée
Une branche (d’un arbre de déduction) est fermée si elle contient φ et ¬φ (φ étant un atome ou ebf de 𝓛0).

Principe et règles

Une déduction de φ à partir de h1, h2, …, hn notée h1, h2, …, hn ⊢ φ peut être obtenue en montrant que l’arbre de racine : h1, h2, …, hn, ¬φ est fermé. La fermeture de l’arbre (au début réduit à sa racine) est obtenue pas à pas par l’application des règles suivantes :

règles de la méthode des tableaux

Montrons que l’expression (a → (b → a)) est un théorème — i.e. ⊢ (a → (b → a)).

tableaux-example

L’unique branche de l’arbre est fermée grâce à la présence de a et ¬a.

Cette méthode est directement transcriptible en un algorithme de déduction et de raisonnement automatique.

Exercices

En utilisant les atomes S (le soleil brille), P (il pleut), B (il bruine), A (il y a un arc en ciel), O (il a un vent d’Ouest), E (il y a du vent d’Est), traduire dans la logique des propositions 𝓛0 les énoncés suivants :

  1. S’il pleut et que le soleil brille en même temps, alors il y a un arc en ciel,
  2. Si le vent d’ouest amène la pluie, on n’a jamais vu qu’un vent d’est soit porteur de pluie,
  3. La bruine est une forme de pluie.

Représenter dans le formalisme de la logique des propositions les théorèmes de géométrie suivants :

  1. Si un triangle est équilatéral alors il est isocèle.
  2. Un triangle rectangle n’est jamais équilatéral.
  3. Un carré est à la fois un parallélogramme et un rectangle.
  4. Un losange n’est ni un quadrilatère rectangle ni un triangle.
  5. Deux droites coplanaires sont soit sécantes, soit parallèles.
  6. Deux droites ne peuvent être à la fois sécantes et parallèles.

Formaliser dans 𝓛0 les propositions suivantes :

  1. Si Alice et Julie viennent à Paris, Zoé viendra aussi ;
  2. Si Julie vient à Paris, Alice aussi ;
  3. Julie ou Zoé, l’une des deux au moins, viendra à Paris.

Alice viendra-t-elle à Paris ? Et Julie ? Et Zoé ?

Montrer que ((p → r) ∧ (q ↔ s) ∧ (r ↔ q) ∧ p) ⊨ s.

Montrer que :

((¬q ∨ ¬s) ∧ (p → s) ∧ (¬p → (r → (q ∧ s))) ∧ ((q ∧ ¬s) → (¬r → (q ∧ p)))) ⊨ ¬q.

Construire dans SF0 la preuve de ⊢ ((a → b) → ((b → c) → (a → c))).

Construire dans SF0 la preuve de ⊢ (¬a → (a → b)).

Lors de ses aventures au pays des merveilles rapportées par Lewis Carroll, Alice est souvent accompagnée par le chat de Cheshire. Ce félin énigmatique s’exprime sous la forme d’affirmations logiques qui sont toujours vraies. Alice se trouve dans un corridor dont toutes les portes à sa taille sont fermées. La seule porte ouverte est nettement trop petite pour qu’elle puisse l’emprunter. Une étagère est fixée au-dessus de cette porte. Le chat dit alors à Alice : « L’un des flacons posés sur cette étagère contient un liquide qui te permettra de prendre une taille plus adéquate. Mais attention, les autres flacons peuvent contenir un poison fatal. » Trois flacons sont effectivement posés sur l’étagère. Le premier est rouge, le second jaune, le troisième bleu. Une étiquette est collée sur chaque flacon. Alice lit l’inscription figurant sur chaque étiquette :

  • Flacon rouge : le flacon jaune contient un poison ; le bleu n’en contient pas ;
  • Flacon jaune : si le flacon rouge contient un poison, alors le bleu aussi ;
  • Flacon bleu : je ne contiens pas de poison, mais au moins l’un des deux autres si.

Nous noterons R, J et B les variables propositionnelles correspondant au fait que les flacons rouge, jaune et bleu contiennent un poison. Nous noterons IR, IJ et IB les propositions correspondant aux inscriptions sur les flacons rouge, jaune et bleu.

On résoudra les questions suivantes d’abord en utilisant une table de vérité, puis en utilisant des simplifications et règles d’équivalence des formules.

  1. Exprimez les formules IR, IJ et IB sous la forme de formules dépendant de R, J et B.
  2. Les inscriptions sur les trois flacons sont-elles compatibles ?
  3. Dans le cas où aucun des trois flacons ne contient un poison, est-ce qu’une ou plusieurs inscriptions sont fausses ?
  4. Si les trois inscriptions sont vraies, est-ce qu’un ou plusieurs flacons contiennent un poison ?
  5. Si seuls les flacons ne contenant pas un poison ont une inscription vraie, est-ce qu’un ou plusieurs flacons ne contiennent pas un poison ?

Logique des prédicats (du premier ordre)

Le calcul des prédicats du premier ordre, ou calcul des relations, ou logique du premier ordre, ou tout simplement calcul des prédicats est une formalisation du langage des mathématiques proposée par les logiciens de la fin du XIXe siècle et du début du XXe siècle.

Le calcul des propositions (vu en section précédente) est la partie du calcul des prédicats qui concerne ce qui ne contient pas les notions de variables, de fonctions et de prédicats et donc pas les quantificateurs et . Il sert à formaliser essentiellement les déductions du calcul des prédicats.

Syntaxe

Comme pour la logique des propositions, nous allons définir l’ensemble des formules de la logique des prédicats, noté 𝓛1 à partir d’un vocabulaire, noté 𝓥, composé de symboles de variables (𝓥ar), de symboles de fonctions (𝓕onc), de symboles de prédicats (𝓟red), de symboles de constantes (𝓒onst), de symboles de connecteurs (𝓒onnect), de symboles de quantificateurs (𝓠uant) et de parenthèses :

  • 𝓥ar = {x, y, z, …}
  • 𝓕onc = {f, g, h, …}
  • 𝓟red = {P, Q, R, …}
  • 𝓒onst = {c1, c2, …}
  • 𝓒onnect = {¬, ∧, ∨, →, ↔}
  • 𝓠uant = {∀, ∃}
  • 𝓥 = 𝓥ar ⋃ 𝓕onc ⋃ 𝓟red ⋃ 𝓒onst ⋃ 𝓒onnect ⋃ 𝓠uant ⋃ {(, )}

Chaque symbole de fonction de 𝓕onc ou de prédicat de 𝓟red a une arité qui détermine le nombre d’arguments ou d’objets auxquels il est appliqué. Par exemple, le prédicat H pour « est un homme » a une arité d’un (on dit qu’il est unaire), tandis que le prédicat P pour « est le père de » a une arité de deux (on dit qu’il est binaire).

Nous construisons alors l’ensemble des termes 𝓣 comme suit :

  1. si c ∈ 𝓒onst, alors c ∈ 𝓣 ;
  2. si x ∈ 𝓥ar alors x ∈ 𝓣 ;
  3. si t1, …, tn ∈ 𝓣 et f ∈ 𝓕onc d’arité n alors f(t1, …, tn) ∈ 𝓣 ;
  4. il n’existe pas d’autre méthode pour obtenir des éléments de 𝓣.

Nous construisons également l’ensemble des atomes 𝓐 comme suit :

  1. si t1, …, tn ∈ 𝓣, P ∈ 𝓟red d’arité n alors P(t1, …, tn) ∈ 𝓐;
  2. il n’existe pas d’autre méthode pour obtenir des éléments de 𝓐.

On construit alors, comme pour la logique des propositions, le langage des prédicats 𝓛1 (ou ensemble de formules) comme étant le plus petit ensemble obtenu par les lois suivantes :

  1. 𝓐 ⊂ 𝓛1
  2. si α1, α2 ∈ 𝓛1 alors
    ¬α1 ∈ 𝓛1
    (α1 ∧ α2) ∈ 𝓛1
    (α1 ∨ α2) ∈ 𝓛1
    (α1 → α2) ∈ 𝓛1
    (α1 ↔ α2) ∈ 𝓛1
    xα1 ∈ 𝓛1
    xα1 ∈ 𝓛1
  3. il n’existe pas d’autre méthode pour obtenir un élément de 𝓛1.

Les expressions suivantes sont des éléments de 𝓛1 :

  • P(x,f(y))
  • x (P(x,y) ∧ ∃xQ(y))
  • xR(x,y)
  • x ∀y ∀z ((P(x,y) ∧ P(y,z)) → P(x,z))
Portée d’un quantificateur
Soit la formule Qxφ ∈ 𝓛1, φ désigne la portée du quantificateur Qx, avec Q ∈ 𝓠uant.
Variable libre/liée
Soit une formule φ ∈ 𝓛1.
  • x est liée dans φ ssi x apparaît dans la portée d’un quantificateur Qx (Q ∈ 𝓠uant)
  • x est libre dans φ ssi x apparaît hors de la portée d’un quantificateur Qx (Q ∈ 𝓠uant)

On observera qu’une variable peut être libre et liée à la fois, comme dans la formule suivante

  • (P(x) → (∀x (R(x)))
Formule close
Une formule φ ∈ 𝓛1 est close ssi elle ne comporte aucune variable libre.

Sémantique

Nous allons maintenant définir la sémantique de la logique des prédicats.

Interprétation en logique des prédicats
On définit une interprétation I par un ensemble non vide ΩI appelé univers (ou domaine) de l’interprétation, tel que :
  • pour chaque symbole de constante c, I[c] = cI ∈ ΩI
  • pour chaque symbole de fonction n-aire f, I[f] : ΩIn ⟶ ΩI
  • pour chaque symbole de prédicat m-aire P, I[P] : ΩIm ⟶ {⊥,⊤}

À l’aide d’une interprétation, on peut définir la valeur de vérité associée à une formule. Cependant, une formule du premier ordre peut contenir des variables libres et selon la valeur que l’on affecte à ces variables, la valeur de vérité de la formule change. Par exemple, le prédicat Inf(x,y), représentant la relation x < y, est parfois vrai et parfois faux selon la valeur associée à x et y.

Pour cela, on associe à une interprétation une valuation ν : 𝓥ar ⟶ ΩI définie sur les variables et à valeur dans l’univers d’interprétation pour définir la valeur de vérité d’une formule.

Valuation
Une valuation ν : 𝓥ar ⟶ ΩI est une application de l’ensemble des variables dans ΩI.

On notera alors Iν[η] pour indiquer la valeur de vérité de η vis-à-vis de l’interprétation I et de la valuation ν. Nous définissons cela inductivement.

On étend l’interprétation des symboles à l’interprétation des termes de la façon suivante :

  • si x est une variable, alors Iν[x] = ν(x) ;
  • si c est un symbole de constante (resp., f un symbole de fonction, P un symbole de prédicat), alors Iν[c] = I[c] (resp., Iν[f] = I[f], Iν[P] = I[P]) ;
  • si Iν[t1], …, Iν[tn] sont des interprétations de termes, alors Iν[f(t1, …, tn)] = I[f](Iν[t1], …, Iν[tn]).

Alors, la valeur de vérité d’une formule est :

  • si η = P(t1, …, tn) alors Iν[η] = ⊤ ssi I[P](Iν[t1], …, Iν[tn]) = ⊤ ;
  • si η = ¬φ alors Iν[η] = ⊤ ssi Iν[φ] = ⊥ ;
  • si η = (φ ∧ ψ) alors Iν[η] = ⊤ ssi Iν[φ] = Iν[ψ] = ⊤ ;
  • si η = (φ ∨ ψ) alors Iν[η] = ⊤ ssi Iν[φ] = ⊤ ou Iν[ψ] = ⊤ ;
  • si η = (φ → ψ) alors Iν[η] = ⊤ ssi Iν[φ] = ⊥ ou Iν[ψ] = ⊤ ;
  • si η = (φ ↔ ψ) alors Iν[η] = ⊤ ssi Iν[φ] = Iν[ψ].

Jusqu’ici, la sémantique ressemble beaucoup à celle de la logique propositionnelle. Introduisons alors les quantificateurs :

  • si φ = ∃xψ, alors Iν[φ] = ⊤ ssi il existe dans ΩI un élément e tel que, si on affecte e à la variable x dans la formule ψ, c’est-à-dire, on utilise une valuation η identique à ν sauf pour la variable x, alors Iη[ψ] = ⊤.
  • si φ = ∀xψ, alors Iν[φ] = ⊤ ssi pour tout les éléments e de ΩI, si on affecte e à la variable x dans la formule ψ, (on utilise une valuation η), alors Iη[ψ] = ⊤.

Illustrons cette notion à l’aide de la formule suivante : φ = ∀x ∃yP(x,y).

Définissons l’interprétation I1 en posant ΩI1 = ℕ et en associant à P(x,y) la relation x < y. Alors la formule s’interprète de la manière suivante : « Pour tout x entier, on peut trouver un entier y tel que y soit supérieur à x ». Cette assertion est manifestement vraie, on notera alors I1[φ] = ⊤.

Par contre, si nous reprenons cette même formule avec l’interprétation I2ΩI2 = ℕ et où la relation x gt; y est associée à P(x,y), l’interprétation devient : « Pour tout x entier, on peut trouver un entier y tel que y est inférieur à x ». Cette assertion est fausse — I2[φ] = ⊥ (un contre-exemple est obtenu en prenant la valeur 0 pour x).

Ainsi, comme nous l’avons vu pour la logique des propositions, une formule peut prendre la valeur ou en fonction de son interprétation. Il faut tenir compte de l’existence d’une ou plusieurs variables libres, dans ce cas une interprétation ne permettra d’obtenir une valeur de vérité que si la valeur de la (des) variable(s) libre(s) est précisée.

Soit ψ(x) = ∃yP(x,y). Reprenons l’interprétation I2 de l’exemple précédent, I2[ψ(7)] = ⊤, I2[ψ(0)] = ⊥.

Étant donnée une interprétation I, alors toute formule close de 𝓛1 prend la valeur ou pour cette interprétation (aucune valeur de variable libre n’est à préciser).

Validité universelle, adaptée de la définition 4
Soit φ ∈ 𝓛1 une formule close, elle est dite universellement valide (ou logiquement valide) si elle prend la valeur pour toute interprétation I. On écrit alors : ⊨ φ

Les définitions concernant la conséquence logique (Déf. 7) et l’équivalence logique (Déf. 8) restent inchangées. Les exemples précédents montrent qu’à l’inverse de ceux étudiés dans le cadre de la logique des propositions, il n’existe pas de méthode algorithmique comparable à la méthode des tables de vérité pour établir des résultats relatifs à la conséquence ou à l’équivalence logique. En effet, une telle méthode devrait envisager exhaustivement toutes les interprétations possibles d’une formule ; ceci est impossible dans le cas où on fait correspondre à Ω un ensemble infini. Une méthode syntaxique (e.g. utilisation d’un système formel) est donc nécessaire pour établir des résultats du type ⊨ φ ou φ ⊨ ψ.

Calcul des prédicats : déduction axiomatique (système formel)

Dans la logique des propositions, l’ensemble des tautologies correspond aux théorèmes du système formel SF0 (théorèmes 3 et 4). Il existe un résultat analogue pour la logique des prédicats en utilisant le système formel SF1, défini comme suit.

Un système formel pour la logique des prédicats

De la même manière que nous l’avons fait pour la logique des propositions, nous définissons un système formel pour la logique des prédicats, en ajoutant deux nouveaux axiomes et une règle.

Système formel pour 𝓛1
Soit SF1 le système formel suivant (où A(.), B, C peuvent être remplacées par toute expression de 𝓛1) :
  • 𝓥 = 𝓥ar ⋃ 𝓕onc ⋃ 𝓟red ⋃ 𝓒onst ⋃ 𝓒onnect ⋃ 𝓠uant ⋃ {(, )}
  • 𝓔 est l’ensemble d’expressions bien formées dans 𝓥*
  • 𝓐 = {A1, A2, A3} ⋃ {A4, A5} avec A1, A2 et A3 identiques à SF0 et :
    • A4 : (∀xA(x) → A(t)) avec t terme libre pour x
    • A5 : ((B → C) → (B → ∀xC))
  • 𝓡 = {RMP, RG} avec :
    • RMP : B, (B → C) ⊢ C(modus ponens)
    • RG : B ⊢ ∀xB(généralisation)

Les définitions 10 et 11 restent valables pour SF1. Les quantifiateurs et sont liés par les équivalences :

  • xφ ≡ ¬∀x ¬φ(2.3.1)
  • xφ ≡ ¬∃x ¬φ(2.3.2)
  • ¬∀xφ ≡ ∃x ¬φ(2.3.3)
  • ¬∃xφ ≡ ∀x ¬φ(2.3.4)

Montrons que (∀xyP(x,y)) ⊢ (∀zP(z,z)). Il faut construire une déduction c1, …, cp avec cp = ∀zP(z,z).

  • c1 = ∀xyP(x,y)Hypothèse
  • c2 = (∀xyP(x,y) → ∀yP(z,y))Axiome A4 avec A(x) = ∀yP(x,y)
  • c3 = ∀yP(z,y)RMP sur c1 et c2
  • c4 = (∀yP(z,y) → P(z,z))Axiome A4 avec A(x) = P(z,x)
  • c5 = P(z,z)RMP sur c3 et c4
  • c6 = ∀zP(z,z)RG sur c5

Attention : la variable x apparaissant à la fois dans la déduction et dans l’axiome, il y a risque de confusion. Ces variables étant muettes, on peut sans risque les renommer.

Quelques équivalences

On peut montrer dans SF1 les résultats suivants (par la méthode des tableaux, voir plus bas), sachant que les équivalences obtenues pour la logique des propositions restent vraies.

Lois de distribution des quantificateurs :

  • x (φ ∧ ψ) ≡ (∀xφ ∧ ∀xψ)(2.3.5)
  • x (φ ∨ ψ) ≡ (∃xφ ∨ ∃xψ)(2.3.6)

Lois de permutation des quantificateurs de même sorte :

  • xyφ ≡ ∀yxφ(2.3.7)
  • xyφ ≡ ∃yxφ(2.3.8)
Théorème de la complétude (et de la correction) — Gödel, 1929
Pour tout φ ∈ 𝓛1, ⊨ φ ssi  ⊢ φ.

Ce résultat est analogue à celui obtenu pour la logique des propositions (Théorèmes 3 et 4). SF1 constitue une caractérisation des formules universellement valides.

Calcul des prédicats : méthode des tableaux

La méthode étudiée précédemment peut être adaptée au cadre de la logique des prédicats. Les définitions 13 et 14 restent valables, par contre il faut ajouter 4 nouvelles règles aux 9 règles déjà définies.

règles de la méthode des tableaux pour la logique du premier ordre

Montrons que H1, H2 ⊢ C avec :

  • (H1)xzyt ((P(x,y) ∧ Q(y,z)) → P(z,t))
  • (H2)xyP(x,y)
  • (C)zxy (Q(x,y) → P(z,x))

Cela revient à montrer que l’arbre de racine H1, H2, ¬C est fermé. L’application des règles R et R¬∀ sur C laisse un seul quantificateur existentiel. La racine comprenant alors 3 variables quantifiées existentiellement, trois constantes différentes — au minimum — devront être utilisées.

arbre de décision de l’exemple 10

Comme pour la logique des propositions, cette méthode est directement transcriptible en un algorithme de déduction et de raisonnement automatique.

Exercices

Traduire dans le langage des prédicats du premier ordre les phrases suivantes :

  1. Jean suit un cours.
  2. Un logicien a été champion du monde de cyclisme.
  3. Un entier naturel est pair ou impair.
  4. Un enseignant-chercheur a toujours un nouveau sujet à étudier.
  5. Dans un triangle isocèle une médiane est également hauteur.

Traduire dans le langage des prédicats du premier ordre les phrases suivantes :

  1. Tous les hommes sont méchants.
  2. Seulement les hommes sont méchants.
  3. Il existe des hommes méchants.
  4. Il existe un homme qui n’est pas méchant.
  5. Il n’existe pas d’homme méchant.
  6. Il existe un homme qui aime toutes les femmes.
  7. Chaque chat connaît un chien qui le déteste.
  8. Tous les poissons, sauf les requins, sont gentils avec les enfants.
  9. Tous les oiseaux ne peuvent pas voler.
  10. Chaque personne aime quelqu’un et personne n’aime tout le monde, ou bien quelqu’un aime tout le monde et quelqu’un n’aime personne.
  11. Il y a des gens que l’on peut rouler tout le temps et quelquefois on peut rouler tout le monde, mais on ne peut pas rouler tout le monde à chaque fois.

Traduire dans le langage des prédicats du premier ordre les phrases suivantes :

  1. Toutes les personnes qui entrent en voiture dans la faculté doivent avoir une carte ou être accompagnées par un membre du personnel.
  2. Certains étudiants entrent en voiture dans la faculté sans être accompagnés de personnes qui ne sont pas des étudiants.
  3. Aucun étudiant n’a de carte.

Traduire dans le langage des prédicats du premier ordre les phrases suivantes :

Une conjecture est un théorème qui ne peut être démontré par aucun mathématicien. Il existe des mathématiciens qui ne démontrent pas tous les théorèmes. Si un mathématicien démontre une conjecture alors il se trompe. Si quelqu’un démontre un théorème sans se tromper, alors ce n’est pas une conjecture.

Traduire dans le langage des prédicats du premier ordre les phrases suivantes :

Il existe des PC non connectés en réseau. Dans les grandes entreprises, tous les PC sont connectés au réseau interne. Il existe dans chaque grande entreprise au moins un PC connecté au réseau interne et relié à Internet.

Traduire dans le langage des prédicats du premier ordre les phrases suivantes :

Toute personne possédant un PC et un modem peut utiliser Internet. Il existe des personnes connectées en réseau, qui ne peuvent pas utiliser Internet. Nul ne possède de modem s’il ne possède pas de PC. Tout utilisateur d’Internet est soit connecté à un réseau, soit possesseur d’un PC. Il n’est pas possible d’utiliser Internet sans posséder de PC.

Soient les expressions dans 𝓛1 :

  • (A1)zxy (F(x,y) → G(z,x))
  • (A2)xyz (¬F(y,z) → E(x))
  • (A3)z ¬E(z)
  • (C)xG(x,x)

Montrer, en utilisant la méthode des tableaux, que A1 ∧ A2 ∧ A3 → C est un théorème.

Principe de résolution

Le principe de résolution est une règle d’inférence logique que l’on peut voir comme une généralisation du modus ponens. Il permet de savoir si une formule close de 𝓛1 est un théorème. Ceci revient donc à montrer que cette formule est universellement valide (Théorème 4). Cette règle est principalement utilisée dans les systèmes de preuve automatiques, elle est à la base du langage de programmation logique Prolog.

Soit φ ∈ 𝓛1 de la forme φ = (H1 ∧ H2 ∧ H3 → C). Montrer que φ est un théorème revient à montrer que ¬φ est contradictoire, ou encore que H1 ∧ H2 ∧ H3 ∧ ¬C est contradictoire.

Le principe de résolution permet ainsi de montrer si une formule close est contradictoire. Une phase préliminaire de standardisation est nécessaire :

  1. Mise sous forme prénexe de la formule
  2. Mise sous forme de Skolem
  3. Mise sous forme normale conjonctive

Mise sous forme prénexe

Une formule est en forme prénexe lorsque tout les quantificateurs sont en tête de formule.

Forme prénexe
φ ∈ 𝓛1 est sous forme prénexe ssi elle peut s’écrire :
  • φ = Q1x1Q2x2Qnxnψ
avec Qi ∈ 𝓠uant, xi ∈ 𝓥ar, et ψ ne contenant pas de quantificateurs.

Toute formule de 𝓛1 peut être mise sous forme prénexe.

Pour tout φ ∈ 𝓛1, il existe φp sous forme prénexe telle que φ ≡ φp.

Dans la pratique, la forme prénexe peut être obtenue en déplaçant vers la gauche les quantificateurs en respectant quelques contraintes : si une même variable est concernée par plusieurs quantificateurs, un renommage des variables est nécessaire, si une expression correspond à la partie gauche d’un connecteur , le(s) quantificateur(s) correspondant(s) change(nt).

  • x (A (x) ∧ ∃xyB(x,y)) ≡ ∀xty (A(x) ∧ B(t,y))
  • x (∀yP(y) → Q(x)) ≡ ∀xy (P(y) → Q(x))
  • x (P(x) → ∀yQ(y)) ≡ ∀xy (P(x) → Q(y))

Skolémisation

Le principe de résolution nécessite de supprimer les quantificateurs des expressions. Avant de supprimer ces quantificateurs, il faut déplacer tous les quantificateurs existentiels avant les quantificateurs universels. Cette forme est alors appelée forme de Skolem. Concrètement, la suppression des quantificateurs est assurée par le remplacement de chaque variable x quantifiée existentiellement par une expression fonctionnelle (fonction de Skolem) ayant pour arguments les variables précédant x et quantifiées universellement.

xyP(x,y) a pour forme de Skolem xP(x,f(x))

xyztP(x,y,z,t) a pour forme de Skolem xyP(x,y,f1(x,y),f2(x,y))

Il existe une fonction sk : 𝓛1 ⟶ 𝓛1 telle que pour tout φ ∈ 𝓛1, sk(φ) est sous forme de Skolem et sk(φ) est satisfiable ssi φ est satisfiable et sk(φ) ⊨ φ.

Forme normale conjonctive

Nous allons maintenant supprimer les quantificateurs pour obtenir une formule sous forme normale conjonctive, afin de pouvoir y appliquer le principe de résolution.

Pour supprimer les quantificateurs il suffit d’appliquer les règles suivantes :

  1. les variables quantifiées universellement sont conservées et les fonctions (y compris les fonctions de Skolem) ne sont pas modifiées ;
  2. les variables quantifiées existentiellement sont remplacées par des constantes (toutes différentes) ;
  3. les variables sont renommées d’une clause à l’autre.

Il suffit ensuite d’utiliser les règles d’équivalence logique pour mettre la formule sous forme normale conjonctive (voir définition 9). Toute expression φ ∈ 𝓛1 après mise sous forme prénexe, skolémisation puis mise sous forme normale conjonctive se réduit alors à une suite d’atomes reliés entre eux par des et des . φ prendra donc la forme :

  • φ = (L1,1 ∨ L1,2 ∨ … ∨ L1,n1) ∧ (L2,1 ∨ L2,2 ∨ … ∨ L2,n2) ∧ … ∧ (Lp,1 ∨ … ∨ Lp,np)

On pourra écrire une formule sous forme normale conjonctive sous forme clausale. Ceci permet d’omettre les connecteurs logiques  ∧  et  ∨  :

(C1) L1,1 L1,2 L1,n1
(C2) L2,1 L2,2 L2,n2
(Cp) Lp,1 Lp,2 Lp,np

avec Lij = atome ou ¬atome.

La formule φ = (A ∨ ¬C) ∧ C ∧ (B ∨ ¬D) ∧ (D ∨ B) ∧ (¬A ∨ ¬B) devient :

(C1) A ¬C
(C2) C
(C3) B ¬D
(C4) D B
(C5) ¬A ¬B
Clause, litéral
Chaque ligne est appelée clause, et un élément d’une ligne est un littéral. Un littéral précédé du connecteur ¬ est dit négatif ; il est dit positif dans le cas contraire.

Résolution

Maintenant que notre formule est sous forme clausale, nous allons pouvoir appliquer le principe de résolution. Ce principe est applicable en logique des propositions et en logique des prédicats. Cependant, pour cette dernière, compte tenu de la présence de variables, il est nécessaire d’introduire la notion d’unification.

Formules unifiables
Deux formules atomiques sont unifiables s’il existe une substitution des variables par des termes qui rend les deux formules identiques. On note [x ↦ y] la substitution de x par y.

La notion d’unification en logique des prédicats correspond à l’égalité en logique des propositions.

Résolution
Soit la formule φ ∈ 𝓛1. Elle peut être décrite par un ensemble de clauses 𝓒 :
𝓒 =
(Ci) A B
(Cj) ¬A' C
avec A et A' unifiables.
La règle qui consiste à déduire la clause résolvante (B ∨ C) à partir des clauses (Ci) et (Cj) s’appelle la règle (ou principe) de résolution.

Si 𝓒 ∧ (B ∨ C) est contradictoire, alors 𝓒 est contradictoire. Le but est alors d’obtenir la clause vide notée ◻ en partant de l’ensemble de clauses 𝓒.

Attention : la validité du principe impose que les variables d’une clause sont locales à cette clause (de la même façon que les variables locales d’un sous-programme lui sont spécifiques), il faut donc s’assurer qu’il n’existe pas de variables communes à deux clauses différentes. Cette condition peut ne pas être respectée dans les cas suivants :

  • mise sous forme prénexe partielle de l’énoncé de départ : ainsi dans le deuxième exemple à venir, on veut prouver (H1 ∧ H2 → C), H1, H2 et ¬C sont alors mis chacun sous forme prénexe. Il s’ensuit que la variable x reste commune aux trois clauses. Une mise sous forme prénexe totale aurait conduit à renommer toutes les variables (l’énoncé comporterait alors 7 variables).
  • la mise sous FNC d’une formule du type x (A(x) ∧ B(x)) : on obtient deux clauses A(x) et B(x), qui ne sont pas liées par x puisque la formule de départ est logiquement équivalente à (∀xA(x) ∧ ∀yB(y)) dont la forme normale est (A(x) ∧ B(y)).
Déduction par résolution
Soit C1, C2, …, Cn un ensemble de clauses à réfuter. On appellera déduction par résolution toute suite C1, C2, …, Cn, f1, f2, …, fp, ◻〉fi est obtenue par résolution de deux clauses appartenant à l’ensemble {C1, …, Cn, f1, …, fi–1}.

Résolution en logique des propositions

Montrer que φ = ((¬p → q) → (¬p → (¬q → p))) est un théorème. Cela revient à montrer que ¬φ est contradictoire. La standardisation précédente appliquée à ¬φ donne :

  • ¬((¬p → q) → (¬p → (¬q → p)))
  • ≡ ¬(¬(¬¬p ∨ q) ∨ (p ∨ (q ∨ p)))
  • ≡ ((p ∨ q) ∧ ¬(p ∨ (q ∨ p))
  • ≡ (p ∨ q) ∧ (¬p ∧ ¬q)

Avec les conventions d’écriture adoptées précédemment, on obtient :

(C1) p q
(C2) ¬p
(C3) ¬q

Le principe de résolution permet alors d’obtenir deux nouvelles clauses (C4) et (C5).

(C4) q obtenue par la résolution de C1 + C2
(C5) obtenue par la résolution de C4 + C3

Cette dernière étant la clause vide. ¬φ est donc contradictoire, φ est donc démontrée.

Résolution en logique des prédicats

Montrons que H1 ∧ H2 → C avec :

  • (H1)xy (∀xP(x,y) → R(x,y))
  • (H2)xyP(y,x)
  • (C)xyR(x,y)

Cela revient à montrer que H1 ∧ H2 ∧ ¬C est contradictoire.

Mise sous forme prénexe : seules H1 et ¬C ne vérifient pas cette forme. La deuxième occurrence du quantificateur dans H1 peut être déplacée. ATTENTION : le passage à travers le connecteur ¬ le transforme en , car : (∀xα → β) ≡ ¬(∀xα ∨ β). Il convient de renommer x en y pour éviter un conflit avec une variable existante. Les deux quantificateurs de la négation de la conclusion deviennent des quantificateurs après leur mise en avant. On obtient alors :

  • (H1)xyz (P(z,y) → R(x,y))
  • (H2)xyP(y,x)
  • C)xy ¬R(x,y)

On remarquera que la mise sous forme prénexe est partielle : H1, H2 et ¬C sont chacune sous forme prénexe mais la formule (H1 ∧ H2 ∧ ¬C) ne l’est pas. Il en résulte des variables communes à H1, H2 et ¬C.

Skolémisation : Le traitement de H1 a pour conséquence la création de la constante a (remplacement de x) et la création de la fonction f(y) (remplacement de z). La skolémisation de H2 provoque la création d’une nouvelle constante b. L’énoncé devient alors :

  • (H1)(P(f(y),y) → R(a,y))
  • (H2)P(y,b)
  • C)x¬R(x,y)

Mise sous forme normale conjonctive : On obtient trois clauses

(C1) ¬P(f(y),y) R(a,y)
(C2) P(y,b)
(C3) ¬R(x,y)
(C1) ¬P(f(y),y) R(a,y)
(C2) P(u,b)
(C3) ¬R(x,v)
avant renommage des variables après renommage des variables

Le renommage des variables a été effectué pour tenir compte de la remarque précédente. Dans le cas contraire, la résolution ne peut être réalisée correctement ; ainsi l’unification du premier littéral de C1 et du littéral de C2 dans la forme non renommée conduirait à la substitution infinie [y ↦ f(y)].

Résolution :

(C4) ¬P(f(y),y) obtenue par la résolution de C1 + C3 [x ↦ a, v ↦ y]
(C5) obtenue par la résolution de C4 + C2 [u ↦ f(y), y ↦ b]

Exercices

Montrer, en utilisant la résolution, que la formule suivante est une tautologie :

  • ((p → r) ∧ (q ↔ s) ∧ (r ↔ q) ∧ p) → s

Soient les formules dans 𝓛1 :

  • (A1)zxy (F(x,y) → G(z,x))
  • (A2)xyz (¬F(y,z) → E(x))
  • (A3)z ¬E(z)
  • (C)xG(x,x)

Montrer, en utilisant le principe de résolution, que A1 ∧ A2 ∧ A3 → C est un théorème.

Montrer en utilisant le principe de résolution que :

  • H1, H2, H3 ⊨ C

On prendra soin de mettre en valeur les étapes de mise sous forme prénexe, de Skolémisation et de mise sous FNC.

  • (H1)(∃xF(x) → ∃xG(x))
  • (H2)x (G(x) → ∃yH(x,y))
  • (H3)xy (H(x,y) → A(x))
  • (C)x (F(x) → A(x))

Montrer en utilisant le principe de résolution que :

  • H1, H2, H3, H4, H5 ⊨ C

On prendra soin de mettre en valeur les étapes de mise sous forme prénexe, de Skolémisation et de mise sous FNC. La solution devra emprunter toutes les clauses de départ.

  • (H1)xy (M(x,x,x) ∨ B(x))
  • (H2)xyz ((M(x,y,z) ∧ N(x,y)) → P(y,x))
  • (H3)xyzt (¬P(y,x) ∧ (M(y,z,t) ∨ A(x,z)))
  • (H4)xy (M(x,x,x) → N(x,y))
  • (H5)xy (M(x,x,y) → ¬A(x,y))
  • (C)xB(x)

(x, y, z et t désignent des variables)

Soient les formules suivantes dans 𝓛1. Montrer, en utilisant le principe de résolution, que H1 ∧ H2 ∧ H3 ∧ H4 → C est un théorème. La solution devra emprunter toutes les clauses de départ. x, y, z désignent des variables.

  • (H1)xy (D(x,y) → A(x,x))
  • (H2)(∀xA(x,x) → ∀xyB(x,y))
  • (H3)xyz (C(x,z) → (A(x,y) ∨ D(y,z) ∨ E(z,z)))
  • (H4)xy (C(x,y) ∧ ¬E(y,y))
  • (C)xB(x,x)

En reprenant le monde de l’exercice 2.5.3, montrer que certains étudiants sont membres du personnel.

Programmation logique

La programmation logique est une forme de programmation qui définit les applications à l’aide d’un ensemble de faits élémentaires les concernant et de règles de logique leur associant des conséquences plus ou moins directes. Ces faits et ces règles sont exploités par un démonstrateur de théorème ou moteur d’inférence, en réaction à une question ou requête. Cette approche se révèle beaucoup plus souple que la définition d’une succession d’instructions que l’ordinateur exécuterait. La programmation logique est considérée comme une programmation déclarative plutôt qu’impérative, car elle s’attache davantage au quoi qu’au comment, le moteur assumant une large part des enchaînements. Elle est particulièrement adaptée aux besoins de l’intelligence artificielle, dont elle est un des principaux outils. (Source : wikipedia)

Un cas particulier du principe de résolution

Prolog est un logiciel implémentant le principe de résolution, qui ne traite que des clauses de Horn : ces clauses contiennent au plus un littéral positif (placé en tête). Un programme Prolog comporte 3 types de clauses :

  • clauses ayant un seul littéral positif (hypothèses)
  • clauses ayant un littéral positif et un ou plusieurs littéraux négatifs (règles)
  • clause ne possédant que des littéraux négatifs (but)

Par convention les littéraux négatifs d’une règle suivent le littéral positif. On peut donc omettre d’indiquer le signe des littéraux, seul devra être précisé le but afin qu’il ne soit pas confondu avec une règle.

Un programme logique

  • (c1) parents(pierre, henri, aline)
  • (c2) parents(solange, henri, aline)
  • (c3) parents(simon, charles, solange)
  • (c4) parents(louis, pierre, alice)
  • (c5) parents(jacques, pierre, alice)
  • (c6) parents(clément, louis, sabine)
  • (c7) grandsparents(X, Y, Z) ¬parents(X, U, V) ¬parents(U, Y, Z)
  • (c8) grandsparents(X, Y, Z) ¬parents(X, U, V) ¬parents(V, Y, Z)
  • (c9) ¬grandsparents(simon, S, T) ¬write("grands-parents de simon : ", S, T)

Ce programme comporte six hypothèses (les 6 premières clauses), deux règles (les septième et huitième clauses) et un but (la dernière clause). Le prédicat parents(U, V, W) est interprété comme « U a pour père V et pour mère W ». Les six premières clauses définissent un arbre généalogique. Le prédicat grandsparents(X, Y, Z) est alors défini par deux règles : « X a un père U dont les parents sont Y et Z » (c7) ou « X a une mère V dont les parents sont Y et Z » (c8). Le but cherche à obtenir la contradiction sur les grands-parents de simon.

Fonctionnement de l’interpréteur Prolog

L’interpréteur Prolog cherche à obtenir une contradiction en utilisant la stratégie linéaire verrouillée. Cela revient à construire un arbre dont les sommets sont les résolvantes successives obtenues à partir du but initial. Ainsi, il part du but (p.ex., B1, B2, …, Bn) et cherche à appliquer le principe de résolution successivement sur B1, B2, …, Bn. Pour résoudre Bi, l’interpréteur recherche la première clause C dont le premier littéral est unifiable avec Bi. Deux cas sont possibles :

  • C est une hypothèse : la résolution est immédiate et l’interpréteur passe à Bi+1, …, Bn.
  • C est une règle : la liste des buts à résoudre devient Ci1, …, Cik, …, Bi+1, …, Bn

L’interpréteur s’arrête dès que le dernier sous-but est résolu. Par contre, il y a un risque de boucle infinie (attention à l’ordre d’écriture des règles) : donc Prolog n’est pas complet.

Conventions syntaxiques de Prolog

Les éléments syntaxiques d’un programme Prolog (au sens informatique du terme) sont :

  • constantes : entiers, flottants, ou chaînes de caractères commençant par une minuscule
  • variables : chaînes de caractères commençant par une majuscule
  • prédicats :
    • nom commençant par une minuscule
    • arguments pouvant être des constantes, des variables et des prédicats
  • listes : entre crochets ouvrant “[” et fermant “]”, les éléments étant séparés par des vigules. Il est possible de concaténer directement des listes avec le caractère “|” : [a,b,c] = [a | [b | [c]]] = [a,b | [c]]
  • faits : faisant apparaître uniquement des prédicats et des constantes, et se terminant par le caractère “.” : toto(truc, machin).
  • règles : faisant appel à des prédicats, des variables et des constantes, où les littéraux positifs étant séparés par des virgules : titi(X) :- toto(X,machin), bidule(foo).
:

Un programme logique informatique

  • parents(pierre,henri,aline).
  • parents(solange,henri,aline).
  • parents(simon,charles,solange).
  • parents(louis,pierre,alice).
  • parents(jacques,pierre,alice).
  • parents(clement,louis,sabine).
  • grandsparents(X,Y,Z):- parents(X,U,_), parents(U,Y,Z).
  • grandsparents(X,Y,Z):- parents(X,_,V), parents(V,Y,Z).

Ce programme peut être enregistré dans un fichier. Le but sera alors fournit à l’interpréteur directement comme une question :

  • ?- grandsparents(simon,S,T).

qui répondra :

  • S = henri,
  • T = aline.

Bibliographie

  • Russell, S. et P. Norvig (). Intelligence artificielle. 3e édition. Pearson.
  • Jussien, N. (). Logique(s), langages formels et complexité pour l’informatique. Hermès.
  • Rivenc, F. (). Introduction à la Logique. Éditions Payot.
  • Nilsson, U. et J. Maluszynski (). Logic, Programming and Prolog (2ed). Wiley & Sons. url : http://www.ida.liu.se/~ulfni53/lpp/bok/bok.pdf.
  • Sterling, L. et E. Shapiro (). The art of Prolog. MIT Press.
  • Chazal, G. (). Éléments de logique formelle. Hermès.
  • Gochet, P. et P. Gribomont (). Méthodes pour l’informatique fondamentale. T. 1. Logique. Hermès.

Listes des définitions et théorèmes

  1. Expression
  2. Formule
  3. Interprétation
  4. Tautologie
  5. Contradiction
  6. Satisfiabilité
  7. Conséquence logique
  8. Équivalence logique
  9. Forme normale conjonctive
  10. Déduction ou preuve
  11. Théorème
  12. Système formel pour 𝓛0
  13. Théorème de la déduction
  14. Théorème de la correction en calcul propositionnel
  15. Théorème de la complétude en calcul propositionnel
  16. Arbre de décution
  17. Branche fermée
  18. Portée d’un quantificateur
  19. Variable libre/liée
  20. Formule close
  21. Interprétation en logique des prédicats
  22. Valuation
  23. Validité universelle, adaptée de la Déf. 4
  24. Système formel pour 𝓛1
  25. Théorème de la complétude (et de la correction) — Gödel, 1929
  26. Forme prénexe
  27. Clause/Littéral
  28. Formules unifiables
  29. Résolution
  30. Déduction par résolution