• Aucun résultat trouvé

Analyse de boucles TAS : Typage et analyse statique M2, Master STL INSTA, Sorbonne Universit´e Antoine Min´e

N/A
N/A
Protected

Academic year: 2022

Partager "Analyse de boucles TAS : Typage et analyse statique M2, Master STL INSTA, Sorbonne Universit´e Antoine Min´e"

Copied!
37
0
0

Texte intégral

(1)

Analyse de boucles

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

Antoine Min´e

Ann´ee 2018–2019

Cours 10 7 mars 2019

Cours 10 Analyse de boucles Antoine Min´e p. 1 / 37

(2)

Plan du cours

Suite des s´emantiques abstraites,

avec application `a l’analyse num´erique non-relationnelle.

analyse desboucles:

principe des it´erations avecacc´el´eration de convergence; application `a l’analyse d’intervalles.

=⇒ nous obtenons un analyseur effectif

pour des propri´et´es num´eriques non-triviales ! conseils d’implantation pour le projet.

Cours 10 Analyse de boucles Antoine Min´e p. 2 / 37

(3)

Analyse de boucles

Analyse de boucles

Cours 10 Analyse de boucles Antoine Min´e p. 3 / 37

(4)

Analyse de boucles Boucles et invariants

Boucles et invariants

Cours 10 Analyse de boucles Antoine Min´e p. 4 / 37

(5)

Analyse de boucles Boucles et invariants

Rappel : s´ emantique concr` ete des boucles

Calcul de : SJwhilecdosKR SJwhilecdosKR= CJ¬cKI

o`uI est uninvariant de boucle inductif, l’ensemble des environnements accessibles

`

a chaque it´eration de la boucle, au point :while•cdos.

I est la plus petite solution de l’´equation : I =F(I)o`uF(X) =R∪SJsK(CJcKX).

Justification :

R⊆I cas de la premi`ere it´eration de la boucle

SJsK(CJcKI)⊆I stabilit´e par une it´eration de boucle

I minimal. meilleur invariant

Preuve d’existence :

F est croissante dans le treillis complet (P(E),⊆,∅,E,∪,∩)

=⇒ F a unplus petit point fixe lfpF =def min{I|F(I) =I} de plus : lfpF = min{I|F(I)⊆I} (plus petit post point fixe) c’est le Th´eor`eme de Tarksi

Cours 10 Analyse de boucles Antoine Min´e p. 5 / 37

(6)

Analyse de boucles Boucles et invariants

Rappel : interpr´ etation par it´ eration

I = lfpF o`uF(X) =R∪SJsK(CJcKX) orF est continue dans le CPO (P(E),⊆,∪)

=⇒nous pouvons aussi appliquer leth´eor`eme de Kleene: lfpF=∪n∈NFn(∅)

I est la limite d’une s´equence d’it´erations(la s´equence peut ˆetre infinie). Intuition :

F0(∅) =∅ F1(∅) =R

environnements avant d’entrer dans la boucle F2(∅) =R∪SJsK(CJcKR)

environnements apr`es z´ero ou une it´eration de boucle

Fn(∅) : environnements apr`es au plusn−1 it´erations de la boucle

juste avant de tester la condition de sortie,

pour d´eterminer si unen−i`eme it´eration est n´ecessaire

n∈NFn(∅) est bien l’invariant de boucle

=⇒m´ethode constructive de calcul du meilleur invariant.

Cours 10 Analyse de boucles Antoine Min´e p. 6 / 37

(7)

Analyse de boucles Boucles et invariants

Exemple d’it´ eration concr` ete

V ←0;

whileV <10do V ←V + 2 done

SJwhileV <10doV ←V + 2KR= CJV ≥10K(∪n∈NFn(∅)) o`uF(S) =def {0} ∪ {V + 2|V ∈S∧V <10} :

n Fn(∅) 0 ∅ 1 {0}

2 {0,2}

3 {0,2,4}

4 {0,2,4,6}

5 {0,2,4,6,8}

6 {0,2,4,6,8,10}

7 {0,2,4,6,8,10}

siFn(∅) =Fn+1(∅) alors∀in:Fj(∅) =Fn(∅)

Nous trouvons donc :

n∈NFn(∅) ={0,2,4,6,8,10}= lfpF puis SJwhileV <10doV ←V + 2KR={10}

Note : pour simplifier les notations, nous avons assimil´eP({V} →Z) `aP(Z).

Cours 10 Analyse de boucles Antoine Min´e p. 7 / 37

(8)

Analyse de boucles Boucles et invariants

It´ eration dans le domaine des intervalles

V ←0;

whileV <10do V ←V + 2 done

Principe :

remplacer ∪n∈NFn(∅)

o`uF(X) =R∪SJsK(CJcKX) par∪n∈NF]n( ˙⊥)

o`uF](X]) =R]]S]JsK(C]JcKX])

en assimilantV→ D]`a un intervalle dansD], nous avons : C]JV<10K[a,b] = [a,min(9,b)]

S]JVV+ 2K[a,b] = [a+ 2,b+ 2]

n F]n( ˙⊥)

0 ⊥

1 [0,0]

2 [0,2]

3 [0,4]

4 [0,6]

5 [0,8]

6 [0,10]

7 [0,10]

Dans cet exemple :

le r´esultat, [0,10], est correct mais approximatif ; le r´esultat est optimal pour les intervalles ; les it´er´es convergent en temps fini.

=⇒est-ce toujours le cas ?

Cours 10 Analyse de boucles Antoine Min´e p. 8 / 37

(9)

Analyse de boucles Boucles et invariants

It´ eration abstraite : justification et limitation

Correctionpour tout domaine abstraitE] SiF]est uneabstraction sˆurede F

alors∪]n∈NF]n( ˙⊥) est uneabstraction sˆurede ∪n∈NFn(∅), i.e. :

n∈NFn(∅)⊆γ(∪]n∈

NF]n( ˙⊥)) Justification : par r´ecurrence

∅ ⊆γ( ˙⊥) ;

siFn(∅)⊆γ(F]n( ˙⊥)), alors

F(Fn(∅)) ⊆ F(γ(F]n( ˙⊥))) (carFest croissante)

⊆ γ(F](F]n( ˙⊥))) (carF]est une abstraction sˆure deF)

donc∀n:Fn(∅)⊆γ(F]n( ˙⊥)), et donc∪n∈NFn(∅)⊆ ∪n∈Nγ(F]n( ˙⊥)) si∪]est une abstraction sˆure de∪, alors de plus :

n∈NFn(∅)⊆ ∪n∈Nγ(F]n(∅))⊆γ(∪]n∈

NF]n(∅)) Limitation :

Utiliser ce r´esultat suppose que∪]n∈

NF]n( ˙⊥) existe dansE]; ce n’est pas toujours le cas(certains domaines abstraits ne sont pas des CPOs)

=⇒nous verrons plus loin une preuve de correction plus puissante. . .

Cours 10 Analyse de boucles Antoine Min´e p. 9 / 37

(10)

Analyse de boucles Boucles et invariants

Non-terminaison de l’it´ eration de s´ emantique concr` ete

U←0;V ←0;

while rand(0,1) = 0do ifU<10thenU←U+ 1 elseV ←V+ 1

done

n Fn(∅)∈ P({U,V} →Z)

0 ∅

1 {(0,0)}

2 {(0,0),(1,0)}

. . .

11 {(0,0),(1,0), . . . ,(9,0),(10,0)}

12 {(0,0),(1,0), . . . ,(0,0),(10,0),(10,1)}

13 {(0,0),(1,0), . . . ,(0,0),(10,0),(10,1),(10,2)}

. . .

n∈NFn(∅) ={(x,0)|x ∈[0,10]} ∪ {(10,y)|y∈N} La limite existe, mais est l’union d’un nombreinfinid’it´er´es !

Cours 10 Analyse de boucles Antoine Min´e p. 10 / 37

(11)

Analyse de boucles Boucles et invariants

Non-terminaison de l’it´ eration dans les intervalles

U←0;V ←0;

while rand(0,1) = 0do ifU<10thenU←U+ 1 elseV ←V+ 1

done n F]n( ˙⊥)∈ {U,V} → D] 0 (⊥,⊥)

1 ([0,0],[0,0]) 2 ([0,1],[0,0])

. . .

11 ([0,10],[0,0]) 12 ([0,10],[0,1]) 13 ([0,10],[0,2])

. . .

Analyse dans le domaine des intervalles :

]n∈

NF]n( ˙⊥) =([0,10],[0,+∞]) La limite abstraite existe,

mais est l’union d’un nombre infinid’it´er´es

=⇒ ∪]n∈

NF]n( ˙⊥) n’estpas calculable.

Cours 10 Analyse de boucles Antoine Min´e p. 11 / 37

(12)

Analyse de boucles Boucles et invariants

Terminaison de l’it´ eration dans un domaine de hauteur finie

U←0;V ←0;

while rand(0,1) = 0do ifU<10thenU←U+ 1 elseV ←V+ 1

done n F]n( ˙⊥)∈ {U,V} → D] 0 (⊥,⊥)

1 (0,0) 2 (≥0,0) 3 (≥0,≥0) 4 (≥0,≥0)

]n∈

NF]n( ˙⊥) =(≥0,≥0)

Analyse dans le domaine des signes :

Le domaine a une hauteur finie : pas de chaˆıne croissante infinie.

Toutes les it´erations croissantes convergent en temps fini ;

=⇒l’analyse esttoujours calculable dans un domaine de hauteur finie.

Cours 10 Analyse de boucles Antoine Min´e p. 12 / 37

(13)

Analyse de boucles Acc´el´eration de convergence

Acc´ el´ eration de convergence

Cours 10 Analyse de boucles Antoine Min´e p. 13 / 37

(14)

Analyse de boucles Acc´el´eration de convergence

Intuition : acc´ el´ eration de convergence

V ←10;

whileV ≤100do V ←V + 2 done

Principe : relˆacher les bornes non stables`a l’infini Sans acc´el´eration :

n F]n( ˙⊥)

0 ⊥

1 [10,10]

2 [10,12]

3 [10,14]

. . . . 47 [10,102]

48 [10,102]

Avec acc´el´eration : n F]n( ˙⊥)

0 ⊥

1 [10,10]

2 [10,∞]

3 [10,∞]

rappel :F](X]) =R]]S]JsK(C]JcKX])

=⇒convergence vers un r´esultat moins pr´ecis, mais plus rapidement !

Cours 10 Analyse de boucles Antoine Min´e p. 14 / 37

(15)

Analyse de boucles Acc´el´eration de convergence

Op´ erateur d’´ elargissement

Acc´el´erer la convergence parextrapolation entre it´er´es successifs.

´Elargissement :O: (E]× E])→ E] widening

op´erateur binaireX]OY]∈ E]; sur-approximation de l’union :

γ(X])∪γ(Y])⊆γ(X]OY]) pour toutes´equenceY0],Y1], . . . ,Yn], . . .

la s´equence













X0]=Y0] X1]=X0]OY1] . . .

Xn]=Xn−1] OYn] . . .

converge en temps fini :∃N:∀n≥N:Xn]=XN].

Cours 10 Analyse de boucles Antoine Min´e p. 15 / 37

(16)

Analyse de boucles Acc´el´eration de convergence

Elargissement standard dans les intervalles ´

´Elargissement d’intervalles : O: (D]× D])→ D]

∀I ∈ D]:⊥OI =I O⊥=I [a,b]O[c,d] =def

" (

a sia≤c

−∞ sic<a,

(b sib≥d +∞ sid>b

#

une borne inf´erieure non stable est mise `a−∞; une borne sup´erieure non stable est mise `a +∞;

une fois `a−∞ou +∞, les bornes sont n´ecessairement stables !

´Elargissement point `a point surE]: O˙ : (E]× E])→ E] Dans le cas de plusieurs variablesE] =def V→ D],

chaque variable est extrapol´ee de mani`ere ind´ependante: X]O˙ Y] =def λV ∈V.X](V)OY](V)

Cours 10 Analyse de boucles Antoine Min´e p. 16 / 37

(17)

Analyse de boucles Acc´el´eration de convergence

Application : it´ eration avec ´ elargissement

Limite concr`ete :

Nous pouvons interpr´eter∪n∈NFn(∅) comme la limite de la s´equence : ( X0 =def

Xn+1

=def Xn∪F(Xn)

Limite abstraite :

Dans l’abstrait, nous calculons : ( X0] =def ⊥˙

Xn+1] =def Xn]OF](Xn]) jusqu’`a avoir Xn+1] =Xn].

Cours 10 Analyse de boucles Antoine Min´e p. 17 / 37

(18)

Analyse de boucles Acc´el´eration de convergence

Correction et terminaison

( X0] =def ⊥˙

Xn+1] =def Xn]OF](Xn]) Terminaison : ∃N:XN+1] =XN]

Preuve : par l’absurde

Sinon,X0],X1],. . .,Xn],. . .serait une s´equence infinie

de la formeX0]=Y0],Xn+1] =Xn]OYn+1] , o`uY0]= ˙⊥,Yn+1] =F](Xn]).

Ceci serait contraire `a la d´efinition deO.

Correction : lfpF ⊆γ(XN])

Preuve :

Par le th´eor`eme de Tarski, lfpF= min{I|F(I)I}.

Il suffit donc de prouver queγ(XN]) est un post point fixe deF: F(γ(XN])) γ(F](XN])) (sˆuret´e deF])

γ(XN])γ(F](XN]))

γ(XN]OF](XN])) (sˆuret´e deO)

= γ(XN+1] ) (d´efinition deXN]

1)

= γ(XN]) (carXN+1] =XN])

Note : la preuve ne suppose pas l’existence de∪]n∈NF]n( ˙⊥) !

Cours 10 Analyse de boucles Antoine Min´e p. 18 / 37

(19)

Analyse de boucles Acc´el´eration de convergence

Exemple d’it´ eration avec ´ elargissement

U←0;V ←0;

while rand(0,1) = 0do ifU<10thenU←U+ 1 elseV ←V+ 1

done

n X0]= ˙⊥, Xn+1] =Xn]OF(Xn])

0 (⊥,⊥)

1 (⊥,⊥) O ([0,0],[0,0]) = ([0,0],[0,0]) 2 ([0,0],[0,0]) O ([0,1],[0,0]) = ([0,+∞],[0,0]) 3 ([0,+∞],[0,0]) O ([0,+∞],[0,1]) = ([0,+∞],[0,+∞]) 4 ([0,+∞],[0,+∞]) O ([0,+∞],[0,+∞]) = ([0,+∞],[0,+∞]) Convergence en au plus 2|V|it´erations(nombre de bornes `a stabiliser).

Cours 10 Analyse de boucles Antoine Min´e p. 19 / 37

(20)

Analyse de boucles Acc´el´eration de convergence

Boucles imbriqu´ ees

U ←0;V ←0;

while•U<100do

while•V <U doV ←V + 1done;

U ←U+ 1;V ←0 done

`

a•: n= 0,; (⊥,⊥) n= 1, ([0,0],[0,0]) n= 2, ([0,+∞],[0,0]) a•:

n

0 (⊥,⊥) n

0 (⊥,⊥) 1 ([0,0],[0,0])

n

0 (⊥,⊥)

1 ([0,+∞],[0,0]) 2 ([0,+∞],[0,+∞]) La s´emantique concr`ete des boucles imbriqu´ees est form´ee

de point fixes imbriqu´es.

La s´emantique abstraite g´en`ere des it´erations imbriqu´ees.

Pour chaque it´eration avec Ode la boucle externe, une s´equence compl`ete d’it´eration avec Ode la boucle interne est calcul´ee !

Cours 10 Analyse de boucles Antoine Min´e p. 20 / 37

(21)

Analyse de boucles Acc´el´eration de convergence

Raisonnement inductif et ´ elargissement : intuition

???

pre post pre

lfp

gfp fp

Invariant inductifs :

lfpF est le plus petitinvariant; lfpF ⊆I =⇒I est uninvariant; F(I)⊆I =⇒I est uninvariant inductif

=⇒I est aussi uninvariant(Tarksi); F](I])vI]=⇒I]est uninvariant inductif prouvable dans l’abstrait.

G´en´eralit´es sur le raisonnement inductif :

induction = g´en´eralisation `a partir d’un petit ensemble d’observations ; e.g., si la borne sup´erieure croˆıt, elle est probablement non-born´ee ; processus cognitif important !

6=induction en math´ematiques, qui estd´eductivepar nature

(application d’un axiome d’induction)

en logique philosophique, le raisonnement inductif n’est pas fiable

(puisqu’il g´en´eralise `a partir d’un nombre fini d’exemples)

mais, en interpr´etation abstraite, l’´elargissementOeffectue un raisonnement inductif toujours sˆur !

Cours 10 Analyse de boucles Antoine Min´e p. 21 / 37

(22)

Analyse de boucles It´erations avanc´ees

It´ erations avanc´ ees

Cours 10 Analyse de boucles Antoine Min´e p. 22 / 37

(23)

Analyse de boucles It´erations avanc´ees

Principe

L’utilisation d’un ´elargissementOpermet d’obtenir une it´eration : qui termine toujours ;

avec un nombre d’it´erations ind´ependant des constates du programme ;

(e.g., l’analyse dewhileN<100doVV+ 1donene d´epend pas du choix de 100)

mais qui est souvent impr´ecise.

De nombreux travaux visent `a am´eliorer la pr´ecision du calcul.

Quelques id´ees d’am´elioration :

d´efinir un op´erateurOplus pr´ecis : appliquerOmoins souvent ;

faire une analyse par cas pour certaines it´erations de la boucle ; raffiner le r´esultata posteriori.

Cours 10 Analyse de boucles Antoine Min´e p. 23 / 37

(24)

Analyse de boucles It´erations avanc´ees

Comparaison des signes et des intervalles : exemple

V ←100;

while•V >0do V ←V−1 done

n signes intervalles

0 ⊥ ⊥

1 >0 [100,100]

2 ≥0 [−∞,100]

Comparaison de l’analyse :

dans les signes stricts, sans ´elargissement ;

nous utilisons des signes am´elior´es, avec signes stricts :{⊥,0, >0, <0,≥0,0,>}

dans les intervalles, avec ´elargissement.

Le domaine des intervalles eststrictement plus expressif; pourtant, l’analyse d’intervallesne trouve pasV ≥0, qui est trouv´e par une analyse designe!

Explication :

la borne inf´erieure, non stable, est ´elargie `a−∞, pourtant, la borne 0, non test´ee, est bien stable !

Cours 10 Analyse de boucles Antoine Min´e p. 24 / 37

(25)

Analyse de boucles It´erations avanc´ees

Solution : ´ elargissement avec ´ etages

V ←100;

while•V >0do V ←V−1 done

Analyse avec ´elargissement ´etag´eO{0}

n intervalles

0 ⊥

1 [100,100]

2 [0,100]

Solution :´elargissement avec ´etagesOT, plus pr´ecis.

´Etant donn´e un ensembleT ⊆Zfini, contenant−∞, +∞: [a,b]OT[c,d] def=

" (

a sia≤c

max{t∈T|t≤c} sic<a,

(b sib≥d

min{t∈T|t≥d} d>b

#

teste si les valeurs deT sont des bornes stables ;

(dans notre exemple, on trouve [max{cT|c0},100])

termine toujours, carT est fini(au pire, on obtient−∞ou +∞).

Cours 10 Analyse de boucles Antoine Min´e p. 25 / 37

(26)

Analyse de boucles It´erations avanc´ees

Choix des ´ etages

Comment choisirT?

0∈T permet d’ˆetre au moins aussi pr´ecis que les signes ; inclure les constantes apparaissant dans le programme ; inclure les tailles de tableau (±1) ;

(utile pour v´erifier les d´epassements de tableau)

utiliser une s´equence g´eom´etrique :T ={ ±2i|i∈[0,31]} ∪ {±∞}.

(pour prouver l’absence de d´epassement de capacit´e, il suffit queTsoit suffisamment dense)

Note :??? points fixes stables et instables

Que se passe-t-il siTne contient pas exactement la borne la plus pr´ecise ?

V 100;

while rand(0,1) = 0do VV1;

ifV<0thenV0 done

Casstable.

[t,100] est un point fixepour toutt0.

Il suffit d’avoir−∞ 6=t0 fini dansTpour trouver une bornetfinie.

L’optimal n’est atteint que si 0T.

V100;

while rand(0,1) = 0do VV1;

ifV =−1thenV0 done

Casinstable.

[t,100] est un point fixe uniquement pourx= 0.

If faut avoir 0Tpour trouver une borne finie, sinon, on trouve toujours [−∞,100].

Cours 10 Analyse de boucles Antoine Min´e p. 26 / 37

(27)

Analyse de boucles It´erations avanc´ees

Elargissement retard´ ´ e

V ←0;

while rand(0,1) = 0do ifV = 0thenV ←1;

· · · done

V n’est incr´ement´e qu’une seule fois, de 0 `a 1.

Probl`eme :

Otrouvera V non stable, et le placera `a [0,+∞] =⇒perte de pr´ecision

(en effet, [0,0]O[0,1] = [0,+∞])

Solution : retarderl’´elargissement d’une (ou plusieurs) it´eration(s) : Xn+1

=def

(F](Xn]) sin<N Xn]OF](Xn]) sin≥N

(rappel :F](X]) =R]]S]JsK(C]JcKX]))

(dans notre exemple, avecN= 1,X1]= [0,0]][1,1] = [0,1],X2]= [0,1]O[0,1] = [0,1] =X1])

Il est n´ecessaire de reprendre les it´erations avec Oapr`es un nombre fini d’it´erations pour assurer la convergence en temps fini !

Cours 10 Analyse de boucles Antoine Min´e p. 27 / 37

(28)

Analyse de boucles It´erations avanc´ees

D´ eroulement de boucles : probl` eme

U←rand(−∞,+∞); V ←1;

while rand(0,1) = 0do

ifV = 1thenV ←0;U←0;

stat;

U←U+ 1 done

Au d´ebut de la boucle,U n’est pas initialis´e(mod´elis´e par [−∞,+∞]); U est initialis´e pendant le premier tour de boucle, puis il est incr´ement´e

=⇒U≥0 quandstat est ex´ecut´e Impr´ecision :

L’invariant le plus pr´ecis est :

(V = 0∧U∈[−∞,+∞])∨(V = 1∧U ≥0)

Dans les intervalles,non-relationnels, nous ne pouvons exprimer que : V ∈[0,1]∧U∈[−∞,+∞] !

Une solution possible serait d’utiliser un domaine plus pr´ecis, capable de repr´esenter des disjonctions.

Nous verrons un tel domaine plus loin dans le cours.

Dans le transparent suivant, nous proposons une solution plus simple `a ce probl`eme.

Cours 10 Analyse de boucles Antoine Min´e p. 28 / 37

(29)

Analyse de boucles It´erations avanc´ees

D´ eroulement de boucles : solution

U←rand(−∞,+∞); V ←1;

while rand(0,1) = 0do

ifV = 1thenV ←0;U←0endif;

stat U←U+ 1 done

Solution : d´eroulement de boucle

Analyser lesN premi`eres it´erations de la boucle s´epar´ement.

Pour SJwhilecdosKR, dans le concret :

X0=R (environnements d’entr´ee)

∀i≤N:Xi = SJsK(CJcKXi−1) (d´eroulement)

∀i>N:Xi =XN∪SJsK(CJcKXi−1) (accumulation de point fixe)

et dans l’abstrait :

∀i≤N:Xi]= S]JsK(C]JcKXi−1] )

∀i>N:Xi]=Xi−1] O(XN] ∪SJsK(C]JcKXi−1] )

rappel : la m´ethode classique it`ereXi]=Xi−1] O(R]]S]JsK(C]JcKXi−1] )) Ne pas confondre avec l’´elargissement retard´e !

Cours 10 Analyse de boucles Antoine Min´e p. 29 / 37

(30)

Analyse de boucles It´erations avanc´ees

It´ erations d´ ecroissantes

V ←0;

whileV ≤50doV ←V+ 1done

Impr´ecision

Dans cet exemple, nous trouvonsV ∈[0,+∞]comme invariant de boucle, mais l’invariant de boucle le plus pr´ecis estV ∈[0,51].

Solution : it´erations d´ecroissantes de raffinement Remarque, nous cherchons un point fixeXN] =F](XN]) mais nous avons en r´ealit´e un point fixeXN]=XN]OF](XN]). . . Il est possible queF](XN])@XN]

dans ce cas,F](XN]) est un invariant plus pr´ecis queXN].

=⇒ apr`es stabilisation deXn+1] =Xn]OF](Xn])

calculerXn>N] =F](Xn−1] ) sans ´elargissement, tant queXn]d´ecroˆıt !

Cours 10 Analyse de boucles Antoine Min´e p. 30 / 37

(31)

Analyse de boucles It´erations avanc´ees

It´ erations d´ ecroissantes : exemple

V ←0;

whileV ≤50doV ←V+ 1done

F](X]) = [0,def 0] ˙∪]S]JV ←V+ 1K(C]JV ≤50KX]) XN] =def = [0,+∞] (limite des it´erations avec ´elargissement)

XN+1] =F](XN]) = [0,0]∪]([0,50]+][1,1]) = [0,0]∪][1,51] = [0,51]

XN+2] =F](XN+1] ) = [0,51] =XN+1]

=⇒dans ce cas, nous trouvons l’invariant le plus pr´ecisexprimable dans les intervalles !

Ensortie de boucle, nous avons : C]JV >50K[0,51] =[51,51].

Cours 10 Analyse de boucles Antoine Min´e p. 31 / 37

(32)

Analyse de boucles It´erations avanc´ees

It´ erations d´ ecroissantes : correction et terminaison

Correction :

Nous avons vu que, commeF](XN])vXN], alorsF(γ(XN]))γ(XN]) et donc lfpFγ(XN]).

Nous calculonsXN+n] =F]n(XN]).

Par monotonie deF,Fn(lfpF)Fn(γ(XN])).

Par d´efinition de lfp, lfpF=Fn(lfpF).

Par sˆuret´e deF], il vientFn(γ(XN]))γ(F]n(XN])).

Donc lfpFγ(F]n(XN])).

Terminaison :

la s´equence d´ecroissanteXn>N] =F](Xn]) peut ˆetre infinie ;

([0,+∞][1,+∞][2,+∞]⊇ · · ·)

tous les it´er´esXn>N] =F](Xn]) sont des invariants corrects

=⇒nous pouvons arrˆeter le raffinement `a tout instant ;

un op´erateur der´etr´ecissementMpermet de forcer la convergence en temps fini :

Xn>N] def= Xn−1] MF](Xn−1] ) o`u [a,b]M[c,d] =def

c sia=−∞

a sinon ,

d ifb=+∞

b sinon

(seules les bornes `a l’infini sont raffin´ees)

Cours 10 Analyse de boucles Antoine Min´e p. 32 / 37

(33)

Analyse de boucles It´erations avanc´ees

Remarque : non-croissance de l’´ elargissement

???

Exemple : consid´erons encorestat def= whileV ≤50doV ←V+ 1done nous avons S]JstatKR] = C]JV >50K(limλX].X]O˙ F](R],X])) o`u F](R],X]) =def R]∪˙]S]JV ←V + 1K(C]JV ≤50KX]) On’est pas croissant vis `a vis de son argument de gauche :

e.g., [0,0]O[0,51] = [0,+∞], mais [0,51]O[0,51] = [0,51]

siR]= [0,0], les it´er´es deF]sont :⊥, [0,0], [0,+∞]

[0,0]OF]([0,0],[0,0]) = [0,0]O([0,0]][1,1]) = [0,0]O[0,1] = [0,+∞]

=⇒S]JstatK([0,0]) = [51,+∞]

siR]= [0,51], les it´er´es deF]sont :⊥, [0,51], [0,51]

[0,51]OF]([0,51],[0,51]) = [0,51]O([0,0]][1,51]) = [0,51]O[0,51] = [0,51]

=⇒S]JstatK([0,51]) = [51,51]

=⇒S]JstatK n’est pas croissant

Ceci intervient en particulier dans le cas de boucles imbriqu´ees : la boucle externe it`ereXn+1] =Xn]OF](Xn+1] )

o`uF]n’est pas croissante car elle continent un ´elargissement.

Cela ne pose pas de probl`eme : l’´elargissement de la boucle externe garanti la sˆuret´e et la terminaison mˆeme siF]n’est pas croissante !

La seule hypoth`ese importante de croissance est celle deF, i.e. : dans le concret.

Cours 10 Analyse de boucles Antoine Min´e p. 33 / 37

(34)

Conseils d’implantation OCaml pour le projet

Conseils d’implantation OCaml pour le projet

Cours 10 Analyse de boucles Antoine Min´e p. 34 / 37

(35)

Conseils d’implantation OCaml pour le projet

Domaine des intervalles : manipulation des bornes

Implanter d’abord l’arithm´etique dansZ∪ {±∞}

qui sert pour manipuler les bornes d’intervalles.

domains/interval_domain.ml (*Z∪ {±∞} *)

typebound =

| Int of Z.t (* Z *)

| PINF (* +∞*)

| MINF (* −∞ *)

(*−a *)

letbound_neg(a:bound) : bound = match a with

| MINF -> PINF | PINF -> MINF | Int i -> Int (Z.neg i) (*a+b*)

letbound_add(a:bound) (b:bound) : bound = match a,b with

| MINF,PINF | PINF,MINF -> invalid_arg"bound_add" (*(+∞) + (−∞) *)

| MINF,_ | _,MINF -> MINF

| PINF,_ | _,PINF -> PINF

| Int i, Int j -> Int (Z.add i j) (* compare a et b, retourne -1, 0 ou 1 *)

letbound_cmp(a:bound) (b:bound) : int = match a,b with

| MINF,MINF | PINF,PINF -> 0

| MINF,_ | _,PINF -> -1

| PINF,_ | _,MINF -> 1

| Int i, Int j -> Z.compare i j ...

Cours 10 Analyse de boucles Antoine Min´e p. 35 / 37

(36)

Conseils d’implantation OCaml pour le projet

Domaine des intervalles : intervalles

Puis implanter la signatureVALUE_DOMAIN en s’inspirant deconstant_domain.ml.

domains/interval_domain.ml (*{[a,b]|ab} ∪ {⊥} *)

typet= Itvof bound * bound |BOT (* extension def parf(⊥) = *) letlift1f x = match x with

| Itv (a,b) -> f a b

| BOT -> BOT

(* idem pourf(⊥,y) =f(x,⊥) =*) letlift2f x y = match x,y with ...

(*−x dans les intervalles *) letneg(x:t) : t =

lift1 (fun a b -> Itv (bound_neg b, bound_neg a)) x (*x y dans les intervalles *)

letsubset (x:t) (y:t) : bool = match x,y with

| BOT,_ -> true

| _,BOT -> false

| Itv (a,b), Itv (c,d) -> bound_cmp a c >=0 && bound_cmp b d <= 0 ...

Cours 10 Analyse de boucles Antoine Min´e p. 36 / 37

(37)

Conseils d’implantation OCaml pour le projet

It´ erateur

L’interpr`ete fourni contient un it´erateur de boucles tr`es simple, sans acc´el´eration.

interpreter/interpreter.ml let rec eval_stat (a:t) ((s,ext):stat ext) : t = match s with

| AST_while (e,s) ->

(* simple fixpoint *)

let rec fix (f:t -> t) (x:t) : t = let fx = f xin

if D.subset fx x then fx else fix f fx

in

(* function to accumulate one more loop iteration:

F(X(n+1)) = X(0) U body(F(X(n)

we apply the loop body and add back the initial abstract state

*)

let f x = D.join a (eval_stat (filter x e true) s) in

(* compute fixpoint from the initial state (i.e., a loop invariant) *) let inv = fix f a in

(* and then filter by exit condition *) filter inv e false

let fx = f xcorrespond `aXn+1] =F](Xn]), il faudra le changer enXn+1] =Xn]OF](Xn]),

puis ajouter le d´elai surO, le d´eroulement de boucles, etc.

Cours 10 Analyse de boucles Antoine Min´e p. 37 / 37

Références

Documents relatifs

– L ’étude des systèmes dans le domaine fréquentiel est très facile, même si l ’ordre du système est élevé ; elle se traduit par une représentation graphique.. –

Dans chacun des espaces relatifs aux individus (E X et E Y ), il est encore possible de faire une représentation graphique de ces individus en dimension d, ces deux

26 de Beethoven, qui avait été donnée il y a quelques années comme sujet d’examen en analyse de la musique du XIX e siècle : nous comparerons ce qui avait été attendu de

En général, le poids moyen d'un circuit pulsatif n'est ni maximal (comme pour les systèmes max-plus) ni minimal (comme pour les systèmes min-plus).. Sous certaines conditions,

Ainsi, par exemple, si en dimension 1 les suites ` a convergence lin´ eaire avec un rapport strictement inf´ erieur ` a 1 sont facilement acc´ el´ erables, en dimension sup´ erieure `

D´ emontrer que pour qu’une suite soit convergente, il faut et il suffit qu’elle admette une seule valeur d’adh´ erence.. Soient A, B des paries compactes disjointes d’un espace

Exercice 9 Montrer que toute application lin´ eaire agissant sur un e.v.n.. Montrer que la boule unit´ e ferm´ ee de X n’est

On avance token start apr` es le jeton pour se pr´ eparer ` a lire le prochain jeton... On avance token start apr` es le jeton pour se pr´ eparer ` a lire le