• Aucun résultat trouvé

Domaines relationnels TAS : Typage et analyse statique M2, Master STL INSTA, Sorbonne Universit´e Antoine Min´e

N/A
N/A
Protected

Academic year: 2022

Partager "Domaines relationnels TAS : Typage et analyse statique M2, Master STL INSTA, Sorbonne Universit´e Antoine Min´e"

Copied!
58
0
0

Texte intégral

(1)

Domaines relationnels

TAS : Typage et analyse statique M2, Master STL INSTA, Sorbonne Universit´ e

Antoine Min´ e

Ann´ee 2018–2019

Cours 12

21 mars 2019

(2)

Rappel : domaines num´ eriques non relationnels

x y

x y

x y

signes constantes intervales parit´ es

Principe :

d´ efinir une abstraction D

]

d’ensembles d’entiers P ( Z )

et des abstractions +],−]],/],∪],⊆],≤], . . .

repr´ esenter un ensemble d’environnements X ∈ P(E ) en associant ` a chaque variable une valeur abstraite : X

]

∈ E

] def

= V → D

]

E

]

a une structure de treillis

extension de⊆],∪],∩]point `a point

S

]

J V ← e K et C

]

J e

1

./ e

2

K sont d´ eriv´ es syst´ ematiquement par des algorithmes g´ en´ eraux

param´etr´es par l’implantation de +],−],. . .surD]

(3)

Perte de pr´ ecision : abstraction cart´ esienne

Perte de pr´ ecision :

Les domaines non relationnels :

abstraient les variables ind´ ependemment les unes des autres effectuent implicitement une abstraction cart´ esienne :

X ∈ P(E) 7→ { ρ ∈ V → Z | ∀V ∈ V , ∃ρ

0

∈ X , ρ(V ) = ρ

0

(V ) } ils oublient donc les relations entre les variables

(U ∈ {0, 2}) ∧ (V ∈ {0, 2}) ∧ (U + V ≤ 2) = ⇒ (U, V ) ∈ {0, 2} × {0, 2}

(4)

Am´ eliorer la pr´ ecision

Deux types de domaines plus pr´ ecis, au del` a des domaines non-relationnels.

Les domaines disjonctifs vus au cours pr´ ec´ edent.

e.g., permettent de repr´esenter (x= 1∧y= 1)∨(x= 2∧y= 2), non convexe

Les domaines relationnels convexes :

permettant de repr´esenter des relations conjonctives entre variables

poly` edres

(e.g., 2x+ 3y≤z)

zones

(e.g.,x≤y+ 10)

(5)

Domaines num´eriques relationnels

Domaines num´ eriques relationnels

(6)

Domaines num´eriques relationnels Motivation

Motivation

x y

poly` edres zones

Repr´ esenter des relations entre variables est n´ ecessaire : si l’assertion ` a prouver est relationnelle

i≤ ndans l’acc`esa[i]o`u la taillendu tableau n’est pas constante

mais ´ egalement pour ´ eviter l’accumulation des pertes de pr´ ecision mˆ eme quand l’assertion ` a prouver est non-relationnelle

Rappel : la composition d’abstractions optimales n’est pas forc´ement optimale

Les domaines relationnels sont plus coˆ uteux que les domaines non-relationnels

= ⇒ importance de trouver un compromis coˆ ut / pr´ ecision, expressivit´ e

Exemple : intervalles←α zones←α poly`edres

(7)

Domaines num´eriques relationnels Motivation

Exemple : affectations et tests relationnels

Exemple

X ← rand(0, 10);

Y ← rand(0, 10);

if X ≥ Y then X ← Y else skip;

D ← Y − X ; assert D ≥ 0

Analyse d’intervalles :

C

]

J X ≥ Y K est abstrait par l’identit´ e ;

c’est l’abstraction optimale ! siR] def= [X 7→[0,10],Y 7→[0,10]]

alors : S]JifX≥Y thenX←Yelse skipKR]=R]

D ← Y − X donne D ∈ [0, 10] −

]

[0, 10] = [−10, 10] ;

l’assertion D ≥ 0 n’est pas prouv´ ee.

(8)

Domaines num´eriques relationnels Motivation

Exemple : affectations et tests relationnels

Exemple

X ← rand(0, 10);

Y ← rand(0, 10);

if X ≥ Y then X ← Y else skip;

D ← Y − X ; assert D ≥ 0

Solution : utiliser un domaine relationnel, capable de : repr´ esenter explicitement l’information X ≤ Y

inf´ erer que X ≤ Y est vrai apr` es if X ≥ Y then X ← Y else skip

X ≤Y est vrai apr`esX←Y quandX≥Y et apr`esskipquandX<Y

utiliser X ≤ Y pour en d´ eduire que Y − X ≥ 0, donc D ≥ 0.

Note :

l’invariant recherch´e,D≥0, peut ˆetrerepr´esent´e exactement dans le domaine des intervalles mais l’inf´erenceet lapreuvedeD≥0 n´ecessitentlocalementundomaine plus expressif.

(9)

Domaines num´eriques relationnels Motivation

Invariant de boucle relationnel

Exemple I ← 1; X ← 0;

while I ≤ 1000 do I ← I + 1;

X ← X + 1 done;

assert X ≤ 1000 Analyse d’intervalles :

apr` es deux it´ erations avec ´ elargissement, nous trouvons : comme invariant de boucle : I ∈ [1, +∞] et X ∈ [0, +∞]

apr` es la boucle : I ∈ [1001, +∞] et X ∈ [0, +∞] = ⇒ assert non prouv´ e en utilisant des it´ erations d´ ecroissantes apr` es l’´ elargissement, nous avons :

comme invariant de boucle : I ∈ [1, 1001] et X ∈ [0, +∞]

apr` es la boucle : I = 1001 et X ∈ [0, +∞] = ⇒ assert non prouv´ e

le testI≤1000 raffine bienI, mais ne donne aucune information surX

sans ´ elargissement, nous avons I = 1001 et X = 1000

= ⇒ assert est prouv´ e

mais cela n´ ecessite 1000 it´ erations !

('calcul de point fixe concret)

(10)

Domaines num´eriques relationnels Motivation

Invariant de boucle relationnel

Exemple I ← 1; X ← 0;

while I ≤ 1000 do I ← I + 1;

X ← X + 1 done;

assert X ≤ 1000 Solution : domaines relationnels

inf´ erer un invariant de boucle relationnel : I = X + 1 ∧ 1 ≤ I ≤ 1001 qui repr´ esente de mani` ere compacte l’ensemble de toutes les it´ erations

I=X+ 1 est vrai avant d’entrer dans la boucle, car 1 = 0 + 1 I=X+ 1 est invariant par un tour de boucleI←I+ 1;X←X+ 1 cet invariant peut ˆetre inf´er´een deux it´erationsavec ´elargissement dans le domaine des poly`edres !

apr` es propagation du test de sortie de boucle I > 1000, nous trouvons :

I= 1001

X=I−1 = 1000 =⇒assertest prouv´e Note :

l’invariant recherch´e en fin de boucle estrepr´esentabledans les intervalles :X≤1000 mais nous avons besoin pour le trouver d’uninvariant de boucle strictement plus expressif

(11)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Domaine abstrait des poly` edres

(12)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Le domaine des poly` edres

Nous cherchons comme invariants des conjonctions d’in´ egalit´ es affines :

j

( P

n

i=1

α

ij

V

i

≥ β

j

)

o`u les coefficientsαijetβj sont inf´er´es automatiquement

Le domaine des poly` edres a ´ et´ e propos´ e par Cousot et Halbwachs en 1978.

E

]

' { poly` edres convexes clos de V → R }

Notes :

un poly` edre n’est pas n´ ecessairement born´ e ;

nous raisonnons dans R pour exploiter les r´ esultats de l’alg` ebre lin´ eaire,

sans perte d’expressivit´ e

(un sous-ensemble deZest aussi un sous-ensemble deR. . . )

.

(13)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Double description des poly` edres

Il existe deux mani` eres duales de d´ ecrire un poly` edre.

(th´eor`eme de Weyl–Minkowski)

Repr´ esentation par contraintes

Sous forme matricielle : hM, ~ Ci o` u M ∈ Q

m×n

et C ~ ∈ Q

m

repr´ esente γ(hM, ~ Ci) =

def

{ V ~ | M × V ~ ≥ C ~ }

Ou sous forme d’ensemble de contraintes { P

i

α

ij

V

i

≥ β

j

}.

(chaque contrainte est une ligne de la matrice. . . )

Repr´ esentation par g´ en´ erateurs [P, R] o` u

P ∈ Q

n×p

est un ensemble de p sommets : ~ P

1

, . . . , ~ P

p

R ∈ Q

n×r

est un ensemble de r rayons : ~ R

1

, . . . , ~ R

r

γ([P, R])

def

= { ( P

p

j=1

α

j

~ P

j

) + ( P

r

j=1

β

j

R ~

j

) | ∀j, α

j

, β

j

≥ 0: P

p

j=1

α

j

= 1 }

Note : les coordonn´ees et les coefficients sont dansQ, pour ˆetre repr´esentables en machine.

(14)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Double description des poly` edres (suite)

Exemples de repr´ esentations par g´ en´ erateurs : γ([P, R])

def

= { ( P

p

j=1

α

j

~ P

j

) + ( P

r

j=1

β

j

R ~

j

) | ∀j, α

j

, β

j

≥ 0: P

p

j=1

α

j

= 1 }

P1

P2

P3

P4 P5

P1

P2 P3

R1

R2

les sommets d´ efinissent une enveloppe convexe born´ ee ;

les rayons permettent de repr´ esenter des poly` edres non born´ es.

(15)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Double description : avantages et inconv´ enients

Avantage :

Les op´ erations abstraites sont g´ en´ eralement tr` es faciles en utilisant la bonne repr´ esentation.

(exemples : contraintes pour∩], g´en´erateurs pour∪])

= ⇒ l’algorithmique des poly` edres se r´ eduit ` a un seul algorithme complexe et coˆ uteux : le passage d’une repr´ esentation ` a l’autre.

Inconv´ enient :

Passer d’une repr´ esentation ` a l’autre peut g´ en´ erer

une explosion exponentielle de la taille de la repr´ esentation ! Exemple : un hypercube dans R

n

, avec des faces parall` eles aux axes

a 2n contraintes ;

mais 2

n

g´ en´ erateurs (les sommets de l’hypercube) ;

forme abstraite rencontr´ ee fr´ equemment en analyse de programmes !

Nous ne sommes pas libres de choisir la repr´esentation la plus compacte ; le choix de repr´esentation est dict´e par les besoins des op´erations abstraites. . .

(16)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Unicit´ e des repr´ esentations

Repr´ esentations minimales

Un syst` eme de contraintes (de g´ en´ erateurs) est minimal si aucune contrainte (g´ en´ erateur) ne peut ˆ etre omise sans changer la concr´ etisation.

Les repr´ esentations, mˆ eme minimales, ne sont pas uniques !

et deux repr´esentations minimales d’un mˆeme poly`edre n’ont pas forc´ement la mˆeme taille

Exemple : trois syst` emes de contraintes repr´ esentant un point

(a) (b) (c)

(a) y + x ≥ 0, y − x ≥ 0, y ≤ 0, y ≥ −5

non minimal

(b) y + x ≥ 0, y − x ≥ 0, y ≤ 0

minimal

(c) x ≤ 0, x ≥ 0, y ≤ 0, y ≥ 0

minimal

(17)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Borne sur les repr´ esentations des poly` edres

Il n’y a pas de borne sur la taille des repr´ esentations de poly` edres.

mˆeme sur les repr´esentations minimales

Il n’y a pas d’op´ erateur d’abstraction α ;

pas de repr´esentation optimale pour certains ensembles de points

= ⇒ il n’y a donc pas de correspondance de Galois ni de meilleure abstraction pour tout op´ erateur.

Exemple :

un disque a une infinit´e de sur-approximations par des poly`edres ;

aucune sur-approximation n’est la meilleure.

(18)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Passage de repr´ esentation : algorithme de Cherknikova ? ? ?

Algorithme de Chernikova (1968), am´ elior´ e par LeVerge (1992) :

passe d’un syst` eme de contraintes ` a un syst` eme de g´ en´ erateurs ´ equivalent ; par dualit´ e, convertit ´ egalement des g´ en´ erateurs en contraintes ;

minimise la repr´ esentation ` a la vol´ ee.

Intuition : algorithme incr´ emental

part d’une repr´ esentation en g´ en´ erateurs de R

n

; ajoute les contraintes une par une ;

filtre les g´ en´ erateurs pour ne garder que ceux qui satisfont chaque nouvelle contrainte ;

d´ eplace les autres g´ en´ erateurs jusqu’` a ce qu’ils satisfassent la contrainte.

i.e., qu’ilssaturentla contrainte

(19)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Algorithme de Cherknikova : illustration ? ? ?

Exemple : d´ eplacement de sommets et de rayons.

O P

Q

P

Pour chaque paire P, Q de sommets : si P satisfait la contrainte et Q ne satisfait pas la contrainte Q est d´ eplac´ e vers P jusqu’` a toucher l’hyper-plan supportant la contrainte

R

S

R

O

Pour chaque paire R, S de rayons :

si R satisfait la contrainte

et S ne satisfait pas la contrainte

S est tourn´ e vers R jusqu’` a ˆ etre

parall` ele ` a l’hyper-plan de la contrainte

(20)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Algorithme de Cherknikova : exemple ? ? ?

(0) (1) (2) (3)

Ajout de trois contraintes, une par une :

P

0

= {(0, 0)} R

0

= {(1, 0), (−1, 0), (0, 1), (0, −1)}

Y ≥ 1 P

1

= {(0, 1)} R

1

= {(1, 0), (−1, 0), (0, 1)}

X + Y ≥ 3 P

2

= {(2, 1)} R

2

= {(1, 0), (−1, 1), (0, 1)}

X − Y ≤ 1 P

3

= {(2, 1), (1, 2)} R

3

= {(0, 1), (1, 1)}

nous avons omis les g´en´erateurs redondants g´en´er´es par cette version na¨ıve de l’algorithme ; l’algorithme complet sait supprimer ces g´en´erateurs automatiquement

(21)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Op´ erateurs abstraits sur les poly` edres

Op´ erations ensemblistes :

Si X

]

, Y

]

6= ⊥, nous d´ efinissons :

X

]

]

Y

]

⇐⇒

def

∀ ~ P ∈ P

X]

: M

Y]

× ~ P ≥ C ~

Y]

∀ R ~ ∈ R

X]

: M

Y]

× R ~ ≥ ~ 0

chaque g´en´erateur deX]satisfait toutes les contraintes deY]

X

]

=

]

Y

]

⇐⇒

def

X

]

]

Y

]

et Y

]

]

X

]

double inclusion

X

]

]

Y

]

=

def

M

X]

M

Y]

,

C ~

X]

C ~

Y]

union des ensembles de contraintes

]

, =

]

et ∩

]

sont exacts

dansP(V→R)

(22)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Op´ erateurs abstraits sur les poly` edres (suite)

Union : X

]

]

Y

] def

= [ [P

X]

P

Y]

], [R

X]

R

Y]

] ]

union des ensembles de g´en´erateurs Exemples :

deux poly` edres born´ es un point et une ligne

]

est optimal

dansP(V→R)

:

(αn’est pas toujours d´efini, maisα(γ(X])∪γ(Y])) existe toujours)

= ⇒ clˆ oture topologique de l’enveloppe convexe de γ(X

]

) ∪ γ(Y

]

) : tous nos poly` edres sont convexes ;

la clˆ oture sert en cas de poly` edres infinis et permet une repr´ esentation avec des contraintes non-strictes

??

?

(23)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Op´ erateurs abstraits sur les poly` edres (suite)

Test affine : C

]

J

P

i

α

i

V

i

≥ β K X

]

=

def

M

X]

α

1

· · · α

n

,

~ C

X]

β

simple ajout de contrainte ; l’op´ erateur est exact ;

les autres tests peuvent ˆ etre abstraits par C

]

J c K X

]

=

def

X

]

.

(sˆur mais tr`es peu pr´ecis)

(24)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Op´ erateurs abstraits sur les poly` edres (suite)

Affectation non-d´ eterministe :

S

]

J V

j

← rand(−∞, +∞) K X

]

=

def

[ P

X]

, [ R

X]

~ x

j

(−~ x

j

) ] ]

dans le concret :

S J V

j

← rand(−∞, +∞) K R = { ρ[V

j

7→ v ] | ρ ∈ R, v ∈ R } ; dans l’abstrait :

ajout de deux rayons, dans la direction de la variable “oubli´ ee”;

cet op´ erateur est exact

dansP(V→R)

.

(25)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Op´ erateurs abstraits sur les poly` edres (suite)

Affectation affine : S

]

J V

j

← P

i

α

i

V

i

+ β K X

]

=

def

si α

j

6= 0, hM, ~ C i o` u V

j

est remplac´ e par

α1

j

(V

j

− P

i6=j

α

i

V

i

− β) si α

j

= 0, C

]

J V

j

= P

i

α

i

V

i

+ β K (S

]

J V

j

← rand(−∞, +∞) K X

]

) si α

j

6= 0, nous effectuons une substitution par l’inverse

Exemple :X←2X+Y

X est remplac´e par (X−Y)/2 dans le syst`eme de contraintes c.f., logique de Hoare

si α

j

= 0, l’affectation n’est pas inversible

Exemple :X←Y

oubli de l’ancienne valeur deX puis ajout de la contrainteX=Y

l’op´ eration est exacte

dansP(V→R)

les affectations non-affines peuvent ˆ etre mod´ elis´ ees par : S

]

J V ← e K

def

= S

]

J V ← rand(−∞, +∞) K

(sˆur mais peu pr´ecis)

(26)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Op´ erateurs abstraits sur les poly` edres (illustration)

Affectation affine : S

]

J V

j

← P

i

α

i

V

i

+ β K X

]

=

def

si α

j

6= 0, hM, ~ C i o` u V

j

est remplac´ e par

α1

j

(V

j

− P

i6=j

α

i

V

i

− β) si α

j

= 0, C

]

J V

j

= P

i

α

i

V

i

+ β K (S

]

J V

j

← rand(−∞, +∞) K X

]

) Exemples :

X ← X + Y

X ← Y

(27)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Elargissement na¨ıf sur les poly` ´ edres

E

]

a des chaˆınes infinies strictement croissantes

= ⇒ nous avons besoin d’un ´ elargissement

D´ efinition : X

]

O Y

]

=

def

{ c ∈ X

]

| Y

]

]

{c} } garde les contraintes de X

]

satisfaites par Y

]

;

contrairement ` a ∪

]

, pas de cr´ eation de nouvelle contrainte ; O r´ eduit l’ensemble des contraintes

= ⇒ la terminaison est garantie.

Exemple :

{X≥1,Y≥1,Y ≤1}O{X≥1,Y ≥1,Y≤2,X≥Y}={X≥1,Y ≥1}

(28)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Elargissements avanc´ ´ es sur les poly` edres ? ? ?

Prise en compte des contraintes de Y

]

X

]

O Y

]

=

def

{ c ∈ X

]

| Y

]

]

{c} }

∪ { c ∈ Y

]

| ∃c

0

∈ X

]

: X

]

=

]

(X

]

\ c

0

) ∪ {c} }

garde aussi les contraintes deY]´equivalentes `a des contraintes deX]; c’est un rem`ede `a l’absence d’unicit´e des repr´esentations de poly`edres

{X≥1,Y≥1,Y ≤1}O{X≥1,Y ≥1,Y≤2,X≥Y}={X≥1,X≥Y}

´ Elargissement ´ etag´ e O

T

param´ etr´ e par un ensemble fini de contraintes affines T : X

]

O

T

Y

]

=

def

{ c ∈ X

]

| Y

]

]

{c} }

∪ { c ∈ T | X

]

]

{c} ∧ Y

]

]

{c} }

ajoute les contraintes deTstables, comme pour les intervalles. . .

(29)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Exemple d’analyse avec les poly` edres

Exemple X ← 2; I ← 0;

while I < 10 do

if rand(0, 1) = 0 then X ← X + 2 else X ← X − 3;

I ← I + 1 done

Invariant de boucle :

it´ erations croissantes avec ´ elargissement :

X1] = {X= 2,I= 0}

X2] = {X= 2,I= 0}O({X= 2,I= 0} ∪]{X∈[−1,4],I= 1})

= {X= 2,I= 0}O{I∈[0,1],2−3I≤X≤2I+ 2}

= {I≥0,2−3I≤X≤2I+ 2}

it´ erations d´ ecroissantes :

pour retrouverI≤10

X3] = {X= 2,I= 0} ∪]{I∈[1,10],2−3I≤X≤2I+ 2}

= {I∈[0,10],2−3I≤X≤2I+ 2}

nous trouvons, en sortie de boucle : I = 10 ∧ X ∈ [−28, 22]

(30)

Domaines num´eriques relationnels Domaine abstrait des poly`edres

Exemple d’analyse avec les poly` edres (illustration)

Exemple X ← 2; I ← 0;

while I < 10 do

if rand(0, 1) = 0 then X ← X + 2 else X ← X − 3;

I ← I + 1 done

X#1 F#(X#1) X#2 X#3

X1] = {X= 2,I= 0}

X2] = {X= 2,I= 0}O({X= 2,I= 0} ∪]{X∈[−1,4],I= 1})

= {I≥0,2−3I≤X≤2I+ 2}

X3] = {X= 2,I= 0} ∪]{I∈[1,10],2−3I≤X≤2I+ 2}

= {I∈[0,10],2−3I≤X≤2I+ 2}

(31)

Domaines num´eriques relationnels Domaine abstrait des zones

Domaine abstrait des zones

(32)

Domaines num´eriques relationnels Domaine abstrait des zones

Le domaine des zones

Restriction des poly` edres ` a des contraintes de la forme : V V

i

− V

j

≤ c ou ± V

i

≤ c, c ∈ Q contraintes d’intervalle V

i

∈ [c, c

0

] ;

mais aussi, bornes sur les diff´ erences de variables V

i

− V

j

≤ c ;

=⇒relations utiles dans les boucles, les acc`es de tableau, etc.

un tel poly` edre est appel´ e une zone ;

les calculs sur les zones sont plus efficaces que sur les poly` edres g´ en´ eraux.

on retrouve aussi les zones dans lemodel-checkingdes automates temporis´es

(33)

Domaines num´eriques relationnels Domaine abstrait des zones

Repr´ esentation sous forme de graphe

Les contraintes V

j

− V

i

≤ c sont appel´ ees contraintes de potentiel.

(car invariantes par l’ajout d’une constante `a toutes les variables)

Graphe de potentiel : G

Repr´ esentation d’un ensemble de contraintes de potentiel par : un graphe pond´ er´ e G ;

dont les nœuds sont ´ etiquet´ es par les variables du programme V ; un arc va de V

i

` a V

j

pour chaque contrainte V

j

− V

i

≤ c ; l’arc est annot´ e avec le poids c ;

= ⇒ nous allons utiliser des algorithmes de graphe.

Contraintes d’intervalle :

Repr´ esent´ ees sous forme de contraintes de potentiel, grˆ ace ` a une variable sp´ eciale, V

0

, ´ egale ` a la constante z´ ero :

V

i

≤ c est encod´ e par V

i

− V

0

≤ c V

i

≥ c est encod´ e par V

0

− V

i

≤ −c Exemple :

V

0 4

3

!!

V

1

−1

==

V

2

nn

−1

oo

1

V

1

∈ [1, 4], V

2

∈ [1, 3], V

1

− V

2

≤ 1

(34)

Domaines num´eriques relationnels Domaine abstrait des zones

Repr´ esentation sous forme de matrice

Matrices de diff´ erences born´ ees (Difference Bound Matrices, DBM) Matrice d’adjacence m d’un graphe de potentiel G :

m est carr´ ee, de taille n × n, ` a ´ el´ ements dans Q ∪ {+∞} ; m

ij

= c < +∞ d´ enote la contrainte V

j

− V

i

≤ c ;

m

ij

= +∞ si il n’y a pas de borne sup´ erieure ` a V

j

− V

i

;

= ⇒ repr´ esentation plus compacte et plus pratique que les graphes.

Concr´ etisation :

γ(m) =

def

{ (v

1

, . . . , v

n

) ∈ R

n

| ∀i, j ∈ [0, n]: v

j

− v

i

≤ m

ij

∧ v

0

= 0 }

Exemple :

V0

V2

V1

V

0

V

1

V

2

V

0

+∞ 4 3

V

1

−1 +∞ +∞

V

2

−1 1 +∞

(35)

Domaines num´eriques relationnels Domaine abstrait des zones

Le treillis des matrices

E

]

contient les matrices DBMs, ainsi que ⊥.

L’ordre naturel ≤ sur Q ∪ {+∞} est ´ etendu point ` a point.

Si m, n 6= ⊥ :

m v n ⇐⇒

def

∀i, j : m

ij

≤ n

ij

m = n ⇐⇒

def

∀i, j : m

ij

= n

ij

[m u n]

ij

=

def

min(m

ij

, n

ij

) [m t n]

ij

=

def

max(m

ij

, n

ij

)

[>]

ij

=

def

+∞

(E

]

, v, t, u, ⊥, >) est un treillis.

Notes :

m v n = ⇒ γ(m) ⊆ γ(n), mais pas la r´ eciproque ;

m = n = ⇒ γ(m) = γ(n), mais pas la r´ eciproque.

(36)

Domaines num´eriques relationnels Domaine abstrait des zones

Forme normale et test d’inclusion

Probl` eme : comment comparer γ(m) et γ(n) ? Solution : d´ efinir une forme normale

Principe : propagation de contraintes

Ajouter deux contraintes permet de d´ eriver une nouvelle contrainte et raffiner une borne existante.

V

0

− V

1

≤ 3 V

1

− V

2

≤ −1 V

0

− V

2

≤ 4

V

0

− V

1

≤ 3 V

1

− V

2

≤ −1 V

0

− V

2

≤ 2

V

1 3

!! V

2

−1

==

4

// V

0

= ⇒

V

1 3

!! V

2

−1

==

2

// V

0

G´ en´ eralisation : clˆ oture par plus courts chemins m

m

ij

=

def

min

N hi=i1, . . . ,iN=ji

N−1

X

k=1

m

ikik+1

Bien d´efini uniquement simn’a pas de cycle avec un poids total strictement n´egatif.

(37)

Domaines num´eriques relationnels Domaine abstrait des zones

Algorithme de Floyd–Warshall

Propri´ et´ es :

γ(m) = ∅ ⇐⇒ G a un cycle de poids total strictement n´ egatif

si γ(m) 6= ∅, la clˆ oture par plus courts chemins m

est une forme normale : m

= min

v

{ n | γ(m) = γ(n) }

(chaque borne sup´erieure de contrainte est la plus stricte possible)

si γ(m), γ(n) 6= ∅, alors

γ(m) = γ(n) ⇐⇒ m

= n

γ(m) ⊆ γ(n) ⇐⇒ m

v n

Algorithme de Floyd–Warshall (

m

0ij

=

def

m

ij

m

k+1ij

=

def

min(m

kij

, m

ikk

+ m

kkj

)

algorithme classique, qui it` ere des propagations locales

si γ(m) 6= ∅, alors m

= m

n+1

(forme normale)

γ(m) = ∅ ⇐⇒ ∃i : m

n+1ii

< 0 (teste du vide)

m

n+1

peut ˆ etre calcul´ e en temps O(n

3

)

(38)

Domaines num´eriques relationnels Domaine abstrait des zones

Op´ erateurs abstraits

Union abstraite ∪

]

: version na¨ıve : t

rappel : [mtn]ij= max(mij,nij)

t est une abstraction sˆ ure de ∪,

mais γ(m t n) n’est pas forc´ ement la plus petite zone contenant γ(m) et γ(n) !

l’union de deux boˆıtes avectn’est pas plus pr´ecise dans les zones que dans les intervalles !

(39)

Domaines num´eriques relationnels Domaine abstrait des zones

Op´ erateurs abstraits (suite)

Union abstraite ∪

]

: version pr´ ecise : t apr` es clˆ oture (m

) t (n

) est par contre optimal

nous avons :

(m

) t (n

) = min

v

{ o | γ(o) ⊇ γ(m) ∪ γ(n) } ce qui implique :

γ((m

) t (n

)) = min

{ γ(o) | γ(o) ⊇ γ(m) ∪ γ(n) }

apr`es clˆoture, des contraintesc≤X−Y ≤dajout´ees permettent une union plus pr´ecise

(m

) t (n

) est toujours close.

(40)

Domaines num´eriques relationnels Domaine abstrait des zones

Op´ erateurs abstraits (suite)

Intersection abstraite ∩

]

: u

rappel : [mun]ij= min(mij,nij)

E

]

est clos par intersection

(Rappel : c’est le cas de la plus part des domaines)

u est toujours une abstraction exacte de ∩ : γ(m u n) = γ(m) ∩ γ(n)

(m

) u (n

) n’est pas forc´ ement close. . .

Note :

L’ensemble des matrices closes avec⊥, et les op´erationsv,t,λm,n.(mun)forme un sous-treillis.

γest injective dans ce sous-treillis.

(41)

Domaines num´eriques relationnels Domaine abstrait des zones

Op´ erateurs abstraits (suite)

Tests simples :

Si la contrainte peut ˆ etre repr´ esent´ ee exactement dans les zones, il suffit de l’ajouter,

en modifiant un ´ el´ ement de la matrice.

C

]

J V

j0

− V

i0

≤ c K m

ij def

=

min(m

ij

, c) si (i , j) = (i

0

, j

0

),

m

ij

sinon.

l’op´ erateur est exact ;

pour les autres tests, nous pouvons utiliser l’identit´ e :

C

]

J e

1

./ e

2

K m = m.

(42)

Domaines num´eriques relationnels Domaine abstrait des zones

Op´ erateurs abstraits (suite)

Affectations simples :

– Cas o` u la contrainte X − e peut ˆ etre repr´ esent´ ee exactement dans les zones : S

]

J V

j0

← V

i0

+ a K m

def

=

S

]

J V

j0

− V

i0

= a K (S

]

J V

j0

← rand(−∞, +∞) K m) si i

0

6= j

0

S

]

J V

j0

← V

j0

+ a K m

ij def

=

m

ij

− a si i = j

0

et j 6= j

0

m

ij

+ a si i 6= j

0

et j = j

0

m

ij

sinon.

– Cas non-d´ eterministe : oubli de contraintes S

]

J V

j0

← rand(−∞, +∞) K m

ij

=

def

+∞ si i = j

0

ou j = j

0

, m

ij

sinon.

(non optimal si l’argument n’est pas clos !)

ces op´ erations sont exactes ;

pour les autres affectations, nous pouvons utiliser le cas non-d´ eterministe :

S

]

J X ← e K m = S

]

J X ← rand(−∞, +∞) K m

(43)

Domaines num´eriques relationnels Domaine abstrait des zones

Elargissement ´

Le domaine des zones a des chaˆınes infinies strictement croissantes

= ⇒ un ´ elargissement O est n´ ecessaire.

´ Elargissement O [m O n]

ij

=

def

m

ij

si n

ij

≤ m

ij

+∞ sinon

Comme pour les intervalles, les bornes non stables sont supprim´ ees.

It´ erations avanc´ ees

???

:

Les am´ eliorations connues des intervalles s’appliquent ´ egalement :

´

elargissement ` a ´ etages [m O

T

n]

ij def

=

m

ij

si n

ij

≤ m

ij

min { t ∈ T | t ≥ n

ij

} sinon it´ erations d´ ecroissantes avec r´ etr´ ecissement M [m M n]

ij

=

def

n

ij

si m

ij

= +∞

m

ij

sinon

(44)

Domaines num´eriques relationnels Domaine abstrait des zones

Autres domaines faiblement relationnels

Domaine faiblement relationnel = restriction des poly` edres.

compromis entre coˆut et pr´ecision

De nombreux domaines ont ´ et´ e propos´ es.

Domaines bas´ es sur une clˆ oture Octogones : ±X ± Y ≤ c

extension des zones par sym´etriex/−x

bas´ee sur une adaptation l´eg`ere de l’algorithme de Floyd-Warshall

Deux variables par in´ egalit´ e : αx + βy ≤ c

algorithme de clˆoture de Nelson

Octa` edres : P

α

i

V

i

≤ c, α

i

∈ { −1, 0, 1 }

propagation incompl`ete, pour ´eviter un coˆut exponentiel

Pentagones : X − Y ≤ 0

propagation incompl`ete, pour atteindre un coˆut lin´eaire

Domaines bas´ es sur la programmation lin´ eaire :

Template : M × V ~ ≥ ~ C en fixant la matrice M

(45)

Domaines num´eriques relationnels Domaine abstrait des zones

Domaines num´ eriques : r´ esum´ e

Coˆ ut et pr´ ecision :

domaine invariants coˆ ut m´ emoire coˆ ut en temps

par op´eration

intervalles V ∈ [`, h] O(| V |) O(| V |) poly` edres P

i

α

i

V

i

≥ β

i

non born´ e, exponentiel en pratique zones V

i

− V

j

≤ c O(| V |

2

) O(| V |

3

)

diff´ erents domaines offrent diff´ erents compromis entre coˆ ut et pr´ ecision, entre coˆ ut et expressivit´ e des invariants relationnels sont parfois n´ ecessaires

mˆeme pour prouver des propri´et´es non-relationnelles

un domaine abstrait est d´ efini par :

le choix de propri´ et´ es abstraites et d’op´ erateurs

aspect s´emantique

des structures de donn´ ees et des algorithmes

aspect algorithmique

une analyse mˆ ele deux sortes d’approximations :

des approximations statiques

choix des propri´et´es abstraites

des approximations dynamiques

´elargissement

(46)

Implantation : utilisation de la biblioth`eque Apron

Implantation : utilisation de la biblioth` eque

Apron

(47)

Implantation : utilisation de la biblioth`eque Apron

Biblioth` eque Apron

Underlying libraries & abstract domains box

intervals

octagons

octagons

NewPolka

convex polyhedra

linear equalities

PPL +Wrapper

convex polyhedra

bbb bbb

linear congruences

Abstraction toolbox – scalar & interval arithmetic – linearization of expressions – fall-back implementations

Data-types Coefficients Expressions Constraints Generators Abs. values

Semantics:A→γ ℘(Zn×Rm) dimensionsandspace dimensionality VariablesandEnvironments Semantics:A→γ ℘(V →Z⊎R)

Developer interface

User interface C API

OCaml binding C++ binding http://apron.cri.ensmp.fr/library

opam install apron

(48)

Implantation : utilisation de la biblioth`eque Apron

Modules de la biblioth` eque Apron

Le module Apron contient des sous-modules, dont les plus utiles sont : Abstract1

´el´ements abstraits

Manager

instances de domaine abstrait (pass´e en argument `a toutes les fonctions d’Abstract1)

Polka

fabrique d’objetsManager.tpour la cr´eation d’´el´ements abstraits poly`edres

Var

variable enti`ere ou r´eelle (d´enot´ee par une chaˆıne de caract`eres)

Environment

ensemble de variables enti`eres et r´eelles

Texpr1

arbre d’expression arithm´etique

Tcons1

expression bool´eenne simple (bas´ee surTexpr1)

Coeff

coefficient num´erique (utilis´e dansTexpr1,Tcons1)

(49)

Implantation : utilisation de la biblioth`eque Apron

Variables et environnements

Variables :

type Var.t

les variables sont identifi´ ees par leur nom

(chaˆıne de caract`eres)

:

on suppose donc que les variables du programme ont des noms distincts

Var.of_string:string -> Var.t

Environnements :

type Environment.t

un ´ el´ ement abstrait repr´ esente un ensemble d’environnements V → R ; V est l’environnement, contenant des variables ` a valeur enti` ere et des variables

` a valeur r´ eelle

Environment.make:Var.t array -> Var.t array -> t

make ivars rvarscr´ee un environnement avec les variables enti`eresivarset les variables r´eellesrvars;

make [||] [||]est l’environnement vide

Environment.add:Environment.t -> Var.t array -> Var.t array -> t add env ivars rvarsajoute des variables enti`eres et r´eelles `aenv Environment.remove:t -> Var.t array -> t

remove env varsenl`eve des variables (enti`eres ou r´eelles) deenv en interne, un ´el´ement abstrait repr´esente un ensemble de points dansRn; l’environnement garde une association entre nom de variable et dimension dans [1,n]

(50)

Implantation : utilisation de la biblioth`eque Apron

Expressions

Arbres concrets d’expression :

type Texpr1.expr

typeexpr = |Cst of Coeff.t constantes

|Var of Var.t variables

|Unop of unop * expr* typ * round op´erations unaires

|Binop of binop *expr* expr* typ * round op´erations binaires

op´ erateurs unaires :

type Texpr1.unop= Neg|· · ·

op´ erateurs binaires :

type Texpr1.binop=Add|Sub |Mul|Div|· · ·

types num´ eriques :

nous utilisons ici uniquement les entiers, mais Apron dispose aussi de types r´eels et flottants type Texpr1.typ=Int|· · ·

arrondi :

utile seulement lors de la division d’entiers ; nous utilisons l’arrondi vers z´ero, i.e., la troncature

type Texpr1.round=Zero |· · ·

(51)

Implantation : utilisation de la biblioth`eque Apron

Expressions (suite)

Forme d’expression interne ` a la biblioth` eque :

typeTexpr1.t

les arbres concrets d’expression doivent ˆ etre convertis dans une forme interne avant d’ˆ etre accept´ es par les op´ erations abstraites

Texpr1.of_expr:Environment.t -> Texpr1.expr -> Texpr1.t

l’environnement est n´ecessaire pour convertir les noms de variables en dimensions dansRn

Coefficients :

typeCoeff.t

peuvent ˆ etre des scalaires {c} ou des intervalles [a, b]

le module

Mpqf

permet la conversion de chaˆınes en entiers de pr´ ecision arbitraire, avant de les convertir vers

Coeff.t

:

pour un scalaire {c} :

Coeff.s_of_mpqf(Mpqf.of_string c)

pour un intervalle [a, b] :

Coeff.i_of_mpqf(Mpqf.of_string a) (Mpqf.of_string b)

(52)

Implantation : utilisation de la biblioth`eque Apron

Expressions bool´ eennes, contraintes num´ eriques

Contraintes :

type Tcons1.t

constructeur pour une contrainte expr ./ 0 :

Tcons1.make:Texpr1.t -> TCons1.typ -> Tcons1.t

o` u :

type Tcons1.typ= SUPEQ | SUP | EQ | DISEQ | · · ·

≥ > = 6=

Note : ´evitez d’utiliserDISEQ, qui est peu pr´ecis ;

utilisez `a la place une disjonction de deux contraintesSUP

Tableau de contraintes :

type Tcons1.earray

les op´ erateurs abstraits n’utilisent pas des contraintes, mais plutˆ ot des tableaux de contraintes

(pour ˆetre plus efficace)

Exemple : construction d’un tableau

ar

r´ eduit ` a une seule contrainte :

letc= Tcons1.make texpr1 typ in letar = Tcons1.array_makeenv 1 in Tcons1.array_setar 0 c

(53)

Implantation : utilisation de la biblioth`eque Apron

Op´ erateurs abstraits

´ El´ ements abstraits :

type Abstract1.t Abstract1.top:Manager.t -> Environment.t -> t cr´ee un ´el´ement abstrait o`u les variables sont non initialis´ees (elles ont toutes les valeurs possibles)

Abstract1.env:t -> Environment.t

retrouve l’environnement (ensemble de variables) associ´e `a un ´el´ement abstrait Abstract1.change_environment:Manager.t -> t ->

Environment.t -> bool -> t

modifie l’environnement d’un ´el´ement abstrait, en ajoutant ou en enlevant des variables si n´ecessaire ; le param`etrebooldoit ˆetre mis `afalsepour pr´eciser que les variables

´eventuellement ajout´ees ne sont pas initialis´ees

Abstract1.assign_texpr:Manager.t -> t -> Var.t -> Texpr1.t ->

t option -> t

affectation abstraite : l’argumentoptiondoit ˆetre mis `aNone

Abstract1.forget_array:Manager.t -> t -> Var.t array -> bool -> t affectation non-d´eterministe : oublie la valeur des variables indiqu´ees (siboolestfalse) Abstract1.meet_tcons_array:Manager.t -> t -> Tcons1.earray -> t

test abstrait : ajoute une ou plusieurs contraintes

(54)

Implantation : utilisation de la biblioth`eque Apron

Op´ erateurs abstraits (suite)

Abstract1.join:Manager.t -> t -> t -> t union abstraite∪]

Abstract1.meet:Manager.t -> t -> t -> t intersection abstraite∩]

Abstract1.widen:Manager.t -> t -> t -> t

´elargissementO

Abstract1.is_leq:Manager.t -> t -> t -> bool

]: renvoietruesi le premier argument est inclus dans le second Abstract1.is_bottom:Manager.t -> t -> t bool

renvoietruesi l’´el´ement abstrait repr´esente∅

Abstract1.print:Format.formatter -> t -> unit affiche l’´el´ement abstrait

Contrat :

les op´erateurs retournent un nouvel ´el´ement abstrait immuable(style fonctionnel) les op´erateurs peuvent retourner une sur-approximation

(pas toujours optimal, par exemple pour les expressions non-lin´eaires) les pr´edicats retournenttrue(propri´et´e satisfaite)oufalse(“ne sait pas”)

(55)

Implantation : utilisation de la biblioth`eque Apron

Managers

Managers :

typeManager.t

Un manager repr´ esente un choix de domaine abstrait

Pour utiliser les poly` edres, le manager peut ˆ etre cr´ e´ e par la commande :

let manager= Polka.manager_alloc_loose()

le mˆeme objetmanagersera ensuite pass´e en argument `a toutes les fonctions deAbstract1 pour s´electionner un autre domaine, il suffit de changer la ligne qui d´efinit la variablemanager Autres choix possibles :

Polka.manager_alloc_equalities ´egalit´es affines

Polka.manager_alloc_strict in´egalit´es affines larges (≥) et strictes (>)

Box.manager_alloc intervalles

Oct.manager_alloc octogones

(56)

Implantation : utilisation de la biblioth`eque Apron

Erreurs

Compatibilit´ e des arguments : il faut s’assurer que : le mˆ eme manager est utilis´ e pour cr´ eer

et pour utiliser un ´ el´ ement abstrait

le syst`eme de types v´erifie la compatibilit´e entre’aManager.tet’aAbstract1.t

les expressions et les ´ el´ ements abstraits portent sur le mˆ eme environnement

les variables destination d’une affectation existent bien dans l’environnement de l’´ el´ ement abstrait

les deux ´ el´ ements abstraits arguments d’une op´ eration binaire (∪, ∩, O , ⊆) sont d´ efinis sur le mˆ eme environnement

sinon, une exception Manager.Error sera signal´ ee. . .

(57)

Implantation : utilisation de la biblioth`eque Apron

Squelette de domaine abstrait utilisant Apron

open Apron

module RelationalDomain= (struct (* manager *)

type man = Polka.loose Polka.t

let manager = Polka.manager_alloc_loose () (* ´el´ements abstraits *)

type t = man Abstract1.t (* utilitaires *)

val expr_to_texpr: int_expr -> Texpr1.expr (* implantation *)

· · · end: DOMAIN)

(58)

Implantation : utilisation de la biblioth`eque Apron

Dernier recours dans les affectations et les tests

let rec expr_to_texpr = function

| AST_int_binary (op, e1, e2) ->

match op with

| AST_PLUS -> Texpr1.Binop · · ·

|· · ·

| _ -> raise Top

let assign env var expr = try

let e = expr_to_texpr expr in Abstract1.assign_texpr· · ·

withTop -> Abstract1.forget_array· · ·

let compareabs e1 e2 = try

· · ·

Abstract1.meet_tcons_array · · · withTop ->abs

Principe :

signaler une exception Top pour interrompre le calcul ;

la r´ ecup´ erer pour traiter l’affectation ou le test de mani` ere sˆ ur

en consid´ erant le pire des cas

(expression non-d´eterministe)

Références

Documents relatifs

´ El´ ements de th´ eorie de l’ordre Ordres partiels.

L’ajout d’une analyse non-relationnelle n´ ecessite uniquement l’ajout d’un nouveau domaine de valeurs, de signature VALUE_DOMAIN :. = ⇒ plus simple que d’ajouter un

principe des it´ erations avec acc´ el´ eration de convergence ; application ` a l’analyse d’intervalles.. = ⇒ nous obtenons un

UNIVERSITE PARIS-DAUPHINE DUMI2E 1`ere ann´ee, 30 octobre 2006 Contrˆ ole continu d’alg` ebre..

— Soit (f n ) n une suite croissante de fonc- tions r´ eelles continues sur [a, b] qui converge vers une fonction f continue sur [a, b].. Alors la convergence

L’´egalit´e est cependant vraie si f est une fonction strictement monotone (c’est le th´eor`eme de la bijection, que l’on verra plus loin).. Voici un cas particulier du

Montrer que les fonctions trigonom´etriques sin et cos sont d´erivables (et calculer leurs d´eriv´ees) n’est pas.. ´evident, et d´epend des d´efinitions que l’on donne pour

On interroge n personnes choisies au hasard dans la population des inscrits qui ont l’intention de voter oui ou non ` a un prochain r´ ef´ erendum et qui acceptent de r´ epondre