Certifying an Automated Code Generator Using Formal Tools



Documents pareils
Vérification formelle de la plate-forme Java Card

Théorie de la Programmation

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

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

La Certification de la Sécurité des Automatismes de METEOR

RTDS G3. Emmanuel Gaudin

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

Évaluation et implémentation des langages

OCL - Object Constraint Language

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 1 : La compilation

Qualité du logiciel: Méthodes de test

Thème 3 Conception et vérification d architectures de systèmes sur puce

Compilation (INF 564)

Cours de Programmation 2

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Formula Negator, Outil de négation de formule.

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

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Une introduction rapide à Coq

Ordonnancement temps réel

Cours de Génie Logiciel

Logiciel Libre Cours 2 Fondements: Programmation

Master4Light. Caractérisation Optique et Electrique des Sources Lumineuses. Equipement 2-en-1 : source de courant et spectrophotomètre

Machines Virtuelles. et bazard autour. Rémi Forax

Programmation. fonctionnelle, impérative, logique et orientée objet

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

Introduction aux systèmes temps réel. Iulian Ober IRIT

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

//////////////////////////////////////////////////////////////////// Administration bases de données

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

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

S10 - Automatisez la compilation et le déploiement de vos applications IBM i avec Arcad Pack for Rational

Certification de l assemblage de composants dans le développement de logiciels critiques

Utilisation des tableaux sémantiques dans les logiques de description

Principes des langages de programmation INF 321. Eric Goubault

Les diagrammes de modélisation

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

Calculabilité Cours 3 : Problèmes non-calculables.

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Curriculum Vitae 1 er février 2008

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Une bibliothèque de templates pour CUDA

Examen Médian - 1 heure 30

Procédure d installation d AMESim 4.3.0

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

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

Sélection du contrôleur

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Réalisabilité et extraction de programmes

CNAM - CRA Nancy 2000/2001. Génie Logiciel. Jacques Lonchamp DEUXIEME PARTIE. Les techniques de spécification.

Université de Bangui. Modélisons en UML

Resolution limit in community detection

Le développement d'applications informatiques

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

CHAPITRE 9. Codes source. 9.1 Insertion brute

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

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

Object Constraint Language (OCL)

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

Classes et Objets en Ocaml.

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

Spécification et certification d implantation chaînée avec des orbites : les hypercartes combinatoires

Vérification formelle de la plate-forme Java Card

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

Cours A7 : Temps Réel

MIS 102 Initiation à l Informatique

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Devoir Surveillé de Sécurité des Réseaux

Problématiques de recherche. Figure Research Agenda for service-oriented computing

Gestion de Projet pour Microsoft Dynamics AX Solution pour les Sociétés de Services et d Ingénierie

Introduction à la Programmation Parallèle: MPI

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

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

Génération de code binaire pour application multimedia : une approche au vol

Vérification et Validation

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

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

Introduction au temps réel

Chapitre VI- La validation de la composition.

Dispositif sur budget fédéral

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Décisionnel. SI Virtualisé. Performant. Cloud. SAP BusinessObjects. Dashboards. Expertise. Succès. Service Reporting. Finance. SaaS. Web 2.0.

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Génération de code à partir d une spécification B : Application aux bases de données

DESCRIPTION DU CONCOURS QUÉBÉCOIS INFORMATIQUE (GESTION DE RÉSEAUX)

Tutoriel LabVIEW Des fonctions simples à l acquisition de données

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Problèmes liés à la concurrence

1. Structure d'un programme FORTRAN 95

Model checking temporisé

Sécurité GNU/Linux. Iptables : passerelle

Architecture des ordinateurs

Transcription:

Certifying an Automated Code Generator Using Formal Tools Preliminary experiments in the GeneAuto Project N. Izerrouken, X. Thirioux, M. Pantel, M. Strecker IRIT-ACADIE Continental Automotive Toulouse, France, 2 Avril 2008 IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 1 / 29

Plan 1 Introduction Objectifs Vérification formelle : État de l art 2 Approche choisie pour le développement du générateur de code certifié Principes de l approche Introduction à Coq Spécification du langage d entrée du générateur de code en Coq Exemple de circuit en Coq 3 Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Algorithme de l ordonnanceur Preuves de correction de l ordonnanceur 4 Conclusion & Perspectives IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 2 / 29

Plan Introduction 1 Introduction Objectifs Vérification formelle : État de l art 2 Approche choisie pour le développement du générateur de code certifié Principes de l approche Introduction à Coq Spécification du langage d entrée du générateur de code en Coq Exemple de circuit en Coq 3 Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Algorithme de l ordonnanceur Preuves de correction de l ordonnanceur 4 Conclusion & Perspectives IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 3 / 29

Introduction Objectifs Objectifs Générateur de code Simulink vers C certifié Définir la sémantique du langage d entrée Vérifier et valider les modèles d entrée Garantir la correction du code généré Limiter le coût des tests industriels IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 4 / 29

Introduction Exemple de circuit en Simulink Objectifs IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 5 / 29

Vérification formelle : Introduction État de l art Vérification formelle : État de l art Technologies formelles 1 Model Checking 2 Analyse statique par interprétation abstraite 3 Assistants de preuves IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 6 / 29

Introduction Vérification formelle : État de l art Vérification formelle : État de l art Technologies formelles 1 Model Checking 2 Analyse statique par interprétation abstraite 3 Assistants de preuves Approches existantes Translation Validation CVT IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 6 / 29

Introduction Vérification formelle : État de l art Vérification formelle : État de l art Technologies formelles 1 Model Checking 2 Analyse statique par interprétation abstraite 3 Assistants de preuves Approches existantes Translation Validation CVT Proof Carrying Code PCC IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 6 / 29

Introduction Vérification formelle : État de l art Vérification formelle : État de l art Technologies formelles 1 Model Checking 2 Analyse statique par interprétation abstraite 3 Assistants de preuves Approches existantes Translation Validation CVT Proof Carrying Code PCC Certification de compilateur par assistant de preuves IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 6 / 29

Approche choisie pour le développement du générateur de code certifié Plan 1 Introduction Objectifs Vérification formelle : État de l art 2 Approche choisie pour le développement du générateur de code certifié Principes de l approche Introduction à Coq Spécification du langage d entrée du générateur de code en Coq Exemple de circuit en Coq 3 Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Algorithme de l ordonnanceur Preuves de correction de l ordonnanceur 4 Conclusion & Perspectives IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 7 / 29

Approche choisie pour le développement du générateur de code certifié Principes de l approche 1 Principes de l approche Le générateur de code est divisé en plusieurs modules 1 Ordonnanceur de blocs 2 Typeur de signaux 3 Calcul d horloge des blocs/circuits 4 Générateur de code 5 Optimiseur de circuits 6 Optimiseur de code IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 8 / 29

Approche choisie pour le développement du générateur de code certifié Principes de l approche 2 Principes de l approche Existence de plusieurs assistants de preuves : Coq, Isabelle, Hol, PVS, ACL2... Intérêt de Coq : Génération de code fonctionnel efficace : objective Caml, Haskell, Scheme IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 9 / 29

Approche choisie pour le développement du générateur de code certifié Principes de l approche Principes de l approche 2 Existence de plusieurs assistants de preuves : Coq, Isabelle, Hol, PVS, ACL2... Intérêt de Coq : Génération de code fonctionnel efficace : objective Caml, Haskell, Scheme Garanties L approche garantit la génération d un code Caml correct : préservation de toutes les propriétés de correction vérifiées par le programme source IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 9 / 29

Approche choisie pour le développement du générateur de code certifié Principes de l approche Principes de l approche 2 Existence de plusieurs assistants de preuves : Coq, Isabelle, Hol, PVS, ACL2... Intérêt de Coq : Génération de code fonctionnel efficace : objective Caml, Haskell, Scheme Garanties L approche garantit la génération d un code Caml correct : préservation de toutes les propriétés de correction vérifiées par le programme source GC en Coq GC en Caml GC compilé Exécutable Code C Modèle Simulink Modèle Coq Modèle Caml IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 9 / 29

Approche choisie pour le développement du générateur de code certifié Introduction à Coq Introduction à l assistant de preuves Coq Basé sur le calcul des constructions Complété par des définitions inductives et coinductives 1 Types inductifs Inductive list (A:Set) : Set := nil : list A cons : A -> list A -> list A. 2 Types Coinductifs CoInductive Stream : Set := Cons : A -> Stream -> Stream. Coq Caml Term Type Type Proof Program Program IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 10 / 29

Approche choisie pour le développement du générateur de code certifié Spécification du langage d entrée du générateur de code en Coq Spécification de Bloc Atomique Record blockbase : Set := {op : blockop; inportb : list evaltype; outportb : list evaltype; indexb : nat}. Spécification de Diagramme Record diagram (circuit : Set) : Set := {block_list : list circuit ; connexion_list : list connexion ; inportd : list eval_type ; outportd : list eval_type ; indexd : nat}. Spécification de Circuit Inductive circuit : Set := Block : blockbase -> circuit Diagram : diagram circuit -> circuit. IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 11 / 29

Approche choisie pour le développement du générateur de code certifié Exemple de circuit en Simulink Exemple de circuit en Coq Exemple de diagramme de blocs en Simulink IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 12 / 29

Approche choisie pour le développement du générateur de code certifié Exemple de circuit en Coq Exemple de circuit en Coq (*Block List Specification*) Definition blocinput:=block(build_blockbase(inputext 3)(nil)(Int::Int::Int::nil)0). Definition blocsum1:=block(build_blockbase(sum 2)(Int::Int::nil)(Int::nil)1). : Definition blocdelay1:=block(build_blockbase(delay)(int::nil)(int::nil)3). Definition blocoutput:=block(build_blockbase(outputext 2)(Int::nil)(Int::nil)7). (*Connexion List Specification*) Definition CNX_Input_Sum1:=CNX (ExternalPort 0 0)(InternalPort 0 1). : Definition CNX_Delay1_Sum1:=CNX (ExternalPort 0 3)(InternalPort 1 1). : Definition CNX_Sum2_Output:=CNX (ExternalPort 0 6)(InternalPort 1 7). (*Diagram Specification*) Definition demo := (Build_diagram circuit (blocinput...blocoutput::nil) (CNX1_Input_Sum1...CNX_Sum2_Output::nil) (Int::Int::Int::nil) (Int::Int::nil) 0). IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 13 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Plan 1 Introduction Objectifs Vérification formelle : État de l art 2 Approche choisie pour le développement du générateur de code certifié Principes de l approche Introduction à Coq Spécification du langage d entrée du générateur de code en Coq Exemple de circuit en Coq 3 Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Algorithme de l ordonnanceur Preuves de correction de l ordonnanceur 4 Conclusion & Perspectives IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 14 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Circuit d entrée à l ordonnanceur Ordonnancer les blocs du circuit IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 15 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Circuit correspondant en Coq Démonstration de l ordonnanceur SUM Gain 1/Z 1/Z INPUT OUTPUT MULT SUM IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 16 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Circuit sans boucles (blocs Delay) Démonstration de l ordonnanceur D1 R SUM Gain D2 W INPUT D2 R MULT D1 W SUM OUTPUT IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 17 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Environnement 0 Démonstration de l ordonnanceur SUM Gain D2 W INPUT MULT D1 W SUM OUTPUT IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 18 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Environnement 1 Démonstration de l ordonnanceur SUM Gain D2 W 1 INPUT MULT D1 W SUM OUTPUT IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 19 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Environnement 2 Démonstration de l ordonnanceur SUM Gain 2 1 D2 W INPUT MULT D1 W SUM OUTPUT 2 IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 20 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Environnement 3 Démonstration de l ordonnanceur SUM Gain 2 3 1 D2 W 3 INPUT MULT 3 D1 W SUM OUTPUT 2 3 IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 21 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Blocs Delay : Transformation de circuit SUM Gain 2 3 1 D2 W 3 4 INPUT MULT 3 D1 W SUM OUTPUT 2 3 IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 22 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Ordre effectif Démonstration de l ordonnanceur SUM Gain 2 4 6 1 D2 W 8 INPUT MULT 5 D1 W SUM OUTPUT 3 7 IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 23 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Algorithme de l ordonnanceur Algorithme de l ordonnanceur Construire l ordre correct d exécution des blocs du circuit Les valeurs du rang d exécution sont données par : Environment : block -> rank Forward précise le calcul du rang selon la propagation du flot de données Definition Forward (d : diagram circuit) : Environment -> Environment := fun E k => if (valid_index k d) then succ_rank (max_out_rank E d (Fanins d k)) else. L ordonnanceur est spécifié par : Function Scheduler_rec (d : diagram circuit) (E : Environment) {wf (gt_env d) E} : Environment := if (le_dec_env d (Forward E d ) E) then E else Scheduler_rec d (Forward E d ). IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 24 / 29

Vérification formelle d un module du générateur de code : Ordonnanceur Preuves de correction de l ordonnanceur Preuves de correction de l ordonnanceur Terminaison de l ordonnanceur (Récursion bien fondée) L ordonnanceur ne tourne pas indéfiniment Theorem gt_env_wf : forall (d: diagram circuit), well_founded (gt_env (size d)) Monotonie de la fonction Forward S assurer que tout appel récursif génère un nouveau rang Theorem Forward_mono : forall (E E : Environment) (d: diagram circuit), le_env d E E -> le_env d (Forward E d ) (Forward E d ). Propriété de correction : B1 B2 rank B 2 = n, n rank B 1 = n, n, n < n IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 25 / 29

Plan Conclusion & Perspectives 1 Introduction Objectifs Vérification formelle : État de l art 2 Approche choisie pour le développement du générateur de code certifié Principes de l approche Introduction à Coq Spécification du langage d entrée du générateur de code en Coq Exemple de circuit en Coq 3 Vérification formelle d un module du générateur de code : Ordonnanceur Démonstration de l ordonnanceur Algorithme de l ordonnanceur Preuves de correction de l ordonnanceur 4 Conclusion & Perspectives IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 26 / 29

Conclusion & Perspectives Conclusion Un ordonnanceur prouvé a été mis en oeuvre en utilisant l algorithme treesort de la bibliothèque Heap dans Coq La preuve globale de l ordonnanceur requiert des théorèmes intermédiaires : 40 lemmes auxiliaires prouvés en Coq Un code Caml correct a été extrait du programme source L ordonnanceur a été appliqué à des modèles industriels réels IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 27 / 29

Conclusion & Perspectives Perspectives En cours : Obtenir un ordre effectif correct par composition d ordres (position graphique, priorité...) Reste à faire... Extension de l ordonnanceur : Blocs FunctionCall Circuit avec StateCharts Développement et vérification des autres modules du générateur de code IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 28 / 29

Conclusion & Perspectives Questions? IRIT-University of Toulouse-Continental (ACADIE) Vérification Formelle de Générateur de Code FAC 2008 29 / 29