TreeKs : un foncteur pour faire passer les domaines

publicité
TreeKs : un foncteur pour faire passer les
domaines numériques à l’échelle
Stage de master 2 réalisé sous la direction d’Antoine Miné
École normale supérieure, équipe Abstraction
Mehdi Bouaziz
Mardi 7 septembre 2010
Motivation
Analyse statique numérique :
I
découverte automatique et statique de propriétés numériques
sur les variables d’un programme
Applications :
I
vérification statique de programmes (exemple : Astrée)
I
découverte et preuve d’invariants
I
optimisation de programmes
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
2/20
Cadre : domaines numériques abstraits
L’interprétation abstraite [Cousot Cousot 77] définit un cadre formel
de l’approximation sûre de sémantiques.
Un domaine numérique abstrait est la donnée de :
I
un ensemble DV de valeurs abstraites représentables sur un
ordinateur,
I
une concrétisation 〚.〛 : DV −→ P(V 7→ Q),
I
un algorithme de comparaison vDV des éléments abstraits,
I
des algorithmes efficaces et sûrs pour les opérateurs abstraits :
intersection uDV , union tDV , projection ∃DV , . . .
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
3/20
Domaines numériques abstraits : exemples
Intervalles [Cousot Cousot 76]
Polyèdres [Cousot Halbwachs 78]
V
V P
i ai
≤ Xi ≤ bi
Non relationnel
Coût linéaire
j
i aij Xi
≤ bj
Relationnel et très précis
Coût exponentiel en pire cas
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
4/20
Domaines numériques abstraits faiblement relationnels
Zones [Miné 01]
Octogones
[Miné 01]
V
±X
±
Xj ≤ cij
i
ij
Coût cubique
Logaèdres
[Howe King 09]
V
ai X ± 2bj X ≤ c
±2
i
j
ij
ij
Coût cubique
TVPI
[Simon King Howe 02]
V
a
X
i
i + bj Xj ≤ cij
ij
Coût quasi-cubique
V
ij
Xi − Xj ≤ cij
Faiblement relationnel
Coût cubique
Octaèdres
[Clarisó Cortadella 07]
VP
±X
i ≤c
i
Coût exponentiel en pire cas
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
5/20
Notre contribution : TreeKs
I
un foncteur de domaines
I
s’applique aux domaines d’inégalités linéaires
I
rapport coût/expressivité paramétrable
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
6/20
Notre contribution : TreeKs
I
un foncteur de domaines
I
s’applique aux domaines d’inégalités linéaires
I
rapport coût/expressivité paramétrable
Plan :
I
l’opération de complétion
I
passer à l’échelle avec les packs
I
application de notre foncteur au domaine des zones
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
6/20
Complétion : une opération fondamentale
I
Point commun des domaines faiblement relationnels
I
But : rendre explicite les contraintes implicites
I
Se fait par combinaison/propagation de contraintes
I
Opération nécessaire aux autres opérations (t, u, v, . . . )
I
Détermine le coût du domaine
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
7/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
x
y
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
z
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
x
y
z
−x ≤ −1
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
x
y
z
−x ≤ −1
x−y ≤0
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
x
y
z
−x ≤ −1
x−y ≤0
y − z ≤ −2
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
−x ≤ −1
x−y ≤0
y − z ≤ −2
x
y
z
−y ≤ −1
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
−x ≤ −1
x−y ≤0
y − z ≤ −2
x
y
z
−y ≤ −1
−z ≤ −3
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
−x ≤ −1
x−y ≤0
y − z ≤ −2
x
y
z
−y ≤ −1
−z ≤ −3
x − z ≤ −2
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Complétion : exemple
V
Domaine des zones ( ij Xi − Xj ≤ bij )
V = {x, y, z}
z
y
x
−x ≤ −1
x−y ≤0
y − z ≤ −2
x
y
z
−y ≤ −1
−z ≤ −3
x − z ≤ −2
Terminé !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
8/20
Domaine des zones : représentation
On représente un ensemble de contraintes de différences de
deux variables (Xi − Xj ≤ mji ) par un graphe de potentiel ou
par une DBM (Difference Bound Matrice).
-1
0
x
0
y
-2
z
0
x
y
z
0
0
−1
+∞
+∞
x
+∞
0
0
+∞
y
+∞
+∞
0
−2
z
+∞
+∞
+∞
0
0 − x ≤ −1
x−y ≤ 0
y − z ≤ −2
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
9/20
Domaine des zones : représentation
On représente un ensemble de contraintes de différences de
deux variables (Xi − Xj ≤ mji ) par un graphe de potentiel ou
par une DBM (Difference Bound Matrice).
-1
0
-1
x
0
y
-3
-2
-2
z
0 − x ≤ −1
x−y ≤ 0
y − z ≤ −2
0
x
y
z
0
0
−1
−1
−3
x
+∞
0
0
−2
y
+∞
+∞
0
−2
z
+∞
+∞
+∞
0
0 − y ≤ −1
0 − z ≤ −3
x − z ≤ −2
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
9/20
Domaine des zones : complétion
Dans le domaine des zones, l’opération de complétion est
une clotûre de plus courts chemins.
Algorithme de Floyd-Warshall O(n3 )
pour k ← 1 à N faire
pour i ← 1 à N faire
pour j ← 1 à N faire
mij ← min(mij , mik + mkj )
(
∀i, j, k, mij ≤ mik + mkj
À la fin :
∃i, mii < 0
si satisfiable
si insatisfiable
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
10/20
Domaine des zones : opérateurs
Sur des valeurs complètes, les opérations se font point-à-point.
Jointure (meilleure approximation de l’union) :
(m t n)ij = max(mij , nij )
Opérateur d’oubli (projection) :


mij si i 6= k et j 6= k
(∃Xk m)ij = 0
si i = j = k


+∞ sinon
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
11/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Coût : linéaire pour des packs de taille bornée
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Solution : partage des contraintes d’intervalles
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Solution : partage des contraintes d’intervalles
Précision insuffisante !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
P1 = {t, x, y}
P2 = {t, x, z}
t≤y
y≤x
x≤z
z≤t
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Solution : partage des contraintes d’intervalles
Précision insuffisante !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
P1 = {t, x, y}
P2 = {t, x, z}
t≤y
y≤x
t≤x
x≤z
z≤t
x≤t
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Solution : partage des contraintes d’intervalles
Précision insuffisante !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
P1 = {t, x, y}
P2 = {t, x, z}
t≤y
y≤x
t≤x
x≤z
z≤t
x≤t
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Solution : partage des contraintes d’intervalles
Précision insuffisante !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Passer à l’échelle : les packs d’Astrée
Principe :
I
répartir les variables dans des packs
I
utiliser une DBM par pack
P1 = {t, x, y}
P2 = {t, x, z}
t≤y
y≤x
t≤x
x≤z
z≤t
x≤t
x=t
Coût : linéaire pour des packs de taille bornée
Perte d’information : pas de communication entre les packs !
Solution : partage des contraintes d’intervalles
Précision insuffisante !
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
12/20
Idée : un sous-graphe
But : partager les contraintes relationnelles
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
13/20
Idée : un sous-graphe
But : partager les contraintes relationnelles
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
13/20
Idée : un sous-graphe
But : partager les contraintes relationnelles
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
13/20
Idée : un sous-graphe
But : partager les contraintes relationnelles
Problèmes :
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
13/20
Idée : un sous-graphe
But : partager les contraintes relationnelles
Problèmes :
I
conserver une bonne expressivité
I
conserver une structure de packs
I
conserver des algorithmes précis et efficaces
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
13/20
TreeKs : un certain sous-graphe
Forme :
I
un arbre de graphes complets (packs)
I
qui partagent des frontières communes
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
14/20
TreeKs : un certain sous-graphe
Forme :
I
un arbre de graphes complets (packs)
I
qui partagent des frontières communes
K8
K7
K5
K8
K8
K6
arbre des packs
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
14/20
TreeKs : un certain sous-graphe
Forme :
I
un arbre de graphes complets (packs)
I
qui partagent des frontières communes
Valeur abstraite : n-uplet de DBMs
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
14/20
TreeKs : un certain sous-graphe
Forme :
I
un arbre de graphes complets (packs)
I
qui partagent des frontières communes
Paramètres :
N
m
p
f
d
nombre de variables
nombre de packs
taille d’un pack
taille d’une frontière
diamètre du graphe
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
14/20
TreeKs : opérateurs abstraits
Sur des valeurs complètes, les opérations se font pack à pack :
I
test d’inclusion
I
intersection
I
union
mais pas l’extraction de contraintes, ni l’ajout de contraintes. . .
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
15/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Algorithme de complétion
Algorithme de complétion dans TreeKs O(mp3 )
pour chaque pack des feuilles vers la racine
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à son père
pour chaque pack de la racine vers les feuilles
Compléter ce pack dans le domaine des zones
Transmettre les nouvelles contraintes à ses enfants
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
16/20
Extraction de contraintes
But : on cherche à borner Xu − Xv
Cas simple : Xu et Xv sont dans le même pack
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
17/20
Extraction de contraintes
But : on cherche à borner Xu − Xv
Cas complexe : Xu et Xv sont dans des packs différents
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
17/20
Extraction de contraintes
But : on cherche à borner Xu − Xv
Cas complexe : Xu et Xv sont dans des packs différents
Solution : algorithme dynamique en O(df 2 )
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
17/20
Ajout de contraintes
But : on souhaite ajouter la contrainte Xu − Xv ≤ c
Cas simple : Xu et Xv sont dans le même pack
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
18/20
Ajout de contraintes
But : on souhaite ajouter la contrainte Xu − Xv ≤ c
Cas complexe : Xu et Xv sont dans des packs différents
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
18/20
Ajout de contraintes
But : on souhaite ajouter la contrainte Xu − Xv ≤ c
Cas complexe : Xu et Xv sont dans des packs différents
Pour chaque arc entre Xu et Xv , ajouter la meilleure contrainte qui
se déduit de Xu − Xv ≤ c et des contraintes existantes : O(df 2 )
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
18/20
Conclusion
I
s’applique à une grande famille de domaines numériques
(zones, octogones, logaèdres, TVPI, octaèdres, polyèdres, ...)
I
s’applique à des domaines qui pourront être inventés à l’avenir
I
pour une taille de packs fixée, la complétion est linéaire
I
les algorithmes sont simples, précis et efficaces
Travaux futurs :
I
développement de stratégies de génération de packs
I
application à d’autres domaines convexes et à des domaines
non convexes
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
19/20
Merci pour votre attention
Les questions sont les bienvenues
Mehdi Bouaziz, École normale supérieure
TreeKs : un foncteur pour faire passer les domaines numériques à l’échelle
20/20
Téléchargement