• Aucun résultat trouvé

INF 321 Un peu de logique

N/A
N/A
Protected

Academic year: 2022

Partager "INF 321 Un peu de logique"

Copied!
71
0
0

Texte intégral

(1)

INF 321 Un peu de logique

Eric Goubault

Cours 6

17 juin 2013

(2)

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

(3)

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.

(4)

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”

(5)

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)

(6)

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

(7)

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

(8)

Exemples - ` a vous de jouer!

(x0∧x1)∨(¬x0∧ ¬x1): appelantρ001001et ρ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.

(9)

Exemples - ` a vous de jouer!

¬(((¬x0)∨x1)∧x0))∨x1

x0∧x1∨x0

((A⇒B)⇒A)⇒A(loi de Pierce)

(10)

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

(11)

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”?

(12)

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...

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

“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!)

(19)

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

(20)

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)

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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)

(29)

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)

(30)

En r´ esum´ e

Introduction du et

(∧I) p q p∧q

. . .

===========

P /\ Q

s p l i t .

. . .

===========

P . . .

===========

Q

(31)

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

(32)

En r´ esum´ e

Introduction du “implique”

[p]

... (⇒I) p⇒qq

. . .

===========

P > Q

i n t r o .

. . . P

===========

Q

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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”

(38)

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)

(39)

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)

(40)

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 -

(41)

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!

(42)

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

(43)

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)

(44)

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

(45)

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)

(46)

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

(47)

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

(48)

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)

(49)

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]]ρ)

(50)

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

(51)

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

(52)

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

(53)

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 xx−1=yy−1

∀x,y x(yy−1) =x

(54)

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”

(55)

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)

(56)

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

(57)

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)

(58)

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)

(59)

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!

(60)

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

(61)

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

(62)

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...

(63)

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

(64)

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

(65)

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)

(66)

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

} }

(67)

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

(68)

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 )

(69)

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!

(70)

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!

(71)

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!

Références

Documents relatifs

• si ϕϕϕϕ contient n quantificateurs existentiels, n nouveaux symboles de fonctions (et/ou constantes) apparaissent dans ϕϕϕϕ ' (il s'agit des fonctions/constantes

on remplace chaque variable quantifiée existentiellement par une fonction des variables quantifiées universellement avant et on supprime les quantificateurs existentiels. On convient

Un ensemble de formules T est coh´ erent si et seulement si on ne peut pas prouver ⊥ ` a partir de cet ensemble i.e...

En traduisant ce probl`eme dans la logique du premier ordre, montrer `a l’aide de la d´eduction naturelle que Pierre r´eussira sa carri`ere.

Cependant, les r(gles que nous avons propos$es dans la le!on 5 sont des r(gles purement syntaxiques : elles ne consid(rent que la forme syntaxique des phrases. Nous avons

Une formule propositionnelle est une conséquence (sémantique) ďun ensemble de propositions (écrit : “ Th | = φ ”) si et seulement si toute interprétation qui rend vraies toutes

Ľapplication de ces règles nous permet de prouver des théorèmes (“⊢ φ”) et des séquents (“φ ⊢ ψ”) La déduction naturelle est une méthode syntaxique qui est

Si dans une expression, dont le contenu n’est pas n´ecessairement capable de devenir un jugement, un signe simple ou compos´e a une ou plusieurs occurrences et si nous regardons