...
La logique propositionnelle comprend des inconnues booléens `x,y,z,...` et des connecteurs booléens. La valeur logique vrai est notée `1`, la valeur logique faux est notée `0`. Les connecteurs booléens les plus utilisés sont `"¬", "∧","∨","→","↔"` et correspondent à des opérations booléennes défini comme suit :
Libellé Connecteur Table de vérité
Faux `0` `0` Vrai `1` `1` Négation `"¬"a` `"¬"0=1`
`"¬"1=0` Conjonction `a"∧"b` `0"∧"0=0`
`0"∧"1=0`
`1"∧"0=0`
`1"∧"1=1` Disjonction `a"∨"b` `0"∨"0=0`
`0"∨"1=1`
`1"∨"0=1`
`1"∨"1=1` Implication `a"→"b` `0"→"0=1`
`0"→"1=1`
`1"→"0=0`
`1"→"1=1` Équivalence `a"↔"b` `0"↔"0=1`
`0"↔"1=0`
`1"↔"0=0`
`1"↔"1=1`
S'il y a `n` inconnus booléens `x_1,x_2,x_3,..., x_n` alors il y a `2^n` modèles envisageables (`2^n` combinaisons).
Etant donnée deux propositions `alpha, beta` érites dans ce langage `"<""¬", "∧","∨","→","↔",0,1,x_1,x_2,...,x_n">"`, l'implication sémantique `alpha |== beta` signifie que tout modèle qui réalise `alpha` réalise `beta`. Tandis que l'implication syntaxique `alpha |-- beta` signifie qu'il existe une démonstration de `beta` utilisant `alpha` comme hypothèse. En logique propositionnelle, et avec les règles de déduction naturel, nous avons la propriété de complétude qui dit que tout ce qui est vrai est démontrable, ou en d'autre terme que pour toutes propositions `alpha`, `beta`, si `alpha |== beta` alors `alpha |-- beta`. La réciproque étant évidente, les deux symboles ont alors la même signification. On utilise le symbole `|==` pour évoquer les modèles (combinaisons), et on utilise le symbole `|-` pour évoquer les démonstrations.
On remarque les règle de substitutions autorisée où `x, y, z` représente n'importes quelles propositions :
Commutativité de `∧` `(x ∧ y) = (y ∧ x )`Commutativité de `∨` `(x ∨ y) = (y ∨ x)`Associativité de `∧` `((x ∧ y) ∧ z) = (x ∧ (y ∧ z)) `Associativité de `∨` `((x ∨ y) ∨ z) = (x ∨ (y ∨ z)) `Élimination de la double négation `¬(¬x) = x`Contraposition `(x ⇒ y) = (¬y ⇒ ¬x) `Élimination de l’implication `(x ⇒ y) = (¬x ∨ y) `Élimination de l'équivalence `x ⇔ y = ((x ⇒ y) ∧ (y ⇒ x))`De Morgan `¬(x ∧ y) = (¬x ∨ ¬y) `De Morgan `¬(x ∨ y) = (¬x ∧ ¬y) `Distributivité de `∧` sur `∨` `(x ∧ (y ∨ z)) = ((x ∧ y) ∨ (x ∧ z))`Distributivité de `∨` sur `∧` `(x ∨ (y ∧ z)) = ((x ∨ y) ∧ (x ∨ z)) `
Etant donné une proposition `B` servant de base de connaissance. Etant donné une proposition `p`. Voici l'algorithme pour déterminer si `p` est vrai sachant que la base de connaissance `B` est vrai, c'est à dire pour savoir si `B|==p`. On regarde si `B"∧¬"p` est intrinsèquement faux, autrement dit, si c'est contradictoire, si c'est faux quelques soient les hypothèses.
On met la base de connaissance `B`, ainsi que la proposition `p`, sous forme normale conjonctive c'est à dire une conjonction de clauses disjonctives de littéraux. Une clauses disjonctives de littéraux est appellé simplement une clause. On regroupe les deux pour former la proposition `B"∧¬"p` que l'on remet sous forme normale conjonctive et sur laquelle on applique le traitement suivant :
La conjonction en cours de traitement correspond à un ensemble de clauses. Et chaque clause correspond à un ensemble de littéraux,
PL-RESOLUTION(B,p) :
.