INF 321 Un peu de logique
Eric Goubault
Cours 6
17 juin 2013
Dans le dernier ´ episode...
On a vu:
Les fonctions r´ecursives (programmation)
Les fonctions r´ecursives primitives et partielles (th´eorie de la calculabilit´e)
On va voir:
Logique propositionnelle (rappels) et th´eorie de la preuve Logique des pr´edicats du premier ordre et d´ecidabilit´e Java Modeling Language
Un peu de logique du premier ordre
Qu’est-ce que c’est
Cr´eee dans un effort de “formalisation” des math´ematiques Par exemple, l’arithm´etique de P´eano, la th´eorie des ensembles de Zermelo-Fraenkel, sont des th´eories du premier ordre Premier ordre: les quantificateurs s’appliquent sur des variables, pas sur des pr´edicats par exemple
Syntaxe
Partie propositionnelle: op´erateurs binaires (infixe) ∧(et), ∨ (ou), ⇒(implication), ⇔ (´equivalence), unaire ¬(n´egation), 0-aire (constantes) 1 (vrai), 0 (faux) et un ensemble de variables infini
Les quantificateurs: ∀ (pour tout),∃ (il existe), des pr´edicats de base, d’arit´es variables,P(x), Q(x,y),x ≤y,x =y etc.
et des fonctions d’arit´es variables ´egalement,f(x),g(x,y), x2,x−y etc.
Rappel: logique propositionnelle du 1er ordre
Logique propositionnelle non quantifi´ee Que des variables bool´eennes, x1,x2, . . . ,xn
Que les op´erateurs ∧,∨, =⇒,⇔,¬, et les constantes 1 (vrai) et 0 (faux)
Probl`eme SAT
“Satisfiabilit´e” d’une formule Φ: trouver, s’il en existe, des valeurs 1 ou 0 pour les variablesx1,x2, . . . ,xn, telles que la formule Φ soit
“vraie”
Evaluation des formules en logique propositionnelle
Environnements
On d´efinit une interpr´etation [[.]] sur les formules `a valeur dans D (identifi´e ici `a{0,1}), les bool´eens
On doit aussi interpr´eter les variablesx qui prennent des valeurs dans D
L’´evaluation des formules d´epend ainsi ´egalement d’un environnement: ρ: Var→D
Evaluation des termes Comme d’habitude...:
[[0]]ρ = 0 [[1]]ρ = 1 [[x]]ρ = ρ(x)
Evaluation des formules
PourF formule, [[F]]ρ va avoir une valeur dans{0,1}:
Partie propositionnelle
[[Φ∧Ψ]]ρ = ([[Φ]]ρ) ([[Ψ]]ρ) [[¬Φ]]ρ = 1−[[Φ]]ρ
On n’a pas besoin d’en dire plus, grˆace aux lois de Morgan (A∨B =¬((¬A)∧(¬B)), A⇒B = (¬A)∨B etc.)
Satisfiabilit´ e et tautologies
Satisfiabilit´e
SoitM une interpr´etation (domaine D, fonction s´emantique [[.]], environnementρ) et Φ une formule:
M satisfait Φ, ouM |= Φ si [[Φ]]ρ= 1 Tautologies
Une formule est une tautologie si elle est vraie dans toutes les interpr´etations
Exemples - ` a vous de jouer!
(x0∧x1)∨(¬x0∧ ¬x1): appelantρ00,ρ10,ρ01et ρ11 resp. les environnements o`u x0 = 0 (resp. 1, 0 et 1) etx1= 0 (resp. 0, 1, et 1):
[[(x0∧x1)∨(¬x0∧ ¬x1)]]ρ00
= 1−[[¬(x0∧x1)∧ ¬(¬x0∧ ¬x1)]]ρ00
= 1−([[¬(x0∧x1)]]ρ00) ([[¬(¬x0∧ ¬x1)]]ρ00)
= 1−(1−[[x0∧x1]]ρ00) (1−[[¬x0∧ ¬x1]]ρ00)
= 1−(1−([[x0]]ρ00)([[x1]]ρ00)) (1−(1−[[x0]]ρ00)(1−[[x1]]ρ00))
= 1
etc.
Exemples - ` a vous de jouer!
¬(((¬x0)∨x1)∧x0))∨x1
x0∧x1∨x0
((A⇒B)⇒A)⇒A(loi de Pierce)
Exemples - ` a vous de jouer!
¬(((¬x0)∨x1)∧x0))∨x1
x0∧x1∨x0
((A⇒B)⇒A)⇒A(loi de Pierce)
Un SAT solveur r´esoudrait cela de fa¸con plus maline (DPLL - voir Z3, Yices etc.)
Exemples - ` a vous de jouer!
¬(((¬x0)∨x1)∧x0))∨x1 x0∧x1∨x0
((A⇒B)⇒A)⇒A(loi de Pierce)
Peut-on d´eterminer les tautologies, par “raisonnement”?
D´ etermination des propri´ et´ es sans
´ enum´ eration, par preuve?
Th´eorie de la preuve...
On ne veut pas utiliser la d´efinition combinatoire de la validit´e des formules
On veut avoir un calcul d’inf´erences logiques permettant de prouver la validit´e d’une formule, sans r´ef´erence au mod`ele bool´een (th´eorie de la d´emonstration)
Et maintenant un peu de th´eorie de la d´emonstration...
Quelques ´ el´ ements de th´ eorie de la d´ emonstration
D´eduction naturelle (Gentzen 1934)
Fa¸con de pr´esenter des preuves en logique propositionnelle du 1er ordre
Notion de r`egle d’inf´erence R; ´etant donn´e les propositions p1, . . . ,pn, on prouve q (en une ´etape) se note:
(R) : p1 p2 . . . pn q
“Si on a une preuve de p1, de p2,. . ., de pn, alors on a une preuve deq en rajoutant l’inf´erence R”
Un syst`eme formel en d´eduction naturelle est la donn´ee de r`egles ´ecrites dans ce format
Une preuve en d´eduction naturelle est un arbre de telles r`egles Cas particulier de [p]: on d´echarge l’hypoth`esep (ou la formule p prouv´ee par ailleurs) - explication apr`es
Syst` eme de preuve en logique
propositionnelle du 1er ordre (quantifi´ ee)
Axiome
(Ax) p p R`egles d’introduction
(∧I) p q p∧q
[p]
... (⇒I) p⇒qq (∨Ig) p
p∨q (∨Id) q
p∨q (∀I) p
∀x.p (∃I) p[a/x]
∃x.p
((∀I) valide seulement six n’apparaˆıt dans aucune des hypoth`eses [non d´echarg´ees])
Syst` eme de preuve en logique propositionnelle du 1er ordre
R`egles d’´elimination
(∧Eg) p∧qp (∧Eg) p∧qq (⇒E) p p⇒q q
(∨E)
[p] [q] ... ... p∨q r r
r
(∀E) ∀x.p p[a/x]
(∃E)
[p] ...
∃x.p q q
Syst` eme de preuve en logique propositionnelle du 1er ordre
R`egles pour F (faux)
(F) F
p (RPA)
[¬p]
... F p
(la derni`ere r`egle est la r´eduction par l’absurde (RPA))
Exemple de preuve
Prouver quep∧q⇒q∧p
(⇒I) (∧I) (∧Ed) [p∧q]q (∧Eg) [p∧q]p q∧p
p∧q ⇒q∧p
(les hypoth`eses sont d´echarg´ees par la r`egle d’introduction de l’implication (⇒I)!)
“S´ emantique” de ces r` egles d’inf´ erences
Sans rentrer trop dans les d´etails...
Soit P l’ensemble des formules logiques que l’on peut ´ecrire dans notre logique propositionnelle du 1er ordre
Chaque r`egle d’inf´erenceR d´efinit une fonctionFR :P → P (de production de nouvelles formules vraies, et enl`eve les formules d´echarg´ees)
L’ensemble des propositions prouvables par le syst`eme formel d´ecrit en d´eduction naturelle est le plus petit ensemble invariant par l’application des FR,R r`egle d’inf´erence: point fixe! (ou cloture transitive de l’application des r`egles, par le th´eor`eme de Kleene - cours suivant!)
Coq et la logique propositionnelle
En toute rigueur...
Coq a une logique sous-jacente qui n’est pas la logique propositionnelle (ni mˆeme des pr´edicats) du premier ordre - bien plus compliqu´e que cela
Par d´efaut, il s’agit d’une logique “constructive”
(“intuitioniste”) - on ´evoquera cet aspect au cours 9 (“Curry-Howard”)
On commence les sessions Coq en imposant la logique constructive Require Import Classical.
Manipulation des formules
Ceci n’est pas un cours de Coq! On illustre juste le concept de formalisation des preuves
Les r`egles de manipulation sont proches de celles de la d´eduction naturelle, concernant le fragment propositionnel classique
Coq: crash course
Propositions
Variables propositionnelle de “type”Prop. Ex. p:Prop
Connecteurs logiques: /\ (et),\/(ou),->(implique),~(non) Quantificateurs: forall (quelque soit),exists (il existe) Preuves
Format des propositions `a prouver (par exemple):
Lemma e x a m p l e : f o r a l l p q : Prop , p /\q−>q /\p . Compos´e du mot cl´e Lemmapuis d’un nom,:, la proposition `a prouver, et un point
Les preuves d´emarrents par Proof., finissent par Qed. et sont compos´ees de suites de “tactiques” (mots cl´es suivis d’un point)
Etat d’une preuve sous Coq
2 s u b g o a l s H : P /\ Q H1 : P H2 : Q
==============
Q
s u b g o a l 2 i s : P
2 “buts” `a prouver: on est en train d’essayer de prouver Q, apr`es on aura `a prouverP
Les hypoth`eses associ´ees `a chaque but sont au dessus des
==========; elles ont des noms, utilisables dans les tactiques
Exemple
Prouver quep∧q⇒q∧p
Lemma e x a m p l e : f o r a l l p q : Prop , p /\q−>q /\p . 1 s u b g o a l s
( 1 / 1 ) f o r a l l p q : Prop , p /\ q −> q /\ p
En d´eduction naturelle
∀p,q, p∧q ⇒q∧p
Exemple
intros p q.: on suppose donn´es p et q
Lemma e x a m p l e : f o r a l l p q : Prop , p /\q−>q /\p . P r o o f . i n t r o s p q .
1 s u b g o a l s p : Prop q : Prop
( 1 / 1 ) p /\ q −> q /\ p
En d´eduction naturelle (intro de ∀) p∧q ⇒q∧p (∀I) ∀p,q, p∧q ⇒q∧p
Exemple
intros H.: on introduit l’hypoth`ese de l’implication Lemma e x a m p l e : f o r a l l p q : Prop , p /\q−>q /\p .
P r o o f .
i n t r o s p q . i n t r o H . p : Prop
q : Prop H : p /\ q
( 1 / 1 ) q /\ p
En d´eduction naturelle: (⇒I)
(⇒I)
[p∧q]
q∧p p∧q ⇒q∧p
Exemple
split.: on doit prouver les deux arguments du et i n t r o s p q . i n t r o H . s p l i t .
p : Prop q : Prop H : p /\ q
( 1 / 2 ) q
( 2 / 2 ) p
En d´eduction naturelle: intro du et (∧I)
(⇒I)
[p∧q]
(∧I) q p
q∧p p∧q ⇒q∧p (∀I) ∀p,q, p∧q⇒q∧p
Exemple
destruct H: prise des deux arguments d e s t r u c t H .
p : Prop q : Prop H : p H0 : q
( 1 / 2 ) q
( 2 / 2 ) p
Utilisation de l’´elimination gauche et droite du et
(⇒I)
(∧I) (∧Ed) [p∧q]q (∧Eg) [p∧q]p q∧p
p∧q ⇒q∧p
Exemple
exact H0.: on remarque que l’hypoth`ese est la conclusion, ce qui conclut la preuve
e x a c t H0 . 1 s u b g o a l s p : Prop q : Prop H : p /\ q
( 1 / 1 ) p
Exemple
On conclut la preuve, avec le dernier but (venant de l’´elimination `a droite):
d e s t r u c t H . e x a c t H .
No more s u b g o a l s .
(puisQed. permet de “d´efinir” le lemme example)
En r´ esum´ e
Axiome
(Ax) p p H : P
==========
P
exact H.ouassumption. ouapply H.
Introduction du ou
(∨Id) q p∨q . . .
==========
P \/ Q
r i g h t .
. . .
==========
Q (de mˆeme, left. pour obtenir P)
En r´ esum´ e
Introduction du et
(∧I) p q p∧q
. . .
===========
P /\ Q
s p l i t .
. . .
===========
P . . .
===========
Q
En r´ esum´ e
Introduction du “pour tout”
(∀I) p
∀x.p
. . .
===========
f o r a l l X , P
i n t r o .
. . . X : Prop
===========
P
En r´ esum´ e
Introduction du “implique”
[p]
... (⇒I) p⇒qq
. . .
===========
P −> Q
i n t r o .
. . . P
===========
Q
En r´ esum´ e
Elimination du et
(∧Eg) p∧qp (∧Eg) p∧qq
. . .
H : P /\ Q
============
R
e l i m H . i n t r o . i n t r o .
. . . H0 : P H1 : Q
============
R
En r´ esum´ e
Elimination du ou
(∨E)
[p] [q]
... ... p∨q r r
r
. . .
H : P \/ Q
==========
R
e l i m H .
H0 : P
==========
R H1 : Q
==========
R (oucase H.)
En r´ esum´ e
Elimination du “implique”
(⇒E) p p ⇒q q . . .
H : P −> Q
===========
Q
a p p l y H .
. . .
H : P −> Q
===========
P
A vous de jouer!
Prouver...
∀A,B,C, ((A∧B)⇒C)⇒A⇒B⇒C (“Curryfication” - cf. cours 9)
∀A,B,C, A∧(B∧C)⇒(A∧B)∧C
∀A,B,C,D, (A⇒B)∧(C ⇒D)∧A∧C ⇒B⇒D
Autre format: calcul des s´ equents
Reformulation de la th´eorie de la d´emonstration en logique propositionnelle du 1er ordre
Introduit par Gentzen (1936), apr`es la d´eduction naturelle Formulation plus sym´etrique, sans notion de preuve
“d´echarg´ee”
Autre format: calcul des s´ equents
Format
Comme en d´eduction naturelle:
pr´emisses conclusion
Les pr´emisses sont constitu´es de jugements de preuves (resp.
la conclusion est un jugement de preuve):
Γ`∆
o`u Γ et ∆ sont des suites de formules logiques
Se lit, “En supposant toutes les formules de Γ prouv´ees, on peut prouver la disjonction de toutes les formules de ∆” (Γ contient donc les “preuves d´echarg´ees” de la d´eduction naturelle)
Satisfiabilit´ e versus Preuve?
Notations
On note`p si p est prouvable en logique propositionnelle (par le syst`eme de d´eduction naturelle pr´ec´edent),
EtM |=p si p est satisfiable dans le mod`ele M de la th´eorie de la logique propositionnelle du 1er ordre - |=p si p est satisfiable dans tous les mod`eles M
En bref
Correction: Si`p alors |=p
Compl´etude: Si|=p alors `p; c’est-`a-dire que sip est vraie, elle est prouvable dans notre syst`eme formel! (prouv´ee dans la th`ese de G¨odel en 1929)
Satisfiabilit´ e versus Preuve?
Notations
On note`p si p est prouvable en logique propositionnelle (par le syst`eme de d´eduction naturelle pr´ec´edent),
EtM |=p si p est satisfiable dans le mod`ele M de la th´eorie de la logique propositionnelle du 1er ordre - |=p si p est satisfiable dans tous les mod`eles M
En bref
Correction: Si`p alors |=p
Compl´etude: Si|=p alors `p; c’est-`a-dire que sip est vraie, elle est prouvable dans notre syst`eme formel! (prouv´ee dans la th`ese de G¨odel en 1929)
(pas vrai en logique des pr´edicats en g´en´eral) ex. 2`eme probl`eme de Hilbert, 1900 -
D’ailleurs en Coq...
Tactique tauto!
Lemma a n d a s s o c : f o r a l l A B C : Prop , A/\(B/\C)−>(A/\B) /\C . P r o o f .
t a u t o . Qed .
P r i n t a n d a s s o c .
La preuve trouv´ee...
f u n (A B C : Prop ) (H : A /\ B /\ C) =>
a n d i n d
( f u n ( H0 : A) ( H1 : B /\ C) =>
a n d i n d ( f u n ( H2 : B) ( H3 : C) =>
c o n j ( c o n j H0 H2 ) H3 ) H1 ) H : f o r a l l A B C : Prop , A/\B/\C−>(A /\ B) /\C Plus d’explication au cours 9!
Syntaxe de la logique des pr´ edicats
Grammaire
Les termes sont form´es `a partir des variables, et inductivement, par application r´ep´et´ee de fonctions.
Autrement dit, x variable est un terme, et si t1, . . . ,tn sont des termes, et f une fonctionn-aire, alorsf(t1, . . . ,tn) est un terme
Les formules sont d´efinies comme suit:
P(t1, . . . ,tn) est une formule quand Pest un pr´edicatn-aire,
ett1, . . . ,tn sont des termes
¬Φ est une formule quand Φ est une formule
Φ∧Ψ, Φ∨Ψ, Φ⇒Ψ, Φ⇔Ψ sont des formules quand Φ et Ψ sont des formules
∀x.Φ et∃x.Φ sont des formules quand Φ est une formule
En Coq
Formules pour la th´eorie des groupes S e c t i o n G r o u p s .
V a r i a b l e X : S e t . V a r i a b l e m: X∗X−>X . V a r i a b l e u : X . V a r i a b l e i : X−>X .
Pr´edicats
Uniquement l’´egalit´e (d´ej`a d´efini de mani`ere non ´equivoque dans Coq)
Variables libres/li´ ees
Variables libres/li´ees
Une variable est librequand elle n’est pas quantifi´ee Une variable est li´eequand elle est quantifi´ee Peut se d´efinir (et se v´erifier par un programme!) inductivement sur la structure des formules Exemple
Dans la formule
∀x.P(x,y,z) x est li´ee,y et z sont libres
La logique des pr´ edicats pour formaliser les structures
Vous en avez l’habitude, exemple: groupes
fonctions: ∗(l’op´eration de groupe),−1 (l’inversion) et 1 (l’unit´e du groupe)
pr´edicats: = (´egalit´e)
Axiomes (formules d´efinissant les groupes, au premier ordre), formant une “th´eorie”:
∀x.x∗1 =x
∀x.1∗x=x
∀x.x∗x−1= 1
∀x.x−1∗x= 1
∀x,y,z.x∗(y∗z) = (x∗y)∗z Cela va surtout nous servir par la suite pour formaliser les propri´et´es de programme (validation - cours 8)
La logique des pr´ edicats pour formaliser les structures
Vous en avez l’habitude, exemple: groupes
fonctions: ∗(l’op´eration de groupe),−1 (l’inversion) et 1 (l’unit´e du groupe)
pr´edicats: = (´egalit´e)
Axiomes (formules d´efinissant les groupes, au premier ordre), formant une “th´eorie”:
∀x.x∗1 =x
∀x.1∗x=x
∀x.x∗x−1= 1
∀x.x−1∗x= 1
∀x,y,z.x∗(y∗z) = (x∗y)∗z Cela va surtout nous servir par la suite pour formaliser les
En Coq
Axiomes
H y p o t h e s i s r i g h t n e u t r a l : f o r a l l x : X , m( x , u)=x . H y p o t h e s i s l e f t n e u t r a l : f o r a l l x : X , m( u , x)=x . H y p o t h e s i s r i g h t i n v e r s e : f o r a l l x : X , m( x , i ( x ))= u . H y p o t h e s i s l e f t i n v e r s e : f o r a l l x : X , m( i ( x ) , x)=u . H y p o t h e s i s m u l t a s s o c : f o r a l l x y z : X ,
m( x ,m( y , z ))=m(m( x , y ) , z ) .
S´ emantique (=mod` eles, pas preuves!) de la logique des pr´ edicats
Interpr´etation des termes
S´emantique d´enotationnelle encore une fois!
On se donne un mod`ele, oustructure du premier ordre D (un ensemble)
A chaque symbolef d’arit´e n, on associe [[f]] :Dn→D (par convention, pour les constantes, d’arit´e 0, [[f]]∈D)
Interpr´etation des formules
A chaque pr´edicatP d’arit´e n on associe une fonction caract´eristiqueχP :Dn→ {0,1}
L’id´ee ´etant que l’ensemble des valeurs deDn, dans cette interpr´etation, telles queP est vraie, est χ−1p (1)
Evaluation des formules
Environnements
Etant donn´e un mod`ele D et une interpr´etation [[.]]
On doit aussi interpr´eter les variablesx qui prennent des valeurs dans D
L’´evaluation des formules d´epend ainsi ´egalement d’un environnement: ρ: Var→D
Evaluation des termes Comme d’habitude...:
[[x]]ρ = ρ(x)
[[f(t1, . . . ,tn)]]ρ = [[f]]([[t1]]ρ, . . . ,[[tn]]ρ)
Evaluation des formules
PourF formule, [[F]]ρ va avoir une valeur dans{0,1}:
Partie propositionnelle
[[Φ∧Ψ]]ρ = ([[Φ]]ρ) ([[Ψ]]ρ) [[¬Φ]]ρ = 1−[[Φ]]ρ
On n’a pas besoin d’en dire plus, grˆace aux lois de Morgan (A∨B =¬((¬A)∧(¬B)), A⇒B = (¬A)∨B etc.)
Evaluation des formules
[[P(t1, . . . ,tn)]]ρ=χP([[t1]]ρ, . . . ,[[tn]]ρ) [[t1 =t2]]ρ=
1 si [[t1]]ρ= [[t2]]ρ 0 sinon
Quantificateurs:
[[∀x.Φ]]ρ =
1 si ∀ρ0 ∈Env t.q. ρ0(y) =ρ(y),
∀y 6=x in Var, [[Φ]]ρ0 = 1 0 sinon
[[∃x.Φ]]ρ =
1 si ∃ρ0 ∈Env t.q. ρ0(y) =ρ(y),
∀y 6=x in Var, [[Φ]]ρ0 = 1 0 sinon
Satisfiabilit´ e et tautologies
Satisfiabilit´e
SoitM une interpr´etation (domaine D, fonction s´emantique [[.]], environnementρ) et Φ une formule:
M satisfait Φ, ouM |= Φ si [[Φ]]ρ= 1
Cela n’a r´eellement de sens que pour les formules Φ closes (c-.`a-.d. toutes ses variables sont li´ees)
Mod`ele d’une th´eorie
M est un mod`ele d’une th´eorie, si l’interpr´etation de tout axiome de cet ensemble d’axiomes est vrai
Exemple: Z/2Z avec l’addition modulo 2 est un mod`ele de la th´eorie des groupes
Tautologies
Une formule est une tautologie si elle est vraie dans toutes les
Remarques sur les th´ eories et les mod` eles
Comment d´efinit-on la signature d’un mod`ele ou d’une th´eorie?
C’est un ensemble de fonctions et de pr´edicats choisispour une th´eorie ou un mod`ele donn´e
Exemple donn´e la derni`ere fois: pour d´efinir la th´eorie des groupes, il est naturel de prendre comme signature:
fonctions: ∗(l’op´eration de groupe),−1(l’inversion) et 1 (l’unit´e du groupe)
pr´edicats: = (´egalit´e)
Mais on pourrait aussi ne prendre que ∗,−1 et = (pas l’unit´e donc) et ´ecrire juste en plus des axiomes classiques:
∀x,y x∗x−1=y∗y−1
∀x,y x∗(y∗y−1) =x
Pour les mod` eles...
Encore plus de choix possible d’une certaine fa¸con Exemple: les nombres r´eels
Peut ˆetre vu comme un groupe additif, donc avec comme signature +,−(oppos´e, unaire) et 0
Peut ˆetre vu comme un corps, donc avec +, −,∗et 0 et 1 Peut ˆetre vu comme un corps totalement ordonn´e
archim´edien, donc avec +,−,∗, 0 et 1 et comme pr´edicats = comme pr´ec´edemment mais aussi≤
etc.
Tout d´epend de ce que l’on veut “observer”
Exemple
Mod`eles pour la th´eorie des groupes
N’importe quel groupe est un mod`ele de la th´eorie des groupes!
Par exemple D=Z/2Z, l’op´eration de groupe ´etant l’addition modulo 2
Mais la th´eorie deZ/2Z comprend bien plus d’axiomes, par exemple c’est un groupe ab´elien! (non requis dans la th´eorie des groupes g´en´eraux)
Th´ eories et mod` eles
Th´eories
Une th´eorie (du premier ordre) est un ensemble d’axiomes, c’est-`a-dire de formules du premier ordre avec une certaine signature, que l’on suppose ˆetre vraie
Exemple: la th´eorie des groupes vue pr´ec´edemment!
En g´en´eral on suppose que l’ensemble d’axiomes est fini ou r´ecursivement ´enum´erable
Th´ eories et mod` eles
Relation Mod`eles/Th´eories
A tout mod`ele (ex. R), on peut associer, ´etant donn´e une signature (ex. pour R,{=,×,+,−, /,0,1...}), sa th´eorie du premier ordre, c-.`a-.d. l’ensemble de toutes les formules avec cette signature, que satisfait le mod`ele
Inversement, `a toute th´eorie, on peut associer l’ensemble des mod`eles qui satisfont `a cette th´eorie
Relations compliqu´ees entre les 2, le premier ordre ne suffit g´en´eralement pas `a d´ecrire un mod`ele de fa¸con unique (ex. les r´eels non standards...)
En fait c’est mˆeme assez syst´ematique... (compacit´e et Lowenheim-Skolem en th´eorie des mod`eles, cf. INF 423)
D´ ecidabilit´ e
D´ecidabilit´e en logique des pr´edicats du 1er ordre Soit F une formule de la logique des pr´edicats du premier ordre
On choisit comme domaine d’interpr´etation D=N On dit queF est d´ecidable siχF est dans R (r´ecursive partielle)
D´ ecidabilit´ e...
Probl`eme de l’arrˆet
On peut coder tout programme Java J(=une chaˆıne de caract`eres) en un entier naturel[J](l’ensemble des programmes estd´enombrable) - on peut le faire de facon algorithmique
Le pr´edicat sur N:
P(n) =”le programme de num´ero n termine”
est ind´ecidable
Il n’existe pas d’algorithme qui ´etant donn´e un programme, r´eponde en temps fini si ce programme termine ou pas!
La preuve en bref
Supposons qu’il existe un algorithme Aqui prend en argument un programme Jde num´erox prenant en argument un entier, et un entier n et renvoietrue si J(n) termine,falsesinon Consid´erons le programme Ksuivant:
K( x ) { s i A( x , x )
t a n t que ( t r u e ) {}
}
Consid´ererK([K]):
SiKtermine sur[K]alorsA([K],[K]) est vrai, doncK([K]) faittant que (true) { }et ne termine pas...
SiKne termine pas sur[K]alorsA([K],[K])est faux donc K([K])termine...
Contradiction! (argument diagonal `a la Cantor):
Pour aller plus loin...
En logique
Beaucoup de r´esultats fondateurs de d´ecidabilit´e et d’ind´ecidabilit´e de th´eories
Par exemple, l’arithm´etique de P´eano(l’arithm´etique que vous connaissez) est ind´ecidable!
Mais Presburger, plus faible, est d´ecidable
JML: une logique pour les programmes JAVA
Principe
“Java Modeling Language”: annotations mises sous commentaires et apr`es un symbole @
Sp´ecifie des pr´edicats sur les valeurs des variables pr´e- et post-conditions, des invariants (cf. cours 8) etc.
Outils d´edi´es de v´erification formelle (cf. cours 8), de v´erification `a l’ex´ecution (maintenant, et en TD) etc.
Th´eorie et mod`ele
Il faut voir la sp´ecification en JML comme une th´eorie Et le programme comme un mod`ele
On cherche `a s’assurer que le programme est bien un mod`ele de la sp´ecification...
Notations
Propri´et´es
Toutes les propri´et´es que l’on peut ´ecrire en Java (variables du programme, d´er´ef´erencements etc.), avec les connecteurs logiques Java (&&, ||etc.) ainsi que d’autres (==>,<==>) On peut rajouter des variables auxilaires, avec des
quantificateurs forall,exists Plus formellement
exprd´enotent toutes les expressions arithm´etiques Java, sans appel `a des m´ethodes,Rsont ==,!=,<,<=,>,>=, et les propri´et´es
sont:
Prop ::= expr
| expr R expr
| Prop ==>Prop
| Prop<==>Prop
| Prop && Prop
| Prop|| Prop
| \forall type ident ; Prop
Notations
Annotations de m´ethodes
requires P; o`u P est une propri´et´e, est une “pr´econdition”
pour la m´ethode qui suit: “supposons que les valeurs des variables satisfont P”
ensures Q;o`u P est une propri´et´e, est une “postcondition”
pour la m´ethode qui suit: “apr`es appel de la m´ethode, Qest vrai”
\result d´enote la valeur de retour (s’il y en a) de la m´ethode en question
Notations
Annotations de boucles
loop_invariant P;o`u P est une propri´et´e, est un “invariant de la boucle” (cf. cours 8) qui suit: “A n’importe quelle
it´eration de la boucle, au d´ebut du corps de boucle,Pest vrai”
decreases E; o`u E est une expression (fonction vers les entiers, strictement d´ecroissante `a chaque it´eration): permet de prouver la terminaison des boucles (cf. cours 5)
(plus en INF431)
Un exemple tr` es simple
Exemple de code et d’assertions
p u b l i c c l a s s s i m p l e s u m { /∗@ r e q u i r e s
@ n>=0;
@ e n s u r e s
@ \r e s u l t == 2∗n ;
@ d i v e r g e s f a l s e ;
@ ∗/
s t a t i c i n t sum (i n t n ) { i n t x , y ;
x = 0 ; y = 0 ;
/∗@ l o o p i n v a r i a n t
@ 0<=x && x<=n && y==2∗x ;
@ d e c r e a s e s n−x ;
@∗/
w h i l e ( x<n ) { y=y +2;
x=x +1;
} r e t u r n y ; }
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) { S y s t e m . o u t . p r i n t l n ( sum ( 5 ) ) ;
} }
Utilisation d’un compilateur JML
(CLASSPATH = . . . / JML : j m l 4 c . j a r : j m l 4 r t . j a r )
> j a v a o r g . j m l s p e c s . j m l 4 . r a c . Main s i m p l e s u m . j a v a
> j a v a s i m p l e s u m 10
Utilisation d’un compilateur JML
Avec un programme qui ne correspond pas `a la sp´ecification:
/∗@ l o o p i n v a r i a n t
@ 0<=x && x<=n && y==2∗x +1;
@ d e c r e a s e s n−x ;
@∗/ On obtient:
> j a v a s i m p l e s u m
E x c e p t i o n i n t h r e a d ”main ” o r g . j m l s p e c s . j m l 4 . r a c . r u n t i m e . J M L L o o p I n v a r i a n t E r r o r : By method s i m p l e s u m . sum
R e g a r d i n g s p e c i f i c a t i o n s a t
F i l e ”s i m p l e s u m . j a v a ” , l i n e 1 4 , c h a r a c t e r 6 With v a l u e s
n : 5 y : 0 x : 0
a t s i m p l e s u m . i n t e r n a l $ s u m ( s i m p l e s u m . j a v a : 3 6 5 ) a t s i m p l e s u m . sum ( s i m p l e s u m . j a v a : 1 1 )
a t s i m p l e s u m . i n t e r n a l $ m a i n ( s i m p l e s u m . j a v a : 6 1 2 ) a t s i m p l e s u m . main ( s i m p l e s u m . j a v a : 1 3 )
C’est tout pour aujourd’hui...
Quelques r´ef´erences pour aller plus loin JML:
http://www.eecs.ucf.edu/~leavens/JML//index.shtml (vous pouvez utiliser jml4c, cf. page INF321)
COQ: coq.inria.fr(consulter l’excellent tutoriel de Benjamin Pierce “Software Foundations”, ou les nombreux autres tutoriels, depuis la page INF321)
Plus dans le cours INF551!
La prochaine fois
S´emantique des boucles et des programmes r´ecursifs Bon TD!
C’est tout pour aujourd’hui...
Quelques r´ef´erences pour aller plus loin JML:
http://www.eecs.ucf.edu/~leavens/JML//index.shtml (vous pouvez utiliser jml4c, cf. page INF321)
COQ: coq.inria.fr(consulter l’excellent tutoriel de Benjamin Pierce “Software Foundations”, ou les nombreux autres tutoriels, depuis la page INF321)
Plus dans le cours INF551!
La prochaine fois
S´emantique des boucles et des programmes r´ecursifs Bon TD!
C’est tout pour aujourd’hui...
Quelques r´ef´erences pour aller plus loin JML:
http://www.eecs.ucf.edu/~leavens/JML//index.shtml (vous pouvez utiliser jml4c, cf. page INF321)
COQ: coq.inria.fr(consulter l’excellent tutoriel de Benjamin Pierce “Software Foundations”, ou les nombreux autres tutoriels, depuis la page INF321)
Plus dans le cours INF551!
La prochaine fois
S´emantique des boucles et des programmes r´ecursifs Bon TD!