La bibliothèque BDDAPRON de domaines abstraits logico-numériques



Documents pareils
Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Qualité du logiciel: Méthodes de test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

OCL - Object Constraint Language

STAGE IREM 0- Premiers pas en Python

Principes des langages de programmation INF 321. Eric Goubault

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Cours de Programmation 2

Chapitre 10 Arithmétique réelle

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Conventions d écriture et outils de mise au point

Corrigé des TD 1 à 5

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Chapitre VI- La validation de la composition.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

modules & compilation

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Classes et Objets en Ocaml.

Rappel sur les bases de données

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Plan du cours. Historique du langage Nouveautés de Java 7

Programmer en JAVA. par Tama

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Objets et Programmation. origine des langages orientés-objet

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d algorithmique pour la classe de 2nde

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Algorithmique et Programmation, IMA

Présentation du PL/SQL

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

1. Structure d'un programme FORTRAN 95

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Compilation (INF 564)

Plan du cours Cours théoriques. 29 septembre 2014

Programmation Web. Madalina Croitoru IUT Montpellier

Cours de Génie Logiciel

Devenez un véritable développeur web en 3 mois!

Chapitre 2 : Abstraction et Virtualisation

Object Constraint Language (OCL)

Logiciel Libre Cours 2 Fondements: Programmation

CM2 L architecture MIPS32

TP3 : Manipulation et implantation de systèmes de fichiers 1

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Recherche dans un tableau

TP1 : Initiation à Java et Eclipse

Présentation du langage et premières fonctions

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

ACTIVITÉ DE PROGRAMMATION

UE C avancé cours 1: introduction et révisions

Université de Bangui. Modélisons en UML

Vérification de programmes et de preuves Première partie. décrire des algorithmes

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Chapitre 10. Les interfaces Comparable et Comparator 1

Quatrième partie IV. Test. Test 15 février / 71

Introduction à JDBC. Accès aux bases de données en Java

Cours 1 : La compilation

Approche Contract First

Java 1.5 : principales nouveautés

Analyse statique de code dans un cycle de développement Web Retour d'expérience

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Arithmétique réelle. Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations. Valérie Ménissier-Morain

MIS 102 Initiation à l Informatique

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

UML (Diagramme de classes) Unified Modeling Language

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Orchestrer son cloud OpenStack avec Heat

Analyse de sécurité de logiciels système par typage statique

INF 321 : mémento de la syntaxe de Java

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Gestion mémoire et Représentation intermédiaire

Programmation C++ (débutant)/instructions for, while et do...while

ARBRES BINAIRES DE RECHERCHE

Information utiles. webpage : Google+ : digiusto/

Machines virtuelles Cours 1 : Introduction

Organigramme / Algorigramme Dossier élève 1 SI

2 Comment fonctionne un ordinateur, dans les grandes lignes

Enseignement secondaire technique

DG-ADAJ: Une plateforme Desktop Grid

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Évaluation et implémentation des langages

Licence Sciences et Technologies Examen janvier 2010

Programmation Orientée Objet Java

Chapitre 2. Eléments pour comprendre un énoncé

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Premiers pas avec Mathematica

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Transcription:

La bibliothèque BDDAPRON de domaines abstraits logico-numériques Bertrand Jeannet INRIA Rhône-Alpes 8 juin 20

Outline Structure d un analyseur statique Domaine abstrait Conception d un domaine abstrait L exemple d APRON Une extension : BDDAPRON

Structure d un analyseur statique Programme Prog. annoté Transformation & Coordination Équations sémantiques Solveur Domaine Abstrait

Modularité d un analyseur statique Objectif idéal Chaque composant : librairie indépendante API bien identifiée Pas de dépendances implicites = Composants substituables En pratique : Dans quelle mesure est-on robuste à Nouveau langage d entrée? Nouveau type de donnée? Nouveau domaine abstrait? Programme Transformation & Coordination Prog. annoté Équations sémantiques Solveur Domaine Abstrait Un composant est réutilisable quand il a été réutilisé au moins deux/trois fois Anonyme, XX ième siècle

Outline Structure d un analyseur statique Domaine abstrait Conception d un domaine abstrait L exemple d APRON Une extension : BDDAPRON

Plan Structure d un analyseur statique Domaine abstrait Conception d un domaine abstrait L exemple d APRON Une extension : BDDAPRON

Implantation d un treillis abstrait D Représentation des éléments abstraits Opérations logiques/ensemblistes : conjonction ( ), disjonction ( ) test du vide et de l inclusion introduction/élimination d une variable Définition d une sémantique concrète expr : D (D) cond : D D instr : D D Et abstraction dans D cond : D D instr : D D Élargissement, Projection, Extraction de propriétés,...

Plan Structure d un analyseur statique Domaine abstrait Conception d un domaine abstrait L exemple d APRON Une extension : BDDAPRON

Domaines abstraits numériques I Un cas important : variables numériques D abstrait (Env) avec Env = Var N Objectifs de la librairie APRON Z ou R Domaines abstraits sur la table, à travers une API commune et de haut niveau Faciliter la conception d analyseurs Faciliter la comparaison de domaines (argument de modularité) Une plateforme pour l intégration de nouveaux domaines Boite à outils pour les implémenteurs

Domaines abstraits numériques II Applications Découvrir des propriétés numériques sur des variables Prouver l absence d une large classe d erreur à l exécution Division par zéro, dépassement de capacité, accès incorrect à un tableau Paramétriser une nanalyse non-numérique Analyse de pointeur, de forme

Quelques domaines numériques existants 0 0 0 0 0 111111111 111111111 111111111 111111111 111111111 0000 111111111111 Intervalles X i [a i, b i ] [Cousot-Cousot-76] 0000 111111111111 0000 111111111111 0000 111111111111 0000 111111111111 0000 111111111111 0000 111111111111 0000 111111111111 Égalités linéaires i α i X i = β [Karr-76] 00000 1111111111111 Congruences simples X i a i [b i ] [Granger-89] 00000 1111111111111 Congruences Linéaires i α i X i β [γ] [Granger-91]

Quelques domaines numériques existants (cont.) 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 Polyèdres i α ix i β [Cousot-Halbwachs-78] 11111111 11111111 11111111 11111111 11111111 0000 111111111111 11111111 11111111 11111111 11111111 Ellipsoïdes αx 2 + βy 2 + γxy δ [Feret-04] 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 00000 1111111111111 Octagones ±X i ± X j β [Miné-] 0000 111111111111 Variétés P( X) = 0, P R[Var] [Sankaranarayanan-Sipma-Manna-04

APRON : Une sémantique concrète générale I Types de données : entiers, réels, (types flottants) D = Z p R q / D = Var Z R Main concepts/datatypes Dimensions/Variables, Dimensionalité/Environnements Coefficients, Expressions, Contraintes, Valeurs Abstraites Coefficients scalar : := mpq float mpfr coeff : := scalar [ scalar, scalar ] Variables (niveau utilisateur) En C : type défini par l utilisateur (par défaut : string) En OCaml : string

APRON : Une sémantique concrète générale II Expressions Incluent les expressions non-linéaires et flottantes Par ex., affectation y := 2x 2 z + yz + f,+ e Incluent la norme IEEE754 (sauf NaN) expr : := coeff var ( - sqrt cast) typ,rmode expr expr ( + - * / % ) typ,rmode expr typ : := i nt f oat d ouble e xtended l ong double mode : := n ear 0 +

APRON : Une sémantique concrète générale III Contraintes cons : := expr ( > >= = ) 0 expr = scalar mod scalar

APRON : Une sémantique concrète générale IV Valeurs Abstraites

APRON : Une sémantique concrète générale V Typées par une dimensionalité p + q, ou un environnement normalisé de variables Opérations principales Opérations classiques de treillis : =,,, Opérations géométriques : projection/oubli de dimension(s) changement de dimensionalité/environnements fold/expand Opérations liées à la sémantique d un langage : Intersection avec des contraintes Affectation (parallèle) x = e (X) Substitution (parallèle) x/ e (X) Tests et extractions de propriétés Satisfaction d une contrainte par une valeur abstraite Extraction de la liste de contrainte,...

APRON : Généricité I API et types de données Modélisent la sémantique concrète, de manière complète Indépendants de l implantation du domaine abstrait Domaines abstraits échangeables concrète Object orientation = même sémantique Valeur abstraite = type de donnée abstrait Vrai domaine sous-jacent : défini par un manager Code dépendant du domaine localisé dans l allocation du manager Options contrôlant le compromis précision/efficacité

APRON : Généricité II Exemple # let man = Oct.manager_alloc ();; val man : Oct.t Apron.Manager.t = <abstr> # let val = Apron.Abstract1.top man env;; val val : Oct.t Apron.Abstract1.t = <abstr> # let val = Apron.Abstract1.assign_texpr man val var expr;;

La librairie APRON : structure Abstraction toolbox Underlying libraries & abstract domains box octagons - scalar & interval arithmetic - linearization of expressions - fall-back implementations intervals NewPolka convex polyhedra linear equalities octagons PPL + Wrapper convex polyhedra linear congruences Data-types Coefficients Expressions Constraints Generators Abs. values Developer interface Semantics : A γ (Z n R m ) dimensions and space dimensionality Variables and Environments Semantics : A γ (V Z R) User interface C API OCaml binding C++ binding

Bénéfice Avantages pour un programmeur client : Interface unifiée et de plus haut niveau Les variables ( x, y ) remplacent les dimensions ( 0, 1 ) Expressions non-linéaires Sémantique des opérations entières et flottantes Avantages pour l implanteur d un nouveau domaine : Possibilité de se concentrer sur les fonctionnalités de base, et de bas niveau Aide fournie par les fonctionnalités génériques La connexion d une bibliothèque existante est économique (pour les deux domaines de la PPL, 4200 LOC)

Limites de la généricité I Exemple de domaine ne posant pas problème Congruences linéaires de la PPL Polyèdres MaxPlus (thèse de X. Allamigeon) Exemple de domaine posant problème Les template constraints : à chaque point de contrôle k, on a un ens. fini d expressions e(k) l analyse : infère des bornes l(k) e(k) u(k) généralise les intervalles, zones, octogones, octaèdres,... Comment passer les e(k)? En fait le choix des e(k) définit l analyse

Limites de la généricité II Autre exemple de domaine posant problème Les formes affines (Goubault, Martel et Putot) ou zonotopes (Girard) Polyèdres centrés symmétriques x 1 = x 0 1 + 3ǫ 1 2ǫ 2 + ǫ 3 x 2 = x 0 2 + 2ǫ 1 + 3ǫ 2 + 2ǫ 3 1 ǫ 1, ǫ 2, ǫ 3 1 Les symboles de bruit ǫ i sont attachés à certains points du CFG Gestion fine de ces symboles (introduction, oubli, fusion,... ) liée au CFG (boucles) et expressions non linéaires Une solution acceptable (mais non optimale) bientôt livrée

Exploitation de la généricité Foncteurs génériques Produit réduit de domaines numériques Paramétré par une fonction de réduction Ex : combinaison polyèdres/congruences linéaires Exemple de réduction : x [1, 5] x 1 mod 3 = x [4, 4] x 4 mod 0 Unions finies de valeurs abstraites, paramétrée par Une fonction de fusion (pour borner le cardinal de l union) Un opérateur d élargissement adapté (Envisagé) Ajout de nouveaux types de donnée Combiner types finis et numériques : BDDAPRON

Plan Structure d un analyseur statique Domaine abstrait Conception d un domaine abstrait L exemple d APRON Une extension : BDDAPRON

BDDAPRON : Motivations Le moindre programme manipule des variables booléennes! On ne peut pas se contenter d analyses séparées : les variables booléennes et numériques interagissent : b := x>y ; x := 0 ;... if b then y := x+1 ; else z := y+x ; endif ; z := if b then y+1 else y ; Il faut distinguer : L abstraction des types de données (booléens,numériques) Leur couplage (indépendent du domaine numérique considéré)

BDDAPRON : Sémantique concrète : types de donnée Types finis Booléens Types énumérés Entiers (signés ou non) codés sur N bits Types numériques (APRON) Entiers Réels (permet d émuler les flottants) Sémantique d une valeur abstraite γ : A ( V (B E t I n ) (Z R) ) Valeurs abstraites typées par un environnement V Type

BDDAPRON : Sémantique concrète : expressions Booléennes bexpr : := true false bvar expr = expr iexpr ( < <= ) iexpr aexpr ( < <= ) aexpr not bexpr bexpr (and or... ) bexpr Énumérée eexpr : := label evar if bexpr then eexpr else eexpr Entier borné iexpr : := cst ivar - iexpr iexpr ( + - * ) iexpr iexpr ( << >> ) n if bexpr then iexpr else iexpr Arithmétique (APRON) aexpr : := coeff avar ( - sqrt cast) typ,rmode aexpr aexpr ( + - * / % ) typ,rmode aexpr if bexpr then aexpr else aexpr

BDDAPRON : Sémantique concrète (cont.) Contraintes Expressions booléennes Opérations sur les valeurs abstraites Les mêmes que pour APRON!

BDDAPRON : Sémantique abstraite On suppose γ N : A N (R n ) (domaine APRON) Choix effectué Pas d abstraction des types finis Couplage précis des types finis vers les numériques (B m R n ) B m (R n ) B m A N Autre choix possible (non implémenté) Pas d abstraction des types finis Couplage minimal entre types finis et numériques (B m R n ) (B m ) (R n ) (B m ) A N

Représentation des valeurs abstraites : choix 1 f B m A N représenté par Un MTBDD (ADD dans la librairie CUDD) (C) Représente des fonctions B m C double Généralise les BDDs (B m B) CUDD étendu pour remplacer double par des valeurs OCaml (200-300 lignes de C) Implications Hachage de valeurs abstraites APRON Requiert une normalisation forte (cher!) Test d égalité (cher aussi!) Exemples B B P Conjonction B P x 1 b 0 + b1 + x 1

Représentation des valeurs abstraites : choix 2 f B m A N représenté par Une liste de paires i B i P i Normalisation : B i B j = ff, i B i = tt, et P i P j Sémantiquement équivalent au choix 1 Algorithmiquement Gain en mémoire : 2 listes isomorphes i B i P i et i B i P i Partage des gardes (si MTBDDs : graphes disjoints) Gain en complexité? Possibilité de manipuler des valeurs non normalisées Expérimentalement : bof pour l instant (25 %) Perte pour l implémenteur Recoder la mécanique des MTBDDs

Représentation des expressions Expressions Booléennes f : B m ACond B : BDDs avec décisions : conditions atomiques feuilles : constantes booléennes Condition atomique : variable booléenne ou contrainte arithmétique Expressions de type énuméré ou entier borné f : B m ACond B p tableau de BDDs Expressions de type arithmétique f : B m ACond AExpr : MTBDDs avec décisions : conditions atomiques feuilles : expressions arithmétiques atomiques Expression arithmétique atomique : expression sans if-then-else

BDDAPRON et modularité Programme Prog. annoté Extension générique d un domaine APRON avec des types finis 2 implémentations différentes de la même sém. abstraite Manipulation des valeurs abs. : isomorpohes à APRON Mais changement (extension) de la sémantique concrète = modification de Interproc! Transformation & Coordination (Interproc 2.0) Équations sémantiques Solveur Domaine Abstrait (BDDAPRON)