Librairie BDD+APRON pour domaines logico-numériques



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

Qualité du logiciel: Méthodes de test

Programmation linéaire

Cours de Master Recherche

OCL - Object Constraint Language

Principes des langages de programmation INF 321. Eric Goubault

STAGE IREM 0- Premiers pas en Python

DG-ADAJ: Une plateforme Desktop Grid

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Cours 1 : La compilation

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

Optimisation et programmation mathématique. Professeur Michel de Mathelin. Cours intégré : 20 h

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

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

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

Programmation Linéaire - Cours 1

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov

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

Analyse,, Conception des Systèmes Informatiques

Logiciel Libre Cours 2 Fondements: Programmation

Conventions d écriture et outils de mise au point

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Programmation Web. Madalina Croitoru IUT Montpellier

Comment gérer toutes mes tâches logicielles d automatisation dans un seul environnement?

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

Étude de l'analyse statique de programmes synchrones par interprétation abstraite

TP 1. Prise en main du langage Python

Programmation linéaire

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

4.2 Unités d enseignement du M1

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

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

Enseignement secondaire technique

Bases Java - Eclipse / Netbeans

Théorie de la Programmation

Évaluation et implémentation des langages

Représentation des Nombres

as Architecture des Systèmes d Information

Continuité d une fonction de plusieurs variables

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Cours de Génie Logiciel

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

Algorithmique et Programmation, IMA

Cours de Programmation 2

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Résolution de systèmes linéaires par des méthodes directes

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

Conversion d un entier. Méthode par soustraction

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

Programmer en JAVA. par Tama

Projet Active Object

Présentation du PL/SQL

pythonocc: une plateforme de développement agile d applications CAO.

Architecture distribuée

Les nouveautés de Femap 11.1

Cours Composant 2. Qualité logicielle et spécications algébriques

Outils logiciels pour la combinaison de vérification fonctionnelle et d évaluation de performances au sein de CADP

Présentation du langage et premières fonctions

Chapitre VI- La validation de la composition.

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

modèles génériques applicables à la synthèse de contrôleurs discrets pour l Internet des Objets

Informatique Générale

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

Entraînement au concours ACM-ICPC

Chapitre 2 : Abstraction et Virtualisation

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Chapitre 10 Arithmétique réelle

Model checking temporisé

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

TangibleData. Manipulation tangible et multitouch de bases de données

Introduction aux Machines Virtuelles avec VMKit

Corrigé des TD 1 à 5

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

2. Comprendre les définitions de classes

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

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

Génie Logiciel avec Ada. 4 février 2013

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Université de Bangui. Modélisons en UML

Maple: premiers calculs et premières applications

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

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Vérification formelle de la plate-forme Java Card

Fonctions de plusieurs variables

Classes et Objets en Ocaml.

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

RTDS G3. Emmanuel Gaudin

Introduction à MATLAB R

Orchestrer son cloud OpenStack avec Heat

RÉALISATION D UN SITE DE RENCONTRE

Programmation avec des objets : Cours 7. Menu du jour

Transcription:

Librairie BDD+APRON pour domaines logico-numériques Bertrand Jeannet INRIA Rhône-Alpes January 26, 2009

Architecture typique d un analyseur statique Programme Transformation Équations sémantiques Solveur Domaine Abstrait

Implantation d un treillis abstrait A Représentation des éléments de A, avec γ : A Opérations logiques/ensemblistes: conjonction (borne inf), disjonction (borne sup) test du vide et de l inclusion introduction/élimination d une variable Définition d une sémantique concrète expr : C (D) cond : C C instr : C C Et abstraction dans A cond : A A instr : A A... C { }} { (V D)

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Analyse des variables numériques d un programme Nombreux treillis abstraits implémentés Intervalles (... ) Egalités linéaires (Müller-Olm & Seidl) Combinaison des intervalles et égalités (Venet, Feret) Zones et Octogones (Miné, Bagnara & al) Octaèdres (Cortadella) Polyèdres convexes (NewPolka, Parma, PolyLib, CRI) Égalités polynomiales (Müller-Olms & Seidl) Inégalités polynomiales (Bagnara & al, SAS 05) Ellipsoïdes (Feret) Inégalités entre variables (Peron, VMCAI 07)

Fonctionalités et API Fonctionalités Noyau standard de fonctions offertes (union, intersection) Fonctions liées à la sémantique des instructions (affectation par une expression linéaire,... ) + Fonctions plus spécifiques pour des applications particulières (parallélisation automatique) Mais API très diverses! Certaines fonctionnalités de base peuvent manquer Sémantiques concrètes différentes Types de données différents, et trop bas-niveau Complique la diffusion de ces implémentations Difficile de comparer l efficacité de 2 implémentations du même treillis la précision de deux treillis différents

Démarche pour une interface commune Identifier les fonctionnalités de base et une sémantique concrète suffisamment générale Élaborer une interface détaillée (types de données, signatures des fonctions) Implanter une telle interface pour les bibliothèques maintenues par les membres du projet Sous les contraintes suivantes: Satisfaire différents besoins tout en restant générique Souci de minimalité, sans trop pénaliser les performances Minimiser le travail d adaptation d une bibliothèque existante

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Choix généraux Choix d architecture: Langage de référence: C Compatibilité avec les threads Mécanisme d exceptions Mécanisme d options: choix d algorithmes,... Signatures fonctionnelles et impératives... Définition d une sémantique concrète Définition des types de donnée de l API (nombres et coefficients, expressions, contraintes,... )

Identification des fonctionnalités Objectifs antagonistes: performance et précision des implantations; confort de l utilisateur et non-duplication de code entre bibliothèques Distinction entre deux niveaux d interface: Niveau 0: on se préoccupe des performances et de la précision; En prise directe avec la bibliothèque sous-jacente Interface minimale, sauf si avantage algorithmique fort à y inclure une combinaison Niveau 1: on se préoccupe du confort, et des fonctionnalités factorisables entre les domaines abstraits.

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Vue générale Underlying libraries & abstract domains box intervals octagons octagons NewPolka convex polyhedra linear equalities PPL 0.9 + Wrapper convex polyhedra linear congruences Abstraction toolbox scalar & interval arithmetic linearization of expressions fall-back implementations C API OCaml binding C++ binding 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

Domaines disponibles ( Z p IR q ) inégalités polynômiales égalités polynômiales inégalités linéaires congruences (NewPolka + PPL) inégalités linéaires (NewPolka, PPL) (polyèdres convexes) congruences linéaires (PPL) octaèdres inégalités sur 2 variables octogones (octagon) intervalles (box) égalités linéaires (NewPolka) congruences simples

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Une meilleure API 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 Et relativement stable: ajout récent des expressions non-linéaires sans remise en cause de choix antérieurs Une seule ligne dans un analyseur pour le choix d un domaine La connexion d une bibliothèque existante est économique (pour les deux domaines de la PPL, 4200 LOC)

Bénéfice Avantages pour un programmeur client: Interface unifiée et de plus haut niveau pour expérimenter, comparer, combiner des domaines abstraits 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 Diffusion et expérimentation de son travail facilitées

Diffusion Base d utilisateurs externes encourageante: réclamations, signalement de bugs,... ProVal/Démons, LRI Orsay, France; Analysis of Computer Systems Group, New-York University, USA; Sierum software analysis platform, Kansas State University, USA; NEC Labs, Princeton, USA; EADS CCR, Paris, France; IRIT, Toulouse, France. Plusieurs contributeurs externes déclarés

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

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 Cette distinction permet de définir un couplage indépendent du domaine numérique considéré (interfacé à APRON)

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

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

Expressions typées 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

Opérations sur les valeurs abstraites Opérations ensemblistes Intersection avec une expression booléenne (contrainte) Affectation/Substitution d une variable par une expression parallèle de variables par des expressions Oubli d une variable (quantification existentielle) Changement d environnements (introduction de variables/projections)

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Domaine abstrait On suppose (R n ) A 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 f B m A N représenté par Un MTBDD (ADD dans la librairie CUDD) (C) Représente des fonctions B m N Généralise les BDDs (B m B) Table de correspondance globale N A N (OCAml) Implications Hachage de valeurs abstraites APRON Test d égalité (cher!) Comptage de référence pour gérer la table globale. Exemples B B P Conjonction B P x 1 b 0 + b1 + x 1

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

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo

Opérations ensemblistes borne inf ou borne sup f g = mapop2(, f, g) défini ainsi b i b i = f f + g g + b i f g f + g + b i b j = f f + g g + f g b i f + g si i < j f t g t = hash(lookup(f t ) lookup(g t )) mapop2 : ( abs * abs -> abs) -> abs mtbdd * abs mtbdd -> abs mtbdd

Opérations ensemblistes Oubli (projection) d une variable de type fini (booléenne) si i < j b i b j : f b j : f + b j : = f f + f f + si i = j f si i > j Autre technique On met f sous la forme k f k t k On calcule f = k ( b i : f k ) t k On reconstruit k ite(f k, t k, ) b i

Opérations ensemblistes Oubli (projection) d une variable numérique x k : f = mapop1( x k, f ) défini ainsi x k : b i f f + = b i x k : f x k : f + x k : f t = hash( x k : lookup(f t )) mapop1 : ( abs -> abs) -> abs mtbdd -> abs mtbdd

Intersection avec une formule booléenne Formule sans contrainte arithmétique f c c = f ite(c,, ) Condition numérique élémentaire f c acond = mapop1( c acond, f )

Intersection avec une formule booléenne Formule générale b i b i = f f + c c + b i f c c f + c c + f c acond c c + (f c acond) c c + = (f c acond) c c f c 1 = f f c 0 =

Outline La bibliothèque APRON Contexte et Motivations Conception Implantation Résultats La bibliothèque BDD+APRON Sémantique concrète Domaine abstrait BDD+APRON: types de donnée Domaine abstrait BDD+APRON: quelques opérations Démo