Logique des prédicats Licence 3 TNM - Semestre 6

publicité
Logique des prédicats
notations:
encore par
Licence 3 TNM - Semestre 6
⊂
un sous-ensemble de
⊄
pas un sous-ensemble de
∀
pour tous les (par exemple: ∀x, pour tout x)
⋂
intersection
∪
union
∆
delta, la différence symétrique
∈
appartient à
∉
n'appartient pas à
∅
ensemble vide
U
univers
la complémentarité est indiquée par plusieurs moyens: ~x, ou bien: ^x, ou
une barre supérieure placée au dessus de la lettre.
un sous-ensemble c'est quoi?
F ⊂ E ssi tous les éléments de F sont aussi des éléments de E.
(x ∈ F) → (x ∈ E)
∀x ((x ∈ F) → (x ∈ E))
(Fx → Ex)
Il faut savoir que quand on parle d'ensemble, en fait il faudrait toujours parler de sousensemble, car on ne manie jamais l'ensemble.. dans son ensemble.
Définitions préalables
La notion mathématique d’ensemble est une notion primitive, en ce sens qu’elle n’est pas ellemême définie formellement et qu’elle conserve un statut relativement intuitif. Mais en dépit de cela,
la théorie des ensembles se développe sur une telle notion primitive.
Ensemble et éléments d’un ensemble
Un ensemble est une collection, une famille ou un agrégat d’éléments ou d’objets qui,
eux, sont bien définis.
Théorie des ensembles et algèbre de boole
Les relations
Théorie des ensembles et algèbre de boole (transition entre logique des
propositions du premier semestre et logique des prédicats du second semestre)
Par exemple,
● si A = {1, 2, 3} et B = {3, 4, 5}, alors
A ∪ B = {1, 2, 3, 4, 5}
on en conclura que: A ∪ ∅ = A
et que: A ∪ A = A
● si A = {1, 2} et B = {3, 4} et C = {5},
alors A ⋂ B = ∅
B⋂C=B
A⋂C= ∅
● si A = {1, 2} ; B = {3, 4} ; C = {4, 5}
alors A ⋂ B = ∅
B ⋂ C = {4}
A⋂C=∅
La notion de partition et de recouvrement
La notion de recouvrement est définie grâce à celles de réunion, et de sous-ensemble.
En effet, un recouvrement est formé de sous-ensembles d’un ensemble A et dont leur
réunion est égale à A.
Par exemple, si A = {a, b, c} alors {a, b} et {b, c} forment un recouvrement de A, puisque
{a, b} ∪ {b, c} = A.
La notion de partition est quant a elle définie grâce aux notions de recouvrement,
d’intersection, de parties, d’ensemble vide et d’ensembles deux a deux disjoints. Une
partition d’un ensemble A est alors définie comme un recouvrement de A formé de
parties non vides de A deux à deux disjointes.
Exemple : Soit A = {1, 2, 3, 4, 5, 6}. Les sous-ensembles {1}, {2, 3, 4} et {5, 6} forment un
recouvrement de A. Ces sous-ensembles sont des parties de A et sont deux à deux
disjoints car leur intersection est vide. Mais chaque sous-ensemble est non vide. Donc
{1}, {2, 3, 4} et {5, 6} forment bel et bien une partition de A.
Produit cartésien, relations et composition des relations
Avant d’entrer dans le vif de notre sujet, il faut introduire une notion préliminaire, celle
de liste. Une liste est une énumération d’objets, symbolisés par des variables
numériques (1, 2, 3, etc.) ou alphabétiques (a, b, c, etc.), et placés entre parenthèses.
Ces objets sont les éléments de la liste. Mais attention ! Une liste n’est pas un ensemble
! Et vice versa ! Les parenthèses sont aux listes ce que les accolades sont aux
ensembles : des moyens de formuler grâce à une syntaxe claire de l’information sur une
structure mathématique quelconque.
Ainsi, une liste peut contenir un seul élément : on l’appelle alors un singlet. Exemple :
(a). Une liste contenant deux éléments, est un doublet ou un couple : (a, b). Si elle
contient trois éléments, il s’agit d’un triplet : (1, 2, c). À quatre éléments, on l’appelle
un quadruplet : (1, 2, c, d). Et ainsi de suite : quintuplet, sextuplet. Si une liste contient
un nombre n d’éléments (c’est-à-dire un nombre indéterminé), elle s’appelle un nuplet.
La notion de couple, quant à elle, permet de définir une relation d’ordre, autre notion
capitale dont il faut se souvenir, car l’ordre déterminé entraîne des résultats algébriques
qui autrement ne seraient pas atteints. Ainsi, la notion de couple peut être définie
rigoureusement grâce à la notion de parties d’un ensemble :
Définition de la notion de couple : (a, b) équivalent {{a}, {a, b}}
Ce qui signifie que le couple formé des éléments a et b est équivalent à l’ensemble des
parties de l’ensemble contenant les éléments a et b, c’est-à-dire, en l’occurrence, le
produit cartésien de deux ensembles. Cette particularité du couple permet de définir
l’ordre d’une liste.
En effet, si (a, b) = (c, d), alors a = c et b = d.
Ce qui veut dire ceci : en vertu de l’égalité entre deux couples, les « places » de chacun
de leurs éléments respectifs ne peuvent être changées sans que ne soit affectée
l’égalité entre les couples. Si, par exemple, b ≠ d, alors (a, b) ≠ (c, d) (même chose si a
≠ c). Cette restriction quant à la « place » occupée par un élément dans une liste
quelconque permet d’établir, comme nous le verrons un peu plus loin, les relations entre
ensembles ; et une relation ne souffre d’aucune exception : elle est vérifiée ou ne l’est
pas.
Autre caractéristique : les listes sont finies, c’est-à-dire qu’elles contiennent toujours
un nombre fini d’éléments. Si une liste contient un nombre infini d’éléments, elle sera
alors appelée une suite. Les propriétés des suites seront étudiées plus tard, en temps
opportun.
Produit cartésien
Soit deux ensembles, A et B. Le produit cartésien de A et B est l’ensemble de tous les
couples (x, y) formés quand x ∈ A et y ∈ B. Le produit cartésien est noté de la manière
suivante : A x B. Selon la précédente définition et sachant comment noter le produit
cartésien, on voit aisément que l’ensemble formé de ce produit est :
A x B = {(x, y) : x ∈ A, y ∈ B}
Cette formule nous dit expressément que tout couple (x, y) est un élément de
l’ensemble produit cartésien A x B et que tout couple est tel à la condition qu’à tout
élément de l’ensemble A, nommé ensemble de départ, correspond un élément de
l’ensemble B, nommé quant à lui ensemble d’arrivée.
Exemple :
Soit A = {a, b, c}, B = {1, 2, 3}. Alors le produit cartésien A x B = {(a, 1), (b, 2), (c, 3)},
correspond à la définition précédemment.
On peut aussi le représenter sous la forme d’un tableau, tel que celui-ci
Soit A = {a, b, c}
B = {1, 2, 3}
A x B = {(a, 1), (b, 2), (c, 3)},
alors A x B :
A/B
1
2
3
a
(a, 1) (a, 2) (a, 3)
b
(b, 1) (b, 2) (b, 3)
c
(c, 1) (c, 2) (c, 3)
Or, le produit cartésien est une opération qui peut également s’exercer d’un ensemble à
lui-même. Ce produit est alors appelé carré cartésien, et est noté : A x A, ou A^2.
Relations entre ensembles
Une relation entre ensembles est définie comme une dépendance de l’une envers
l’autre. Cette dépendance, c’est-à-dire cette relation, est ordonnée.
Une relation d’un ensemble A vers un ensemble B est alors caractérisée comme étant un
sous-ensemble du produit cartésien A×B. (Une telle relation est également appelée «
relation binaire ».)
Ce qui veut dire que l’ensemble de tous les couples formés grâce à la relation R sont
inclus dans A×B, soit : R = {(a, b) : {{a}, {a, b}} ⊂ A x B}
Vous aurez remarqué que cette définition utilise la définition du couple comme partie
d’un ensemble en tant que sous-ensemble d’un produit cartésien.
Les relations
(x, y) ∈ R --> (y, x) ∈ R --> (x, y) ∈ R-1, donc R = R-1, et donc R-1 est symétrique
(x, ) ∈ R^ ; (y, x) ∉ ~R ; (y, x) ∈ R
Logique des prédicats – Suite
relations composées et propriétés des relations – matrice booléenne – valeur
de vérité des prédicats – déductions logiques – forme de Skolem – Davis et
Putnam
Démontrer que (A – B) – C = A – (B – C) <=> (A ∩ C) = ∅
pour A, B et C ⊂ U
solution:
(A – B) – C = (A ∩ B^) ∩ C^
(rappel, le « ^ » indique une barre au dessus de la lettre)
A – (B – C) = A ∩ (B ∩ C^)
= A ∩ (B^ ∪ C)
= (A ∩ B^) ∪ (A ∩ C)
(A ∩ C = ∅ ⇒ A – (B – C) = A ∩ B^
⇒A ⊂ C^ ⇒A ∩ C^ = A
(A – B) – C = (A ∩ C^) ∩ B^ = A ∩ B^
(A ∩ C) = ∅ ⇒(A – B) – C = A – (B – C)
(A ∩ B^) ∩ C^ = (A ∩ B^) ∪ (A ∩ C)
⇒A ∩ C ⊂ C^ ⇒A ∩ C ∩ C = A ∩ C = ∅
Démontrer que B = (C ∩ B) ∪ (A ∩ B^) <=> A ⊂ B ⊂ C
solution:
on part de la droite:
(1) A ⊂ B ⇒A ∩ B^ = ∅
(2) B ⊂ C ⇒B ∩ C = B
B = ((C ∩ B) ∪ (A ∩ B^)
A ∩ B^ = ∅ ⇒ A ⊂ B
(3) (B ∩ C) ∪ (A ∩ B^) = B ∪ ∅ = B
⇒(4') ((C ∩ B) ∪ (A ∩ B^) ⊂ B ⇒A ∩ B^ ⊂ B ⇒ A ∩ B^ ∩ B^ =
⇒(4'') B ⊂ ((C ∩ B) ∪ (A ∩ B^)) ⇒B ∩ ((B ∩ C) ∪ (A ∩ B^)) = B
⇒(B ∩ B ∩ C) ∪ (B ∩ A ∩ B^) = B
=∅
⇒B ∩ C = B ⇒B ⊂ C
(A ∩ B) ∪ C = A ∩ (B ∪ C) <=> C ⊂ A
(A ∩ B) ∪ C = A ∩ (B ∪ C) ⇒(A ∩ B) ∪ C ⊂ A ∩ (B ∪ C)
=C⊂A
c'est la double inclusion
(A ∩ B) ∪ C = (A ∪ C) ∩ (B ∪ C)
comme C ⊂ A ⇒ A ∪ C = A
(A ∩ B) ∪ C = A ∩ (B ∪ C)
A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
A∩C=C
A ∩ (B ∪ C) = (A ∩ B) ∪ C
= ((A ∪ C) ∩ (B ∪ C)) = A ∩ (B ∪ C)
les Relations composées
R1
R2
R1 ⊙ R2
se lit « R1 rond R2 »
R1 ⊙ R2 = {(x, y) ⊂ E x F | ∃z((z ∈ F) ^ ((x, y) ∈ R1) ^ ((z, y) ∈ R2)}
pour R1 ⊂ E x F
et R2 ⊂ F x G
exemple:
E = {a, b, c}
F = {1, 2, 3, 4}
G = {α, β, γ}
R1 = {(a, 1), (a, 2), (b, 3), (c, 4)}
R2 = {(1, α), (2, β), (3, β), (3, γ), (4, γ)}
R1 ⊙ R2 = {(a, α), (α, β), (b, β), (b, γ), (c, γ)}
exemple:
pour R1 E1 R1 = {(a, b), (c, d)}
et R2 ⊂ E2 R2 = {(b, c), (d, a)}
R1 ⊙ R2 = {(a, c), (c, a)}
E
R⊂ExE
IE
l'ensemble des couples diagonaux
IE = {(x, x) | (x ∈ E)}
R est réflexive
IE ⊂ R <=> IE ∩ R^ = ∅
R est irréflexive (démontre d'après la définition que le couple (x, x) n'est pas dans R
∀xE ((x ∈ E) → (x, x) ∉ R))
∀xIE ((x ∈ E) → (x, x) ∈ R))
IE ∩ R = ∅ <=> IE ⊂ R^
R est non-réflexive (au moins un couple de IE dans R^)
IE ∩ R^ ≠ ∅
la symétrie
(x, y) ∈ R
(x, y) ∈ R <=> (y, x) ∈ R <=> (x, y) ∈ R-1
R = R-1
l'asymétrie
R ∩ R-1 = ∅
les éléments symétriques d'une relation sont l'intersection de R et de R-1
la non-symétrie (au moins un couple (y, x) qui ∈ à R-1 et qui ∉ à R)
R-1 ∩ R^ = ∅
l'anti-symétrie
R ∩ R-1 ≠ ∅
Exercice: établir les propriétés des relations suivantes sur un ensemble de référence (1,
2, 3, 4)
R1
R2
R3
R4
=
=
=
=
{(1,
{(3,
{(2,
{(1,
1),
4),
4),
1),
(2,
(1,
(3,
(2,
1),
2),
1),
4),
(3,
(1,
(3,
(1,
4),
4),
4),
3),
(2,
(2,
(2,
(2,
2),
3),
2),
2),
(3,
(2,
(1,
(3,
3),
4),
3),
1),
(4,
(1,
(4,
(4,
4), (4, 1)}
3)}
3), (4, 2)}
4), (3, 3), (4, 2)}
R1
•
•
•
•
elle
elle
elle
elle
est
est
est
est
réflexive
antisymétrique (on ne retrouve ni (4, 3), ni (1, 4) etc.)
non transitive (on a bien (3, 4) et (4, 1), mais (3, 1) ∉ R1
non transitive ((3, 4) et (4, 2) ∉ R1)
les matrices booléennes (la matrice booléenne de R1)
| = R^
1 = R1
1
2
3
4
1
1
|
|
|
2
1
1
|
|
3
|
|
1
1
4
1
|
|
1
1 : voilà pourquoi on appelle ça des éléments diagonaux
la matrice représentative de IE
1
2
3
4
1
1
|
|
|
2
|
1
|
|
3
|
|
1
|
4
|
|
|
1
La matrice booléenne de R1-1
on avait (2, 1) en R1, donc on a (1, 2) ici, etc.
1
2
3
4
1
1
1
|
1
2
|
1
|
|
3
|
|
1
|
4
|
|
1
1
Transformer une ligne en colonne et vice-versa, on appelle ça transposer une matrice.
Si tMr = Mr on dit que R est symétrique. Transposer une matrice ∈ A (symétrique par rapport à la diagonale
principale)
IE ∩ R1^ = ∅
si on fait MIE ^ MR1^ = 0
Pour avoir la fermeture symétrique, on fait la disjonction de tA v A
On transforme les relations en matrices booléennes. En informatique c'est de cette faàon qu'on préfère
formaliser un problème (en langage C par exemple).
Voilà pour R1, passons à R2:
•
•
•
1
2
3
4
1
|
1
1
1
2
|
|
1
1
3
|
|
|
1
4
|
|
|
|
Elle est asymétrique (ni (3, 1) ou (4, 3))
irréflexive
transitive (1, 2), (2, 3), et (1, 3) etc;
(mise en veille de la correction de l'exo, on revient à R1^)
R1^ = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 1), (3, 2), (4, 2), (4, 3)}
•
•
•
irréflexive
non symétrique (on n'a pas (2, 1), (3, 4), ni (1, 1), (2, 2), etc.)
on a (2, 4), (4, 2) mais pas (2, 2), donc elle n'est pas transitive
on en revient à R2
•
•
•
•
irréflexive
asymétrique (puisque irréflexive)
connexe puisque 1 est connecté à 2 et 3, 2 à 3 et 4, etc.
c'est une relation d'ordre strict et total:
faire la suite pour R3 et R4
La transposition d'une matrice
1
2
3
a
b
c
4
a
b
c
⇒
1
2
3
4
On prend une relation transitive:
1
2
3
4
1
|
1
1
1
2
|
|
1
1
3
|
|
|
1
4
|
|
|
|
On simplifie en faisant le produit booléen:
⊙
(1, 3), (1, 4), (2, 4)
Se reporter ci-dessous pour pouvoir réaliser le produit:
puis:
la relation composée de la relation sur elle-même. La disjonction des conjonctions.
Cette relation est un sous-ensemble de celles-là:
R1 ⊂ R
R2 ∩ R^ = ∅
On transforme un problème en un problème algorithmique calculable (des calculs en
matrices booléennes). C'est de l'informatique théorique (transformer des problèmes en
problèmes calculables).
On prend une relation non transitive.
{(1, 1), (2, 1), (3, 4), (2, 2), (3, 3), (4, 4), (4, 1)}
on n'a pas (3, 1), donc c'est pas transitif.
Soit:
E = {1, 2}
F = {a, b}
et la relation R = {(1, a), (1, b), (2, a)}
le représentation en matrice booléenne de cette fonction:v
MR =
Et maintenant la représentation de MR-1
MR-1 =
C'est la transposition de cette matrice, on inverse lignes et colonnes.
MR ⊙ MR-1 =
⊄ MIF
Soit la relation {(2, a), (2, b)}
Les fermetures:
•
réflexives: R ∪ IE (la plus petite fermeture contenant R). la matrice correspondante
(MR v MIE)
•
symétriques: R ∪ R-1 la matrice: MR v tMR puisque MR-1 = tMR
•
transitives: R* = R ∪ R2 ∪ … … … ∪ Rn
soit les matrices des relations suivantes:
MR =
MR ⊙ MS =
MS =
Valeur de vérité des prédicats
•
•
•
•
•
•
•
une constante: a
une variable logique : x
un prédicat: P
des quantificateurs: ∀ (“pour tout”), ∃ (“il existe”)
des connecteurs qui sont ceux des propositions: →, ↔, ¬, ^, v
termes fonctionnels: f, g
en logique on se réfère à un domaine: D, qui est un ensemble d'entités
la sémantique de la logique des propositions: vrai ou faux
la sémantique de la logique des prédicats.
Un prédicat peut être une variable (Px), deux variables (Pxy), n variables (P.......)
[P] ⊂ D : sémantique d'un prédicat à une variable
[P] ⊂ DxD : sémantique d'un prédicat à 2 variables
[P] ⊂ Dn : sémantique d'un prédicat à n variables
il faut lire [] comme “la sémantique de”
Pa = 1 ssi
a ∈ [P]
/”1” pour “vrai”/
Pa est vrai si et seulement si a appartient à la sémantique de P
Pab = 1 ssi (a, b) ∈ [P]
[Pxy] pour x = a, y = b, ssi (a, b) ∈ [P]
[∀xPx] = 1 veut dire que [P] = D
[∃xPx] = 1 s'il existe un x ∈ D tel que x ∈ [P], ce qui veut dire que [P] ≠ 0
a ∈ D [Pa] = 1, ça veut dire que: [∃xPx] = 1
le modèle correspond à la définition du domaine. On peut considérer les constantes
comme des noms donnés aux entités du domaine.
Par exemple, Socrate = S
on raisonne d'après un modèle, et non sur la réalité.
D = {a, b, c}
[P] = {a, c}
on peut dire que [Pa] = 1
qu'est-ce qu'un terme? Une constante, une variable logique, ou un terme fonctionnel f à n
variables tel que: f(t1, … …, tn)
t1, … …, tn sont des termes.
Qu'est-ce qu'un atome? C'est un prédicat à n variables qui porte sur n termes.
P(t1, … …, tn)
“t1” et “tn” sont des termes, et les prédicats (toujours en tête) portent sur ces termes.
Une expression de la logique des prédicats qui est vraie dans tous les modèles est dite
valide.
∀xPx → ∃xPx
est toujours valide.
Une expression de la logique des prédicats qui est fausse dans tous les modèles est dite
inconsistante.
En programmation logique, tout est fondé sur la preuve d'inconsistance de certaines
expressions.
Montrer qu'une expression n'est pas valide. Construire un modèle qui falsifie la
conclusion.
∃xAx
∃xBx
∃x(Ax ^ Bx)
prémisses
conclusion (la rendre fausse)
D = {1, 2}
on va prendre comme sémantique de A et de B l'un des deux éléments du domaine:
[A] = {1} ; [B] = {2}
[∃xAx] = 1 (?) on veut dire “est-ce que la sémantique d'il existe un x d'Ax est vraie ?”
pour x = 1
1 ∈ [A] ⇒ [Ax] = 1(“true”) ⇒ [∃xAx] = 1(toujours dans le sens de “vrai”)
pour x = 1
il existe bel et bien un “x” tel que Ax, et ce “x” c'est “1”, puisque “1” appartient à la sémantique de A
[∃xBx] = 1 (?)
pour x = 2
2 ∈ [B] ⇒ [Bx] = 1 ⇒ [∃xBx] = 1
pour x = 2
la question de la sémantique de ∃x(Ax ^ Bx) ?
[∃x(Ax ^ Bx)]
pour x = 1:
1 ∈ [A] ⇒ [Ax] = 1
[Ax ^ Bx] = 0
1 ∉ [B] ⇒ [Bx] = 0
pour x = 1
pour x = 1
“1” n'apartenant pas à B, par conséquent pour “x = 1” Bx est faux, donc la conjonction de “1” et de “0” donne faux (“0”)
⇒ [¬(Ax ^ Bx)] = 1
pour x = 2:
2 ∉ [A] ⇒ [Ax] = 0
2 ∈ [B] ⇒ [Bx] = 1
[Ax ^ Bx] = 0
pour x = 2
pour x = 2
“2” n'apartenant pas à A, par conséquent pour “x = 2” Ax est faux, donc la conjonction de “1” et de “0” donne faux (“0”)
⇒ [¬(Ax ^ Bx)] = 1
donc “pour tout x, la négation de la conjonction de Ax et de Bx sera vraie:
[∀x ¬(Ax ^ Bx)] = 1
[¬∃x(Ax ^ Bx)] = 1 (= “oui c'est juste de dire qu'il n'existe pas de “x” où la conjonction
de Ax et Bx sera vraie”)
ce qui signifie que:
[∃x(Ax ^ Bx)] = 0 (“il existe un “x” tel que se fait la conjonction de Ax et de Bx est faux”)
quelques règles de transformation
¬∀xPx = ∃x ¬Px
¬∃xPx = ∀x ¬Px
¬∀x¬Px = ∃x ¬Px
¬∃x ¬Px = ∀x Px
c'est ce qu'on appelle le “ca rré d'Aristote”
exercice:
∀x(Ax v Bx)
∀xAx v ∀xBx
déterminer la valeur de vérité de la conclusion
on conserve le même domaine:
D = {1, 2}
et la même sémantique de A et B:
[A] = {1} ; [B] = {2}
[∀xAx v ∀xBx]
pour x = 1
1 ∈ [A] ⇒ [Ax] = 1
pour x = 1
pour x = 2
2 ∉ [A] ⇒ [Ax] = 0 ⇒ [¬Ax] = 1
pour x = 2
pour x = 2
donc il existe bien un “x” (en l'occurence “2”) tel que ¬Ax = 1, autrement dit:
[∃x ¬Ax] = 1
et donc: [¬∀xAx] = 1 (= “oui c'est vrai que ce n'est pas pour tout x que Ax est vrai”)
et donc: [∀xAx] = 0 (“que pour tout “x” on retrouve Ax, est faux. On l'a vu pour x = 2”)
[∀x Bx]
pour x = 1
1 ∉ [B] ⇒ [Bx] = 0
pour x = 1
[¬Bx] = 1 ⇒ [∃x ¬Bx] = 1
pour x = 1
[¬∀xBx] = 1
[∀xBx] = 0
[∀xAx v ∀xBx] = 0
Exercice:
∃x(Ax ^ Bx)
∃x(Bx ^ Cx)
∃x(Ax ^ Cx)
on doit déterminer la valeur de vérité de la conclusion
on détermine d'abord de combien d'éléments on a besoin dans notre domaine.
Ici: 2
D = {1, 2}
et voici la sémantique de A, B et C
[A] = {1}, [B] = {1, 2}, et C = {2}
[∃x(Ax ^ Bx)] = 1 (?)
pour x = 1
1 ∈ [A] = [Ax] = 1
[Ax ^ Bx] = 1
pour x = 1
1 ∈ [B] = [Bx] = 1
pour x = 1
⇒ [∃x(Ax ^ Bx)] = 1
pour x = 2
1 ∈ [B] = [Bx] = 1
[Bx ^ Cx] = 1
pour x = 2
1 ∈ [C] = [Cx] = 1
pour x = 2
⇒ [∃x(Bx ^ Cx)] = 1
la valeur de vérité de [∃x(Ax ^ Cx)]
pour x = 1
1 ∈ [A] = [Ax] = 1
[Ax ^ Cx] = 0
pour x = 1
1 ∉ [C] = [Cx] = 1
pour x = 1
⇒ [¬(Ax ^ Cx)] = 1
pour x = 1
pour x = 2
2 ∉ [A] = [Ax] = 0
[Ax ^ Cx] = 0
pour x = 2
1 ∈ [C] = [Cx] = 1
pour x = 2
⇒ [¬(Ax ^ Cx)] = 1
pour x = 2
[¬(Ax ^ Cx)] = 1
pour x = 1
[¬(Ax ^ Cx)] = 1
[∀x ¬(Ax ^ Cx] = 1
⇒ [¬∃x(Ax ^ Cx)] = 1
⇒ [∃x(Ax ^ Cx)] = 0
pour x = 2
⇒ [∃x(Ax ^ Cx)] = 0
exercice:
∀x Rxx
∀x∀y Rxy
un domaine minimal, D = {1, 2} (puisqu'on dit “pour tout x” il faut au moins deux “x” pour
faire nos tests)
nos varibales sont des couples, donc voici la sémantiques de R:
[R] = {(1, 1), (2, 2)}
∀x Rxx
pour x = 1
(1, 1) ∈ [R] ⇒ [Rxx] = 1
[∀x Rxx] = 1 (« pour tout x - « 1 » comme « 2 »-, c'est vrai »)
pour x = 1
pour x = 2
(2, 2) ∈ [R] ⇒ [Rxx] = 1
pour x = 2
∀x∀y Rxy
“x” et “y”, donc on va s'intéresser au cas où ces deux variables ont des valeurs différentes,
donc va dire:
x = 1, et y = 2
(1, 2) ∉ [R]
[¬Rxy] = 1 ⇒ [∃y ¬Rxy] = 1 ⇒ [∃x∃y ¬Rxy] = 1 ⇒ [¬∀x¬∀yRxy] = 1
⇒ [∀x∀yRxy] = 0
exercice
∀x∃y Rxy
en déduire que ∀x Rxx
[R] = {(1, 2), (2, 1)}
[∀x∃yRxy]
(1, 2) ∈ [R] ⇒ [Rxy] = 1 ⇒ [∃yRxy] = 1
pour x = 1
y=2
pour x = 1
y=2
pour x = 1
y=2
Pour x = 2
y=1
(2, 1) ∈ [R] ⇒ [Rxy] = 1 ⇒ [∃yRxy] = 1
pour x = 2
y=1
pour x = 2
y=1
pour x = 2
y=1
donc on voit bien que pour tout x, ∃yRxy = 1
donc: [∀x∃yRxy] = 1
[∀xRxx]
x=1
(1, 1) ∉ [R] ⇒ [Rxx] = 0 ⇒ [¬Rxx] = 1
⇒ [∃x ¬Rxx] = 1
⇒ [¬∀xRxx] = 1
⇒ [∀xRxx] = 0
exercice:
•
•
soit 3 constantes: a1, a2 et a3 (représentées ici par des points)
on a un prédicat A et on dit que [Ax] est vrai si “x” a un cercle autour de lui et
[Rxy] s'il ya une flèche qui mène de “x” à “y”
décrire le modèle:
D = {a1, a2, a3}
[A] = {a1, a2}
[R] = {(a1, a2), (a1, a3), (a3, a2), (a3, a3)}
déterminer la valeur de vérité de: ∃x∃y∃z(Rxy ^ Ay ^ Rxz ^ ¬Az)
x = a1, y = a2, z = a3
(a1, a2) ∈ [R] ⇒ [Rxy] = 1
pour x = a1
y = a2
a2 ∈ [A] ⇒ [Ay] = 1
pour y = a2
(a1, a3) ∈ [R] = [Rxz] = 1
pour x = a1
y = a3
a3 ∉ [A] ⇒ [Az] = 0 ⇒ [¬Az] = 1
pour z = a3
pour z = a3
donc [Rxy ^ Ay ^ Rxz ^ ¬Az] = 1
pour x = a1, y = a2, et z = a3
[∃x∃y∃z(Rxy ^ Ay ^ Rxz ^ ¬Az)] = 1
Déterminer la valeur de vérité de: ∃x∃y(Rxy ^ ¬Ay ^ ¬Ax)
x = a3, y = a3
(a3, a3) ∈ [R] ⇒ [Rxy] = 1
pour x = a3
y = a3
a3 ∉ [A] ⇒ [Ax] = 0 ⇒ [¬Ax] = 1
pour x = a3
pour x = a3
⇒ [Ay] = 0 ⇒ [¬Ay] = 1
pour y = a3
pour y = a3
[Rxy ^ ¬Ax ^ ¬Ay] = 1
pour x = a3
y = a3
[∃x∃y(Rxy ^ ¬Ax ^ ¬Ay)] = 1
Déterminer la valeur de vérité de: ∀x(Rxx ↔ ¬Ax)
pour x = a1
(a1, a1) ∉ [R] ⇒ [Rxx] = 0 ⇒ [¬Rxx] = 1
pour x = a1
pour x = a1
a1 ∈ [A] ⇒ [Ax] = 1 ⇒ [¬Ax] = 0
pour x = a1
pour x = a1
⇒ [Rxx ↔ ¬Ax] = 1
pour x = a1
pour x = a2
(a2, a2) ∉ [R] ⇒ [Rxx] = 0
pour x = a2
a2 ∈ [A] ⇒ [Ax] = 1 ⇒ [¬Ax] = 0
pour x = a2
pour x = a2
⇒ [Rxx ↔ ¬Ax] = 1
pour x = a2
pour x = a3
(a3, a3) ∈ [R] ⇒ [Rxx] = 1
pour x = a3
a3 ∉ [A] ⇒ [Ax] = 0 ⇒ [¬Ax] = 1
pour x = a3
pour x = a3
[∀x(Rxx ↔ ¬Ax)] = 1
les déductions naturelles
1- l'instanciation:
•
existentielle: ∃
•
universelle: ∀
∀xPx il existe un « a » ∈ D tel que Pa
∀xPx si v est une entité abstraite du domaine alors on a Pv
2- la généralisation: (c'est l'inverse d'une instanciation)
Pa ∃xPx
Pv ∃xPx
Exercice:
(1) ∃xAx v ∃xBx
.: ∃x (Ax v Bx)
∃x (Ax v Bx)
∃x Ax v ∃xBx
(2) Aa v Ba
généralisation et ∃x (Ax v Bx)
¬∃∀∈
Aa v Ba
(1) ∀x Ax ^ ∀xBx
.: ∀x (Ax ^ Bx)
la quantification universelle, on peut dire que c'est
une conjonction généralisée.
(2) on a Av ^ Bv
(3) on peut dire ∀x (Ax ^ Bx)
(1) ∀x Ax v ∀xBx
.: ∀x (Ax v Bx)
(1) ∃x(Ax ^ Bx)
.: ∃xAx ^ ∃xBx
Av v Bv
∀x (Ax v Bx)
(2) Aa ^ Ba
(3) Aa
(4) Ba
(5) ∃xAx
(6) ∃xBx
la forme prénexe
mettre en forme prénexe c'est rapporter les quantificateurs en tête d'expression
∀xPx v ∀xQx
logiquement on a:
∀xPx = ∀yPy
et donc: ∀xPx v ∀xQx = ∀xPx v ∀yQy
= ∀x∀y(Px v Qy)
∃xPx ^ ∃xQx = ∃xPx ^ ∃yQy = ∃x∃y(Px ^ Qy)
Exercice:
∀x∃yAxy ↔ ∃x∀yBxy
•
supprimer l'équivalence
•
appliquer De Morgan
=
=
=
=
(∃x∀y¬Axy v ∃x∀yBxy) ^ (∀x∃y¬Bxy v ∀x∃yAxy)
∃x∀y(¬Axy v Bxy) ^ ∀x∃y(¬Bxy v Axy)
∃x∀y(¬Axy v Bxy) ^ ∀z∃t(¬Bzt v Azt)
∃x∀y∀z∀t((¬Axy v Bxy) ^ (¬Bzt v Azt))
il faut penser à supprimer les quantificateurs d'une variable qui n'existe pas:
∀x∃y∀zRxya
il faut supprimer ce quantificateur, puisque:
les quantificateurs existentiels: Skolem a déterminé une forme qui élimine ces
quantificateurs existentiels (∃). Même si la forme de Skolem n'est pas équivalente à la
forme dont elle est issue, elle est tout comme elle inconsistante.
La forme normale conjonctive d'une expression logique des prédicats est la forme de
Skolem de cette expression dont la matrice est en forme normale conjonctive.
Mettre en forme prénexe l'expression suivante:
∀x(p(x) ^ ∀y∃x(¬q(x, y) → ∀zr (a, x, y)))
déjà on va supprimer ∀z puisqu'il ne quantifie aucune variable. Ensuite on va renommer
une variable puisqu'on a 2 quantificateurs pour une seule et même variable:
∀x(p(x) ^ ∀y∃x(¬q(x, y) → ∀zr (a, x, y)))
c'est en effet étrange de dire « pour tout x, il existe un x »
donc on va dire: ∃u → ∀x(p(x) ^ ∀y∃u(¬q(x, y) → ∀zr (a, x, y)))
= ∀x(p(x) ^ ∀y∃x(¬q(x, y) → r(a, x, y)))
∀z ne quantifiant rien, on l'a supprimé
=∀x(p(x) ^ ∀y∃u(¬q(u, y) → r(a, u, y)))
on renomme puisque ∀x et ∃x sont incompatibles
= ∀x(p(x) ^ ∀y∃u(q(u, y) v r(a, u, y)))
= ∀x∀y∃u(p(x) ^ (q(u, y) v r(a, u, y)))
c'est la forme prénexe
exercice de déduction naturelles
(1) ∀x((p(x) v q(x)) → r(x))
(2) ∀x((r(x) v s(x)) → t(x))
.: ∀x(p(x) → t(x))
par la méthode directe (instanciation de 1 et 2)
(3) (p(v) v q(v)) → r(v)) instanciation universelle
(4) (r(v) v s(v)) → t(v))
(5) (¬p(v) v r(v)) ^ (¬q(v) v r(v))
(6) (¬p(v) v r(v))
(7) (¬q(v) v r(v))
(8) (¬r(v) v t(v)) ^ (¬s(v) v t(v))
(9) ¬r(v) v t(v)
(10) ¬s(v) v t(v)
(11) (¬p(v) v r(v)) ^ (¬r(v) v t(v))
(¬p(v)) v (r(v) ^ ¬r(v)) v (r(v) v t(v))
(¬p(v) v r(v) ^ (¬p(v) v t(v)) ^ (¬r(v) v t(v))
∀x(¬p(x) v t(x))
∀x(p(x) → t(x))
par la méthode indirecte, montrer que c'est faux dans au moins un cas. On part de la
négation de la conclusion.
(3) ¬∀x(p(x) → t(x))
= ∃x(p(x) ^ ¬t(x))
on va faire une instanciation existentielle
(4) p(a) ^ ¬t(a)
IE de (3)
(5) (p(a) v q(q)) → r(a)
(6) (r(a) v s(a)) → t(a))
(7) p(a)
(8) p(a) v q(a)
(9) r(a)
modus ponens (voir premier semestre)
(10) ¬r(a) v s(a)
(11) t(a)
(12) t(a) ^ ¬t(a) contradiction
on a démontré l'inconsistance
l'algorithme de Davis et Putnam
l'algorithme de Davis et Putnam, c'est retrouver la forme normale conjonctive (un peu à la
manière des arbres de preuve au sujet de la forme normale disjonctive – voir premier
semestre)
p v (q ^ r)
¬t
(p v q) → (s v t)
¬p
.: r ^ s
on va se servir de la négation de la conclusion.
((p v (q ^ r)) ^ ¬t ^ ((p v q) → (s v t)) ^ ¬p ^ (¬r v ¬s))
on va mettre en f.n.d. :
= ((p v q) ^ (p v r)) ^ ¬t ^ ((¬p ^ ¬q) v (s v t)) ^ ¬p ^ (¬r v ¬s))
= ((p v q) ^ (p v r)) ^ ¬t ^ ((¬p v s) ^ (¬p v t) ^ (¬q v s) ^ (¬q v t) ^ ¬p ^ (¬r v ¬s))
S = { {p, q}, {p, r}, {¬t}, {¬p, s}, {¬p, t}, {¬q, s}, {¬q, t}, {¬p}, {¬r, ¬s} }
un ensemble de conjonction
une disjonction
on va déterminer l'inconsistance, par exemple on va déterminer l'ensemble des clauses ou
apparaît « p » :
Sp = {{p, q}, {p, r}}
S¬p = {{¬p, s}, {¬p}, {¬p, t}}
S'', ce qui n'est ni dans Sp, ni dans S¬p :
S'' = {{¬t}, {¬q, s}, {¬q, t}, {¬r, ¬s}}
S'p = {{q}, {r}}
S'¬p = {{s}, {t}, □}
S1 = S'p U S'' = {{q}, {r}, {¬t}, {¬q, s}, {¬q, t}, {¬r, ¬s}}
S1q = {{q}}
S1¬q = {{¬q, s}, {¬q, t}}
S1'' = {{r}, {¬t}, {¬r, ¬s}}
S1'q = {□}
S1'¬q = {{s}, {t}}
le but étant de prouver l'inconsistance, on a un S2:
S2 = {{s}, {t}, {r}, {¬t}, {¬r, ¬s}}
S2s = {{s}}
S2¬s = {{¬r, ¬s}}
S2'' = {{t}, {r}, {¬t}}
S2s' = {□} la clause vide
S2¬s' = {{¬r}}
S3 = {{¬r}, {t}, {r}, {¬t}}
S3r = {{r}}
S3¬r = {{¬r}}
S3r' = {□}
S3¬r' = {□}
S3'' = {{t}, {¬t}}
on a démontré que l'ensemble des clauses était inconsistant.
Une forme clausale en logique des prédicats c'est la forme de Skolem dont la matrice est
en forme normale conjonctive.
Exercice
∀x((p(x) v q(x)) → r(x))
∀x((r(x) v s(x)) → t(x))
.: ∀x(p(x) → t(x))
∃x(p(x) ^ ¬t(x))
∀x((p(x) v q(x)) → r(x)) ^ ∀x((r(x) v s(x)) → t(x)) ^ ∃x(p(x) ^ ¬t(x))
= ∀x((¬p(x) ^ ¬q(x)) v r(x)) ^ ∀x((¬r(x) ^ ¬s(x)) v t(x)) ^ ∃x(p(x) ^ ¬t(x))
= ∀x((¬p(x) v r(x)) ^ (¬q(x) v r(x)) ^ ∀x((¬r(x) v t(x)) ^ (¬s(x) v t(x)) ^ ∃y(p(y) ^
¬t(y))
= ∀x((¬p(x) v r(x)) ^ (¬q(x) v r(x)) ^ (¬r(x) v t(x) ^ (¬s(x) v t(x)) ^ ∃y(p(y) ^ ¬t(y))
le quantificateur, c'est une conjonction généralisée !
∃y∀x((¬p(x) v r(x)) ^ (¬q(x) v r(x) ^ (¬r(x) v t(x)) ^ p(y) ^ ¬t(y))
forme de Skolem:
∀x((¬p(x) v r(x)) ^ (¬q(x) v r(x)) ^ (¬r(x) v t(x)) ^ p(c) ^ ¬t(c))
« c » est une constante introduite à la place de ∃y.
c'est pare cette constante qu'on peut établir le domaine de Herbrand:
Hs = {c}
Quand ya une constante c'est ok, d'où l'intérêt de mettre en début de préfixe des
quantificateurs existentiels.
On va donc, à partir de la forme de Herbrand, démontrer l'inconsistance de la formule
telle que rencontrée à la forme de Skolem:
S = {{p(c), r(c)}, {¬q(c), r(c)}, {¬r(c), t(c)}, {p(c)}, {¬t(c)}}
Sp(c) = {{p(c)}, {p(c), r(c)}}
on refait la même chose qu'un peu plus loin plus haut:
S¬p(c) = {□}
S'' = {{¬q(c), r(c)}, {¬r(c), t(c)}, {¬t(c)}}
S'p(c) = {{r(c)}, □}
S'¬p(c) = {□}
Soit les expressions suivantes:
(1) ∀x(p(x) → q(x))
(2) ∃x(p(x) ^ r(x))
.: ∃x(r(x) ^ q(x))
•
•
•
mettre en forme de Skolem
et faire Davis et Putnam
établir la validité des arguments
la négation de la conclusion:
∀x(¬r(x) v ¬q(x))
∀x((¬p(x) v q(x)) ^ (p(x) ^ r(x)) ^ ∀x(¬r(x) v ¬q(x))
= ∀x((¬p(x) v q(x) ^ (¬r(x) v ¬q(x)) ^ p(y) ^ r(y))
forme de Skolem:
∀x((¬p(x) v q(x) ^ (¬r(x) v ¬q(x)) ^ p(c) ^ r(c))
Hs = {c}
{{¬p(c), q(c)}, {¬r(c), ¬q(c)}, {p(c)}, {r(c)}}
Sp(c) = {{p(c)}}
S¬p(c) = {{¬p(c), q(c)}}
S'' = {{¬r(c), ¬q(c)}, {r(c)}}
S'p(c) = {□}
S'¬p(c) = {{q(c)}}
S1 = {{q(c)}, {¬r(c)}, {¬q(c)}, {r(c)}}
S1q(c) = {{q(c)}}
S1'q(c) = {□}
S1¬q(c) = {{¬r(c), ¬q(c)}}
S1'¬q(c) = {{¬r(c)}}
S1'' = {{r(c)}}
S2 = {{r(c)}, {¬r(c)}}
Téléchargement