Académique Documents
Professionnel Documents
Culture Documents
• Les connecteurs logiques usuels : • John McCarthy fut le premier à remarquer que dans un langage de
programmation [Lisp], les opérateurs logiques ne sont pas des
∨ ∧ ¬ fonctions et que déjà dans p ∧ q, la valeur de p peut suffire à obtenir la
ou et non implique valeur de l'expression [par ex. Faux ∧ q ≡ Faux pour tout q]. Idem en
Java/C avec la construction p && q.
• Et leurs tables de vérité :
• Ces 4 connecteurs ne sont pas indépendants. Par exemple, la loi de De
p true false
Morgan établit que la formule p ∧ q pourrait être définie par :
¬p false true
p ∧ q := ¬(¬p ∨ ¬q)
implication p q true false true true Si le Nil est en Russie alors Paris est la capitale de la France.
• Les électroniciens utilisent dans leurs puces • La Logique d'ordre 0 [ou Logique des Propositions] porte sur des
l'opérateur NAND défini par : propositions constantes p, q...
>
• Une formule est un théorème si elle est toujours vérifiée, quelles que • La forme générale d'un théorème est :
soient les valeurs des variables. Exemples de théorèmes : si HYPOTHESES alors CONCLUSION
(p ou (non p)) • Wang utilise le calcul des séquents. Un séquent est représenté
((p et (p => q)) => q)
symboliquement par :
H1 ... Hn ├ C1 ... Ck
• Mais la formule (p => (p et q)) n'est pas un théorème, elle est fausse
si par exemple p = true et q = false ! qui se lit intuitivement : "Si toutes les hypothèses H1 ,..., Hn sont vérifiés,
• L'algorithme de Wang permet de décider si une formule est un alors au moins l'une des conclusions C1 ,..., Ck est vérifiée".
théorème, sans utiliser de table de vérité ! • Le calcul des séquents permet de modifier l'ordre des formules dans
• Il consiste à appliquer une série de règles jusqu'à réduction à une un séquent sans changer sa validité. Par exemple, on peut changer de
forme irréductible où l'on peut décider à vue. côté une formule atomique en prenant sa négation :
p (p q) ├ q
Toward Mechanical Mathematics
équivaut à :
Hao Wang
IBM Journal, January 1960 11
p q ├ ¬p q 12
(IBM 704 : 220 theorems in 3 minutes...)
d'où la validité puisque p ⇒ q est défini comme valant ¬p ou q
.
• Règle R1 : une négation peut être changée de côté en enlevant le • Règle R5 : un séquent λ ├ ζ est un théorème si une même formule
connecteur ¬ : apparaît de chaque côté de la flèche !
ζ ├ φ, ¬λ, ρ ↝ ζ, λ ├ φ, ρ • Le jeu consiste donc à éliminer peu à peu toutes les molécules jusqu'à
la preuve par R5, ou l'échec si plus rien ne s'applique !
• Règle R2 : dissolution d'un ou sur la droite, et d'un et sur la gauche.
φ ├ λ, ρ∨π ↝ φ ├ λ, ρ, π • Exemple. On cherche à prouver la formule [p ∧ (p ⇒ q)] ⇒ q
• Règle R4 : dédoublement des lignes lors d'un et sur la droite. p ∧ (¬p ∨ q) ├ q (R1)
p , ¬p ∨ q ├ q (R2)
├ λ, ζ
φ ├ λ, ζ∧ρ ↝ ⎨ φφ ├ λ, ρ 13 (R3)
⎨ p , ¬p ├ q devient p ├ p , q
14
(R1)
p , q ├ q
CQFD !... VALIDES par (R5)
> (fbf? '((a et (non b)) => a)) > (fbf? 'p
├ p, p Je suis coincé, INVALIDE ! #t #
⎨ q ├ p > (fbf? '(a => non b))
#f
> (fbf? '()
#f
• Prélude : élimination des implications dans une formule. On travaille en • Le moteur de Wang. Il va essayer de saturer sur les règles jusqu'à ce
profondeur pour rechercher les symboles que (R5) s'applique ou que plus rien ne s'applique !
(define (reformat fbf (define (wang LHS RHS) ; LHS et RHS sont des listes de fbf sans implications
(if (intersection? LHS RHS)
(if (atome? fbf)
tru GAGNE !
fb
(local [(define fbf (first-molecule LHS))] ; on cherche une molécule à gauche
(local [(define r (connecteur fbf)) (if (not (equal? fbf false)
(cond ((equal? r 'non) ... (local [(define r (connecteur fbf))
((member r '(et ou)) ... (cond ((equal? r 'non) (wang ...) négation à gauche
(else ...))))) ((equal? r 'ou) (and (wang ...) (wang ...)) disjonction à gauche
> (reformat '((p => q) => p) ((equal? r 'et) (wang ...) conjonction à gauche
((non ((non p) ou q)) ou p) (else (error "Syntaxe incorrecte" fbf)))
cf TP !
(local [(define fbf (first-molecule RHS))) ; sinon on cherche à droite
(if (not (equal? fbf false)
(local [(define r (connecteur fbf))
• But : la règle R5. La même formule apparaît-elle de chaque côté de la (cond ((equal? r 'non) (wang ...)
((equal? r 'ou) (wang ...)
flèche d'un séquent ? L'intersection de deux listes est-elle non vide ? ((equal? r 'et) (and (wang ...) (wang ...))
(else (error 'wang "Syntaxe incorrecte")))
(define (intersection? L1 L2) ; au moins un élément en commun ? false))))) ECHEC
(cond ...))
> (intersection? '(a b c d e) '(g h k m)
cf TP ! # 17 cf TP ! 18
> (intersection? '(a b c d e) '(g h b k)
#t
21
https://fr.wikipedia.org/wiki/Intelligence_artificielle 24