2. Relier les formalismes
2.1 Propositions : énoncés, équivalences et inférences
Une proposition représente un énoncé entier : par exemple p signifie « il pleut ». Les connecteurs sont ∧ pour ET, ∨ pour OU inclusif, ¬ pour NON, → pour l’implication et ↔ pour le biconditionnel. Dans les réécritures ci-dessous, ≡ signifie que deux formules ont la même valeur pour toute interprétation; cela distingue la relation entre deux écritures du connecteur ↔ situé dans une formule.
La fiche rassemble les lois suivantes :
| Loi | Écritures équivalentes |
|---|---|
| Double négation | ¬¬p ≡ p |
| Idempotence | p∧p ≡ p et p∨p ≡ p |
| Commutativité | p∧q ≡ q∧p et p∨q ≡ q∨p |
| Symétrie du biconditionnel | (p↔q) ≡ (q↔p) |
| Associativité | p∧(q∧r) ≡ (p∧q)∧r; de même avec ∨ |
| Distribution de OU sur ET | p∨(q∧r) ≡ (p∨q)∧(p∨r) |
| Distribution de ET sur OU | p∧(q∨r) ≡ (p∧q)∨(p∧r) |
| Élimination de l’implication | (p→q) ≡ ¬p∨q |
| De Morgan | ¬(p∧q) ≡ ¬p∨¬q; ¬(p∨q) ≡ ¬p∧¬q |
Complément pour distinguer les deux connecteurs conditionnels :
Code (text) · sélectionner pour copier
p ↔ q ≡ (p → q) ∧ (q → p)
≡ (¬p ∨ q) ∧ (¬q ∨ p)
Une implication exclut le cas où son antécédent est vrai et sa conclusion fausse; un biconditionnel exige les deux directions. Si p est faux et q vrai, p→q est vrai mais p↔q est faux.
Une règle d’inférence part de prémisses pour produire une conséquence. La notation ⊨ se lit « entraîne logiquement ».
| Règle | Prémisses | Conséquence |
|---|---|---|
| Modus ponens | A→B, A |
B |
| Modus tollens | A→B, ¬B |
¬A |
| Transitivité | A→B, B→C |
A→C |
| Conjonction | A, B |
A∧B |
| Syllogisme disjonctif | A∨B, ¬A |
B |
| Simplification | A∧B |
A |
| Addition | A |
A∨B |
| Résolution | A∨B, ¬A∨C |
B∨C |
Une équivalence permet de réécrire une formule sans changer sa valeur; une inférence utilise des connaissances pour en établir une autre. Les confondre masque les justifications d’une preuve.
2.2 Prédicats : objets, relations et quantification
Un terme désigne un objet : constante, variable, ou expression fonctionnelle comme f(2,x) ou g(y). Une formule atomique, ou atome, applique un prédicat à ses arguments : chat(leo), log(2,64), somme(un,deux). L’arité est le nombre d’arguments; le nom seul ne suffit pas à identifier un prédicat.
Les quantificateurs ajoutent ∀x (« pour tout x ») et ∃x (« il existe x »). Par spécification universelle, ∀x A(x) permet une instance A(t), avec substitution correcte du terme t aux occurrences liées de x. Il faut respecter les portées et éviter la capture de variables.
La fiche rappelle aussi le remplacement d’un existentiel par une constante ou une fonction. Pour la mise en clauses :
Code (text) · sélectionner pour copier
∃x A(x) → A(c) c est une nouvelle constante
∀y ∃x A(y,x) → A(y,f(y)) f est un nouveau symbole fonctionnel
∀y ∀z ∃x A(y,z,x) → A(y,z,g(y,z))
Le témoin peut dépendre des universels extérieurs à son quantificateur. Employer une constante dans le deuxième exemple imposerait à tort un témoin identique pour tous les y. Les symboles introduits doivent être frais, et un même témoin doit rester cohérent dans toutes ses occurrences. Cette skolémisation conserve la satisfiabilité dans un vocabulaire étendu; ce n’est pas une équivalence ordinaire dans le vocabulaire initial.
La notation logique des sources utilise parfois x et y pour des variables. En Prolog, les variables commencent par une majuscule ou _, tandis que les noms de prédicats et les atomes des exemples commencent par une minuscule. Il faut adapter la syntaxe quand on change de formalisme.
2.3 Clauses et résolution-réfutation
Un littéral est un atome ou sa négation. Une clause est une disjonction de littéraux, par exemple mortel(x)∨¬homme(x). Un ensemble de clauses représente leur conjonction. Une clause de Horn possède au plus un littéral positif; une règle Prolog à une seule tête correspond au cas où un littéral positif dépend de conditions.
La fiche évoque les neuf étapes étudiées en semaine 06. Rappel contextualisé pour pouvoir utiliser la fiche :
- Éliminer implications et biconditionnels.
- Faire descendre les négations jusqu’aux atomes, avec De Morgan, double négation et échange
¬∀/∃¬,¬∃/∀¬. - Renommer les variables liées pour distinguer les portées indépendantes.
- Mettre les quantificateurs en préfixe en préservant leurs dépendances et en évitant la capture.
- Éliminer les existentiels par des symboles de Skolem nouveaux, avec les bons arguments universels.
- Omettre les universels restants, désormais implicites.
- Distribuer OU sur ET afin d’obtenir une conjonction de disjonctions.
- Séparer les facteurs conjonctifs en clauses.
- Renommer les variables entre clauses indépendantes; conserver les symboles de Skolem représentant le même témoin.
Une étape peut ne rien modifier. Ce rappel reprend les étapes du sommaire de semaine 06, §3.1; la fiche actuelle ne les redéveloppe pas elle-même.
La résolution binaire utilise deux littéraux complémentaires :
Code (text) · sélectionner pour copier
A ∨ B C ∨ ¬B
------------------
A ∨ C
En logique des prédicats, les atomes opposés doivent s’unifier; la substitution obtenue s’applique à tout le résolvant, pas uniquement au littéral éliminé.
Pour prouver C ⊨ P, convertir les connaissances C en clauses, ajouter les clauses de ¬P, puis chercher la clause vide □ par résolution. Cette clause représente une contradiction : C et ¬P ne peuvent pas être vrais ensemble, donc C entraîne P.
Exemple de liaison avec l’unification de cette semaine :
Code (text) · sélectionner pour copier
Connaissances : homme(socrate), ∀x (homme(x) → mortel(x))
But : mortel(socrate)
1. homme(socrate)
2. ¬homme(x) ∨ mortel(x)
3. ¬mortel(socrate) négation du but
4. mortel(socrate) résolution de 1 et 2, x/socrate
5. □ résolution de 3 et 4
Le résultat repose sur l’incompatibilité avec la négation du but. Une recherche inachevée ou bloquée sur une branche infinie n’établit pas que le but est faux. L’arrêt « aucun progrès » de la fiche suppose un examen effectif des possibilités pertinentes; la logique du premier ordre ne possède pas ici une garantie générale de terminaison.
2.4 Passer aux faits, règles et buts Prolog
Code (prolog) · sélectionner pour copier
homme(socrate).
mortel(X) :- homme(X).
Un fait est une connaissance sans condition. Une règle conclusion :- condition1, condition2. affirme que les conditions suffisent à établir la conclusion. La virgule du corps exprime ET; plusieurs clauses d’un même prédicat offrent plusieurs façons de le prouver.
Ainsi q(X) :- p(X), r(X). correspond à p(X)∧r(X)→q(X), soit ¬p(X)∨¬r(X)∨q(X). Le programme ne calcule pas une valeur de retour impérative : il cherche si le but est démontrable et quelles substitutions le rendent démontrable.
Les faits et règles se regroupent par prédicat, comme l’explique la vidéo. Le moteur examine les clauses dans leur ordre et les sous-buts du corps de gauche à droite, en profondeur. Chaque nouveau sous-but recherche les clauses compatibles; un appel de règle emploie ses propres variables fraîches. Le retour arrière réessaie les choix encore disponibles.
Les réponses dépendent des faits et des conséquences accessibles par les règles. Un programme peut déduire une relation non écrite comme fait, mais ne peut pas inventer une information sans support. L’annonce de « toutes les réponses » doit se lire avec une limite : une branche infinie peut empêcher d’atteindre d’autres réponses.