Notions de logique
Judicaël Courant
17 septembre 2014
1 Manipulation de termes et formules
1.1 Exemple
exemple
NB : on manipulera des formules sans quantificateurs.
1.2 Syntaxe : concrète ou abstraite ?
Quand on étudie une formule, on peut parler de
sa syntaxe concrète : la chaîne de caractères qui permet de l’écrire ;
sa syntaxe abstraite : une description arborescente de cette formule.
C’est le second point qui nous intéresse.
1.3 Syntaxe abstraite
La syntaxe concrète peut (ici) être décrite par une grammaire abstraite :
hformulei: := hformule atomiquei
|hformuleihformulei
|hformuleihformulei
|hformuleihformulei
|hformuleihformulei
| ‘¬hformulei
hformule atomiquei: := htermei=htermei
|htermei<htermei
|htermeihtermei
|htermei>htermei
|htermeihtermei
1
htermei: := hvariablei
|htermei+htermei
|htermeihtermei
|htermei×htermei
|htermei/htermei
|hconstante entièrei
NB : Cette grammaire ne précise rien
ni sur le sens d’une formule ou d’un terme ;
ni même sur la façon de lever les ambiguïtés lorsqu’on lit une formule ou un
terme écrit de façon concrète (par exemple :
a+b×c
est-il un arbre de racine
×
ou +?).
Elle sert à représenter uniquement ce qui se passe sur les arbres.
Ces arbres se modélisent naturellement par un type Caml :
type terme =
|Variable of string
|Constante of int
|Plus of termeterme
|Moins of termeterme
|Mult of termeterme
|Div of termeterme
; ;
type formule_atomique =
|InfStr of termeterme
|Inf of termeterme
|SupStr of termeterme
|Sup of termeterme
; ;
type formule =
|Atome of formule_atomique
|Conj of formuleformule
|Disj of formuleformule
|Impl of formuleformule
|Equiv of formuleformule
|Neg of formule
; ;
1.4 Sémantique
1.5 Sémantique des termes
Sémantique : sens, valeur.
2
On va interpréter les termes comme des représentations de nombres flottants pour
leur donner une valeur. Ici l’ensemble des valeurs pour les termes sera l’ensemble des
réels.
Étant donné un terme t, on veut définir précisément sa sémantique.
Problème : quelle valeur donner aux variables ?
L’interprétation d’un terme doit dépendre d’un environnement.
Définition 1
(Environnement)
.
On appelle environnement toute fonction
ρ
définie sur
une partie Vde l’ensemble des variables et associant à tout xVune valeur ρ(x).
Étant donné un environnement
ρ
et un terme
t
on notera
[[t]]ρ
la valeur de
t
dans
l’environnement ρ.
On définit alors la sémantique des termes par induction sur leur syntaxe abstraite de
la façon suivante :
[[x]]ρ=ρ(x)pour toute variable x
[[t1+t2]]ρ= [[t1]]ρ+ [[t2]]ρ
[[t1t2]]ρ= [[t1]]ρ[[t2]]ρ
[[t1×t2]]ρ= [[t1]]ρ×[[t2]]ρ
[[t1/t2]]ρ=[[t1]]ρ
[[t2]]ρ
Attention : le terme
t1+t2
représente bien un arbre avec pour racine l’opérateur
+
et pour sous-arbre
t1
et
t2
. Le symbole
+
n’y a donc pas la même signification que
dans le membre de droite :
[[t1]]ρ+ [[t2]]ρ
représente en effet un réel qui est le résultat de
l’addition de deux réels.
L’implantation est assez directe. On s’intéressera ici uniquement à des environ-
nements définis sur un ensemble fini de variables, et on représentera par la liste
[(x0, v0); . . . ; (xn1;vn1)] la fonction qui pour tout i[[0, n[[ associe viàxi.
type var == string ; ;
type a env == ( var a)list ; ;
l e t rec eval_t e t =match twith
|Variable x >assoc x e
|Constante n >float_of_int n
|Plus (t1 ,t2 )>
l e t v1 =eval_t e t1 and v2 =eval_t e t2 in
v1 +. v2
|Moins(t1 ,t2 )>
l e t v1 =eval_t e t1 and v2 =eval_t e t2 in
v1 .v2
|Mult (t1 ,t2 )>
l e t v1 =eval_t e t1 and v2 =eval_t e t2 in
v1 .v2
3
|Div(t1 ,t2 )>
l e t v1 =eval_t e t1 and v2 =eval_t e t2 in
v1 / . v2
; ;
1.6 Sémantique des formules
On veut étendre cette interprétation aux formules.
La valeur d’une formule est alors une valeur de vérité : vrai (V) ou faux (F).
[[Egal(t1,t2)]]ρ=Vsi [[t1]]ρ= [[t2]]ρ
=Fsinon
[[Inf(t1,t2)]]ρ=Vsi [[t1]]ρ[[t2]]ρ
=Fsinon
.
.
.
[[Conj(A1,A2)]]ρ=Vsi [[A1]]ρ= [[A2]]ρ=V
=Fsinon
[[Disj(A1,A2)]]ρ=Fsi [[A1]]ρ= [[A2]]ρ=F
=Vsinon
[[Impl(A1,A2)]]ρ=Fsi [[A1]]ρ=Vet [[A2]]ρ=F
=Vsinon
[[Equiv(A1,A2)]]ρ=Vsi [[A1]]ρ= [[A2]]ρ
=Fsinon
[[Neg(A)]]ρ=Vsi [[A]]ρ=F
=Fsi [[A]]ρ=V
1.7 Implantation
l e t rec eval_fa e fa =match fa with
|Egal (t1 ,t2 )>
l e t v1 =eval_t e t1 and v2 =eval_t e t2 in
v1 =v2
4
|InfStr(t1 ,t2 )>
l e t v1 =eval_t e t1 and v2 =eval_t e t2 in
v1 <v2
. . .
; ;
l e t rec eval_f e f =match fwith
|Atome fa >eval_fa e fa
|Conj (f1 ,f2 )>eval_f e f1 && eval_f e f2
|Disj (f1 ,f2 )>eval_f e f1 || eval_f e f2
|Impl (f1 ,f2 )>not (eval_f e f1 ) || eval_f e f2
|Equiv(f1 ,f2 )>eval_f e f1 =eval_f e f2
|Neg(f1 )>not (eval_f e f1 )
; ;
1.8 Remarques
D’autres sémantiques sont possibles. Pour les termes on peut par exemple donner des
sémantiques à valeur :
dans les entiers ;
dans Z/nZ.
Pour les formules, on peut définir une sémantique à valeurs :
dans un ensemble à trois valeurs (vrai/faux/indéfini) 1
dans l’ensemble des ouverts d’un espace topologique (modèles de la logique
intuitionniste)
1.9 Problèmes
Définition 2. On dit qu’un environnement ρsatisfait une formule Asi [[A]]ρ=V.
On dit qu’une formule
A
est satisfiable (ou satisfaisable) s’il existe un environnement
ρ
qui satisfait A.
On dit qu’une formule est une tautologie si dans tout environnement donnant une
définition à chaque variable de A, son interprétation vaut V.
Comment tester qu’une formule est satisfiable ? est une tautologie ?
Pour répondre à cette question, on va se placer dans un cadre plus simple. . .
2 Logique propositionnelle
2.1 Définition
Étant donné un ensemble (au plus dénombrable)
V
de variables propositionnelles,
l’ensemble
F
des formules de la logique propositionnelle est l’ensemble de formules
1. Séduisant pour faire de «l’intelligence artificielle» mais ne tient pas ses promesses.
5
engendré par la grammaire abstraite suivante :
hformulei: := hvariable propositionnellei
|hformuleihformulei
|hformuleihformulei
|hformuleihformulei
|hformuleihformulei
| ‘¬hformulei
| ‘
| ‘>
Définition 3.
Les atomes de la logique propositionnelle sont les variables. On appelle
littéral, toute formule qui est soit un atome a, soit la négation ¬ad’un atome.
Étant donné un littéral l, on notera lle littéral
¬lsi lest un atome ;
asi lest la négation ¬ad’un atome a.
Définition 4
(Logique booléenne)
.
On se donne deux valeurs de vérités notées
0
et
1
(ou
et >, ou Fet V). L’ensemble {0,1}est appelé ensemble des booléens et est noté B.
On définit deux lois de composition interne sur +et .sur Bpar :
0+0=0 0.0=0
0+1=1 0.1=0
1+0=1 1.0=0
1+1=1 1.1=1
ainsi qu’une application .:B → B par :
0=1
1=0
+et .sont deux lois :
1. associatives et commutatives ;
2.
possédant chacune un élément neutre (respectivement
0
et
1
) et un élément
absorbant (respectivement 1et 0) ;
3. distributives l’une par rapport à l’autre (dans les deux sens !).
De plus, pour tout booléens aet b, on a
b+b=1b.b =0
a+b=a.b a.b =a+b
6
Définition 5
(Interprétation d’une formule propositionnelle)
.
Une valuation (atomique)
ou interprétation des variables est une fonction
ρ:V → B
. L’interprétation
[[.]]ρ:V → B
associée à une valuation ρest définie par induction structurelle sur les formules par :
[[a]]ρ=ρ(a)pour a∈ V
[[φψ]]ρ= [[φ]]ρ.[[ψ]]ρ[[φψ]]ρ= [[φ]]ρ+ [[ψ]]ρ
[[]]ρ=0[[>]]ρ=1
[[φψ]]ρ= [[φ]]ρ+ [[ψ]]ρ[[φψ]]ρ= ([[φ]]ρ+ [[ψ]]ρ).([[φ]]ρ+ [[ψ]]ρ)
[[¬φ]]ρ= [[φ]]ρ
Étant donné une formule
φ
,
[[φ]]ρ
est la valeur de vérité de la formule
φ
pour la valuation
ρ.
NB : Pour toute valuation
ρ
et toute formule
φ
, la restriction
ρ0
de
ρ
à l’ensemble des
variables apparaissant dans φvérifie : [[φ]]ρ0= [[φ]]ρ.
On appelle table de vérité un tableau dans lequel la dernière colonne est étique-
tée par une formule propositionnelle et les colonnes précédentes par les
n
variables
apparaissant dans la formule.
La table comporte alors, pour chacune des
2n
valuations atomiques possibles sur ces
n
variables, exactement une ligne donnant les valeurs de vérité associées aux variables
et la valeur de vérité de la formule.
exemples
Définition 6.
On dit qu’une formule
φ
est satisfaite par une valuation
ρ
, si
[[φ]]ρ=1
, et
on note cela ρ|=φ.
On dit qu’une formule est satisfiable (ou satisfaisable) s’il existe au moins une valuation
qui la satisfait.
On dit que ρfalsifie la formule φsi [[φ]]ρ=0.
On dit qu’une formule
φ
est une tautologie si elle est satisfaite par toute valuation, et on
note cela |=φ:
|=φ⇒ ∀ρ∈ BVρ|=φ
On dit que deux formules
φ
et
ψ
sont équivalentes et on note
φψ
, si pour toute
valuation ρ,[[φ]]ρ= [[ψ]]ρ.
Proposition 1. Soit φet ψdeux formules.
L’équivalence de formule est une congruence, c’est-à-dire une relation d’équivalence qui
de plus passe au contexte : notons
C[φ]
une formule contenant
ψ
comme sous-formule
φ
et
C[ψ]
la formule obtenue en remplaçant cette sous-formule par
ψ
. Si
φψ
alors
C[φ]C[ψ].
Les tautologies sont les formules équivalentes à
>
, les formules non-satisfiables sont
celles équivalentes à .
φest satisfiable si et seulement si ¬φn’est pas une tautologie.
φest une tautologie si et seulement si ¬φn’est pas satisfiable.
φet ψsont équivalentes si et seulement si φψest une tautologie.
7
On déduit des propriétés de l’algèbre de Boole Bles résultats suivants :
Proposition 2. Soit φ,ψet χtrois formules. Alors
φ(ψχ)(φψ)χ φ (ψχ)(φψ)χ
φψψφ φ ψψφ
φ(ψχ)(φψ)(φχ)φ(ψχ)(φψ)(φχ)
φφφ φ φφ
φ∨ ⊥ φ φ ∧ > φ
φ ⊥ ≡ ⊥ φ > ≡ >
¬¬φφ
2.2 Le problème SAT
On s’intéresse à une formule de taille ncontenant kvariables distinctes.
NB :
1. k=O(n);
2.
borne serrée, car il est facile de construire une formule de taille
n
dont le nombre
de variables est proportionnel à la taille de la formule ;
3.
c’est même le cas pour toute formule ne comportant que des variables distinctes
et ne comportant pas de double négation (exercice : une formule de taille
n
sans
double négation comporte au moins (n+ 2)/4variables).
Comment tester qu’une formule est satisfiable ? (problème SAT )
Comment tester qu’une formule est une tautologie ?
2.2.1 Méthode naïve
Essayer toutes les interprétations des variables.
Complexité en temps : O(2n).
2.2.2 Test polynomial par certificat
Si on dispose d’une valuation
ρ
on peut tester si
ρ|=φ
en temps polynomial en la
taille de
φ
(et même linéaire si les variables de
φ
sont numérotées par des entiers de
0
àket ρreprésenté par un tableau de booléens).
Donc si
φ
est satisfiable, il existe une valuation
ρ
, qu’on pourra appeler certificat (ou
témoin, ou preuve) de satisfiabilité, vérifiable en temps polynomial.
On dit que la satisfiabilité est vérifiable par certificat en temps polynomial.
NB : le caractère tautologique d’une proposition n’est pas (a priori) vérifiable par
certificat en temps polynomial
2
. En revanche le caractère non-tautologique d’une
proposition l’est.
2. Avis aux amateurs : Le premier qui arrivera à le démontrer deviendra célèbre.
8
2.2.3 Non-déterminisme
On s’est cantonné jusqu’ici à un modèle de calcul où les algorithmes sont détermi-
nistes.
On veut étudier des algorithmes qui donnent une réponse du type acceptation/refus.
On pourrait imaginer (et définir rigoureusement) un modèle de calcul où, à certains
moment, la machine dispose d’une instruction pour tirer un booléen de façon non-
déterministe
3
. Pour un même programme et une même donnée, il y a donc plusieurs
exécutions possibles.
On dira que le programme accepte la donnée s’il y a au moins une exécution qui
conduit à une acceptation (on peut imaginer que toutes les exécutions possibles se
déroulent en parallèle).
Ici, on peut trouver un algorithme permettant de tester la satisfiabilité d’une formule
φde taille nen temps polynomial en n:
1. Faire la liste des variables v0,. . .,vk1de φ;
2. Initialiser un tableau de kbooléens t;
3. Pour k[[0, k[[, choisir un booléen bet affecter bàt[k].
4.
Calculer la valeur vérité de
φ
pour l’interprétation
vi7→ t[i]
. Si elle vaut vrai,
accepter.
La satisfiabilité est donc vérifiable en temps polynomial par une machine non-
déterministe. On note
NP
l’ensemble des problèmes solubles en temps polynomial
non-déterministe.
SAT N P
On peut montrer que
NP
est exactement l’ensemble des problèmes vérifiables par
certificat en temps polynomial.
2.3 Formes normales conjonctives/disjonctives
Définition 7
(Disjonction/conjonction
n
-aire)
.
Étant donné
n
formules
φ0
, . . . ,
φn1
,
avec
nN
, on appelle disjonction
n
-aire de ces formules la formule
φ0(φ1(. . . φn1))
notée aussi
^
i[[0,p[[
φi
Par convention, la disjonction de 0formules est .
De cette façon, si
p
et
q
sont deux entiers naturels et
φ0
, . . . ,
φp+q1
sont
p+q
formules,
on a
^
i[[0,p+q[[
φi=
^
i[[0,p[[
φi
^
i[[p,p+q[[
φi
3. Dire «au hasard» laisserait entendre qu’on va parler de probabilités.
9
De même, on définit la conjonction
Wi[[0,n[[ φi
de
n
formules, avec la convention que cette
conjonction est >si p= 0.
Définition 8
(Forme normale conjonctive/disjonctive)
.
On appelle clause toute disjonc-
tion
Vi[[0,p[[ li
de littéraux. La formule
, disjonction de
0
littéraux est appelée clause
vide.
On appelle monôme toute conjonction
Wi[[0,p[[ li
de littéraux. La formule
>
, disjonction
de 0littéraux est appelée monôme vide.
On dit qu’une formule φest en forme normale conjonctive s’il s’agit d’une conjonction
de disjonction de littéraux, c’est-à-dire d’une conjonction
Vi[[0,q[[
de clauses. On dit qu’elle
est en forme normale conjonctive distinguée si, dans chaque clause
Ci
, on trouve une et
une seule fois chaque variable de la formule φ.
On dit qu’une formule est en forme normale disjonctive s’il s’agit d’une conjonction
de disjonction de littéraux. On peut définir de même le fait qu’une formule est en forme
normale disjonctive distinguée.
Remarque : soit
C
une clause. Alors
¬C
est équivalente à une conjonction de littéraux.
On en déduit que la négation de toute formule en FNC est équivalente à une formule
en FND. De même, la négation de toute FND est équivalente à une formule en FNC.
Proposition 3.
Un monôme (resp. une clause) est insatisfiable (resp. une tautologie) si
et seulement s’il contient deux littéraux
li
et
lj
tels que
li
soit une variable et
lj
soit sa
négation.
Une FNC est satisfiable si et seulement si elle contient au moins un monôme satisfiable.
Une FND est une tautologie si et seulement si chacune de ses clauses en est une.
On peut donc tester en temps polynomial (et même facilement en temps quadra-
tique) :
1. si une formule en FNC est satisfiable ;
2. si une formule en FND est une tautologie.
Théorème 1.
Pour toute formule
φ
, il existe une formule
ψ
en forme normale conjonctive
(resp. disjonctive) vérifiant φψ.
Démonstration : par induction sur φ.
2.4 Résoudre SAT de façon efficace ?
On déduit de ce qui précède un algorithme pour tester la satisfiabilité d’une formule
φ.
1.
Transformer
φ
en une formule
ψ
équivalente en FND (voir démonstration du
théorème d’existence de cette FND).
2. Tester si ψest satisfiable (en temps quadratique).
3. On en déduit immédiatement si φest satisfiable.
10
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !