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)}}