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