55 research outputs found
Contribution à la vérification de programmes C par combinaison de tests et de preuves
Software verification often relies on a formal specification encoding the program properties to check. Formally specifying and deductively verifying programs is difficult and time consuming and requires some knowledge about theorem provers. Indeed, a proof failure for a program can be due to a non-compliance between the code and its specification, a loop or callee contrat being insufficient to prove another property, or a prover incapacity. It is often difficult for the user to decide which one of these three reasons causes a given proof failure. Indeed, this feedback is not (or rarely) provided by the theorem prover thus requires a thorough review of the code and the specification.This thesis develops a method to automatically diagnose proof failures and facilitate the specification and verification task. This work takes place within the analysis framework for C programs FRAMA-C, that provides the specification language ACSL, the deductive verification plugin WP, and the structural test generator PATHCRAWLER. The proposed method consists in diagnosing proof failures using structural test generation on an instrumented version of the program under verification.La vĂ©rification de logiciels repose le plus souvent sur une spĂ©cification formelle encodant les propriĂ©tĂ©s du programme Ă vĂ©rifier. La tĂąche de spĂ©cification et de vĂ©rification dĂ©ductive des programmes est longue et difficile et nĂ©cessite une connaissance des outils de preuve de programmes. En effet, un Ă©chec de preuve de programme peut ĂȘtre dĂ» Ă une non-conformitĂ© du code par rapport Ă sa spĂ©cification, Ă un contrat de boucle ou de fonction appelĂ©e trop faible pour prouver une autre propriĂ©tĂ©, ou Ă une incapacitĂ© du prouveur. Il est souvent difficile pour lâutilisateurde dĂ©cider laquelle de ces trois raisons est la cause de lâĂ©chec de la preuve car cette information nâest pas (ou rarement) donnĂ©e par le prouveur et requiert donc une revue approfondie du code et de la spĂ©cification.Lâobjectif de cette thĂšse est de fournir une mĂ©thode de diagnostic automatique des Ă©checs de preuve afin dâamĂ©liorer le processus de spĂ©cification et de preuve des programmes C. Nous nous plaçons dans le cadre de la plate-forme dâanalyse des programmes C FRAMA-C, qui fournit un langage de spĂ©cification unique ACSL, un greffon de vĂ©rification dĂ©ductive WP et un gĂ©nĂ©rateur de tests structurels PATHCRAWLER. La mĂ©thode que nous proposons consiste Ă diagnostiquer les Ă©checs de preuve en utilisant la gĂ©nĂ©ration de tests structurels sur une version instrumentĂ©e du programme dâorigine
33Úmes Journées Francophones des Langages Applicatifs
International audienceLes 33Ăšmes JournĂ©es Francophones des Langages Applicatifs (JFLA) se sont tenues Ă Saint-MĂ©dard-d'Excideuil, plus prĂ©cisĂ©ment Domaine d'EssendiĂ©ras (PĂ©rigord), du mardi 28 juin 2022 au vendredi 1er juillet 2022.Les JFLA rĂ©unissent concepteurs, utilisateurs et thĂ©oriciens ; elles ont pour ambition de couvrir les domaines des langages applicatifs, de la preuve formelle, de la vĂ©rification de programmes, et des objets mathĂ©matiques qui sous-tendent ces outils. Ces domaines doivent ĂȘtre pris au sens large : nous souhaitons promouvoir les ponts entre les diffĂ©rentes thĂ©matiques.- Langages fonctionnels et applicatifs : sĂ©mantique, compilation, optimisation, typage, mesures, extensions par d'autres paradigmes.- Assistants de preuve : implĂ©mentation, nouvelles tactiques, dĂ©veloppements prĂ©sentant un intĂ©rĂȘt technique ou mĂ©thodologique.- Logique, correspondance de Curry-Howard, rĂ©alisabilitĂ©, extraction de programmes, modĂšles.- SpĂ©cification, prototypage, dĂ©veloppements formels d'algorithmes.- VĂ©rification de programmes ou de modĂšles, mĂ©thode dĂ©ductive, interprĂ©tation abstraite, raffinement.- Utilisation industrielle des langages fonctionnels et applicatifs, ou des mĂ©thodes issues des preuves formelles, outils pour le web.Les articles soumis aux JFLA sont relus par au moins deux personnes s'ils sont acceptĂ©s, trois personnes s'ils sont rejetĂ©s. Les critiques des relecteurs sont toujours bienveillantes et la plupart du temps encourageantes et constructives, mĂȘme en cas de rejet
Assistance à la validation et vérification de systÚmes critiques : ontologies et intégration de composants
Les activitĂ©s de validation et vĂ©rification de modĂšles sont devenues essentielles dans le dĂ©veloppement de systĂšmes complexes. Les efforts de formalisation de ces activitĂ©s se sont multipliĂ©s rĂ©cemment Ă©tant donnĂ© leur importance pour les systĂšmes embarquĂ©s critiques. Notre travail sâinscrit principalement dans cette voie. Nous abordons deux visions complĂ©mentaires pour traiter cette problĂ©matique. La premiĂšre est une description syntaxique implicite macroscopique basĂ©e sur une ontologie pour aider les concepteurs dans le choix des outils selon leurs exigences. La seconde est une description sĂ©mantique explicite microscopique pour faciliter la construction de techniques de vĂ©rification compositionnelles. Nous proposons dans la premiĂšre partie de cette thĂšse une ontologie pour expliquer et expliciter les Ă©lĂ©ments fondateurs du domaine que nous appelons VVO. Cette ontologie pourra avoir plusieurs autres utilisations : une base de connaissance, un outil de formation ou aussi un support pour le choix de la mĂ©thode Ă appliquer et lâinfĂ©rence de correspondance entre outils. Nous nous intĂ©ressons dans la seconde partie de cette thĂšse Ă une formalisation dans un assistant Ă la preuve de lâintroduction de composants dans un langage de modĂ©lisation et des liens avec les activitĂ©s de validation et vĂ©rification. Le but est dâĂ©tudier la prĂ©servation des propriĂ©tĂ©s par composition : les activitĂ©s de vĂ©rification sont gĂ©nĂ©ralement coĂ»teuses en terme de temps et dâeffort, les faire dâune façon compositionnelle est trĂšs avantageux. Nous partons de lâatelier formel pour lâIngĂ©nierie DirigĂ©e par les ModĂšles Coq4MDE. Nous suivons la mĂȘme ligne directrice de dĂ©veloppement prouvĂ© pour formaliser des opĂ©rateurs de composition et Ă©tudier la conservation des propriĂ©tĂ©s par assemblage. Nous nous intĂ©ressons au typage puis Ă la conformitĂ© de modĂšles par rapport au mĂ©tamodĂšle et nous vĂ©rifions que les opĂ©rateurs dĂ©finis permettent de conserver ces propriĂ©tĂ©s. Nous nous focalisons sur lâĂ©tude dâopĂ©rateurs Ă©lĂ©mentaires que nous exploitons pour spĂ©cifier des opĂ©rateurs de plus haut niveau. Les prĂ©conditions des opĂ©rateurs reprĂ©sentent les activitĂ©s de vĂ©rification non compositionnelles qui doivent ĂȘtre effectuĂ©es en plus de la vĂ©rification des composants pour assurer la postcondition des opĂ©rateurs qui est la propriĂ©tĂ© souhaitĂ©e. Nous concluons en prĂ©sentant des perspectives pour une formalisation algĂ©brique en thĂ©orie des catĂ©gories
Environnement d'assistance au développement de transformations de graphes correctes
Les travaux de cette thĂšse ont pour cadre la vĂ©rification formelle, et plus spĂ©cifiquement le projet ANR Blanc CLIMT (Categorical and Logical Methods in Model Transformation) dĂ©diĂ© aux grammaires de graphes. Ce projet, qui a dĂ©marrĂ© en fĂ©vrier 2012 pour une durĂ©e de 48 mois, a donnĂ© lieu Ă la dĂ©finition du langage Small-tALC, bĂąti sur la logique de description ALCQI. Ce langage prend la forme dâun DSL (Domain Specific Language) impĂ©ratif Ă base de rĂšgles, chacune dĂ©rivant structurellement un graphe. Le langage sâaccompagne dâun composant de preuve basĂ© sur la logique de Hoare chargĂ© dâautomatiser le processus de vĂ©rification dâune rĂšgle. Cependant, force est de constater que tous les praticiens ne sont pas nĂ©cessairement familiers avec les mĂ©thodes formelles du gĂ©nie logiciel et que les transformations sont complexes Ă Ă©crire. En particulier, ne disposant que du seul prouveur, il sâagit pour le dĂ©veloppeur Small-tALC dâĂ©crire un triplet de Hoare {P} S {Q} et dâattendre le verdict de sa correction sous la forme dâun graphe contre-exemple en cas dâĂ©chec. Ce contre-exemple est parfois difficile Ă dĂ©crypter, et ne permet pas de localiser aisĂ©ment lâerreur au sein du triplet. De plus, le prouveur ne valide quâune seule rĂšgle Ă la fois, sans considĂ©rer lâensemble des rĂšgles de transformation et leur ordonnancement dâexĂ©cution. Ce constat nous a conduits Ă proposer un environnement dâassistance au dĂ©veloppeur Small-tALC. Cette assistance vise Ă lâaider Ă rĂ©diger ses triplets et Ă prouver ses transformations, en lui offrant plus de rĂ©troaction que le prouveur. Pour ce faire, les instructions du langage ont Ă©tĂ© revisitĂ©es selon lâangle ABox et TBox de la logique ALCQI. Ainsi, conformĂ©ment aux logiques de description, la mise Ă jour du graphe par la rĂšgle sâassimile Ă la mise Ă jour ABox des individus (les nĆuds) et de leurs relations (les arcs) dâun domaine terminologique TBox (le type des nĆuds et les Ă©tiquettes des arcs) susceptible dâĂ©voluer. Les contributions de cette thĂšse concernent : (1) un extracteur de prĂ©conditions ABox Ă partir dâun code de transformation S et de sa postcondition Q pour lâĂ©criture dâune rĂšgle {P} S {Q} correcte par construction, (2) un raisonneur TBox capable dâinfĂ©rer des propriĂ©tĂ©s sur des ensembles de nĆuds transformĂ©s par un enchaĂźnement de rĂšgles {Pi} Si {Qi}, et (3) dâautres diagnostics ABox et TBox sous la forme de tests afin dâidentifier et de localiser des problĂšmes dans les programmes. Lâanalyse statique du code de transformation dâune rĂšgle, combinĂ©e Ă un calcul dâalias des variables dĂ©signant les nĆuds du graphe, permet dâextraire un ensemble de prĂ©conditions ABox validant la rĂšgle. Les infĂ©rences TBox pour un enchaĂźnement de rĂšgles rĂ©sultent dâune analyse statique par interprĂ©tation abstraite des rĂšgles ABox afin de vĂ©rifier formellement des Ă©tats du graphe avant et aprĂšs les appels des rĂšgles. A ces deux outils formels sâajoutent des analyseurs dynamiques produisant une batterie de tests pour une rĂšgle ABox, ou un diagnostic TBox pour une sĂ©quence de rĂšgle
Contribution Ă la commande sĂ»re des SystĂšmes Ă ĂvĂ©nements Discrets
Les activitĂ©s de recherche rentrent dans le spectre de la section 61 du CNU et ont pour domaine lâAutomatique des SystĂšmes Ă ĂvĂ©nements Discrets (SED). Elles sont conduites en vue dâaccroĂźtre la sĂ»retĂ© de fonctionnement des systĂšmes automatisĂ©s comme ceux quâil est possible de trouver dans le cadre de la production manufacturiĂšre, de la production d'Ă©nergie ou du transport. Une grande partie de ces recherches a concernĂ© la conception sĂ»re des systĂšmes de contrĂŽle-commande Ă base dâAutomates Programmables Industriels (API) et plus particuliĂšrement les thĂ©matiques suivantes :- la vĂ©rification formelle de programmes de contrĂŽle-commande,- la synthĂšse algĂ©brique de programmes de contrĂŽle-commande Ă partir de spĂ©cifications informelles,- le test de conformitĂ© dâun contrĂŽleur logique vis-Ă -vis de sa spĂ©cification.D'autres recherches ont portĂ© sur la formalisation des outils pour lâanalyse de sĂ»retĂ©, utilisĂ©s dans le cadre de lâanalyse prĂ©visionnelle des risques dâun Ă©quipement ou dâune installation industrielle. Cette formalisation des outils utilisĂ©s en sĂ»retĂ© a Ă©tĂ© faite en examinant avec un point de vue SED une problĂ©matique qui ne lâĂ©tait pas Ă son origine. Il a Ă©tĂ© Ă©tudiĂ© :- la modĂ©lisation algĂ©brique des arbres de dĂ©faillances dynamiques,- lâanalyse prĂ©visionnelle des risques dâun point de vue qualitatif pour les systĂšmes rĂ©parables Ă partir de Boolean logic Driven Markov Processes (BDMPs),- lâanalyse prĂ©visionnelle des risques dâun point de vue quantitatif pour les systĂšmes rĂ©parables Ă lâaide de chaĂźnes de Markov.D'une maniĂšre gĂ©nĂ©rale, ces activitĂ©s de recherche ont pour objectif de proposer des apports formels ou mĂ©thodologiques Ă des outils de modĂ©lisation gĂ©nĂ©ralement issus de lâindustrie tout en rĂ©pondant Ă des besoins industriels dĂ©jĂ prĂ©sents ou sur le point de le devenir
Combining formal verification environments and model-driven engineering
Les méthodes formelles (comme les prouveurs interactifs) sont de plus en plus utilisées dans la vérification de logiciels critiques. Elles peuvent compter sur leurs bases formelles solides ainsi que sur leurs sémantiques précises. Cependant, elles utilisent des notations complexes qui sont souvent difficiles à comprendre. D'un autre cÎté, l'Ingénierie Dirigée par les ModÚles nous propose des langages de descriptions, comme les diagrammes de classes, utilisant des notations intuitives mais qui souffrent d'un manque de bases formelles. Dans cette thÚse, nous proposons de faire interagir les deux domaines complémentaires que sont les méthodes formelles et l'ingénierie dirigée par les modÚles. Nous proposons une approche permettant de transformer des types de données fonctionnels (utilisés dans les prouveurs interactifs) en diagrammes de classes et vice-versa. Afin d'atteindre ce but, nous utilisons une méthode de transformation dirigée par les modÚles.Formal methods (such as interactive provers) are increasingly used in the verification of critical software. This is so because they rely on their strong formal basis and precise semantics. However, they use complex notations that are often difficult to understand. On the contrary, the tools and formalisms provided by Model Driven Engineering offer more attractive syntaxes and use intuitive notations. However, they suffer from a lack of formal foundations. In this thesis, we are interested in combining these two complementary domains that are formal methods and Model Driven Engineering. We propose an approach allowing to translate functional data types (used in interactive provers) into class diagrams and vice versa. To achieve this goal, we use a model-driven transformation method
JFPC 2019 - Actes des 15es JourneÌes Francophones de Programmation par Contraintes
National audienceLes JFPC (JournĂ©es Francophones de Programmation par Contraintes) sont le principal congrĂšs de la communautĂ© francophone travaillant sur les problĂšmes de satisfaction de contraintes (CSP), le problĂšme de la satisfiabilitĂ© d'une formule logique propositionnelle (SAT) et/ou la programmation logique avec contraintes (CLP). La communautĂ© de programmation par contraintes entretient Ă©galement des liens avec la recherche opĂ©rationnelle (RO), l'analyse par intervalles et diffĂ©rents domaines de l'intelligence artificielle.L'efficacitĂ© des mĂ©thodes de rĂ©solution et l'extension des modĂšles permettent Ă la programmation par contraintes de s'attaquer Ă des applications nombreuses et variĂ©es comme la logistique, l'ordonnancement de tĂąches, la conception d'emplois du temps, la conception en robotique, l'Ă©tude du gĂ©nĂŽme en bio-informatique, l'optimisation de pratiques agricoles, etc.Les JFPC se veulent un lieu convivial de rencontres, de discussions et d'Ă©changes pour la communautĂ© francophone, en particulier entre doctorants, chercheurs confirmĂ©s et industriels. L'importance des JFPC est reflĂ©tĂ©e par la part considĂ©rable (environ un tiers) de la communautĂ© francophone dans la recherche mondiale dans ce domaine.PatronnĂ©es par l'AFPC (Association Française pour la Programmation par Contraintes), les JFPC 2019 ont lieu du 12 au 14 Juin 2019 Ă l'IMT Mines Albi et sont organisĂ©es par Xavier Lorca (prĂ©sident du comitĂ© scientifique) et par Ălise Vareilles (prĂ©sidente du comitĂ© d'organisation)
Compilation de réseaux de Petri (modÚles haut niveau et symétries de processus)
Cette thÚse s'intéresse à la vérification de systÚmes automatisables par model-checking. La question sous-jacente autour de laquelle se construit la contribution est la recherche d'un compromis entre différents objectifs potentiellement contradictoires : la décidabilité des systÚmes à vérifier, l'expressivité des formalismes de modélisation, l'efficacité de la vérification, et la certification des outils utilisés. Dans ce but, on choisit de baser la modélisation sur des réseaux de Petri annotés par des langages de programmation réels. Cela implique la semi-décidabilité de la plupart des questions puisque la responsabilité de la terminaison est remise entre les mains du modélisateur (tout comme la terminaison des programmes est de la responsabilité du programmeur). Afin d'exploiter efficacement ces annotations, on choisit ensuite une approche de compilation de modÚle qui permet de générer des programmes efficaces dans le langage des annotations, qui sont alors exécutées de la maniÚre la plus efficace. De plus, la compilation est optimisée en tirant partie des spécificités de chaque modÚle et nous utilisons l'approche de model-checking explicite qui autorise cette richesse d'annotations tout en facilitant le diagnostique et en restant compatible avec la simulation (les modÚles compilés peuvent servir à de la simulation efficace). Enfin, pour combattre l'explosion combinatoire, nous utilisons des techniques de réductions de symétries qui permettent de réduire les temps d'exploration et l'espace mémoire nécessaire.This work focuses on verification of automated systems using model-checking techniques. We focus on a compromise between potentially contradictory goals: decidability of systems to be verified, expressivity of modeling formalisms, efficiency of verification, and certification of used tools. To do so, we use high level Petri nets annotated by real programming languages. This implies the semi-decidability of most of problems because termination is left to the modeler (like termination of programs is left to the programmer). To handle these models, we choose a compilation approach which produces programs in the model annotation language, this allows to execute them efficiently. Moreover, this compilation is optimizing using model peculiarities. However, this rich expressivity leads to the use of explicit model-checking which allows to have rich model annotations but also allows to easily recover errors from verification, and remains compatible with simulation (these compiled models can be used for efficient simulation). Finally, to tackle the state space explosion problem, we use reduction by symmetries techniques which allow to reduce exploration times and state spaces.EVRY-Bib. électronique (912289901) / SudocSudocFranceF
Actes des SixiÚmes journées nationales du Groupement De Recherche CNRS du Génie de la Programmation et du Logiciel
National audienceCe document contient les actes des SixiÚmes journées nationales du Groupement De Recherche CNRS du Génie de la Programmation et du Logiciel (GDR GPL) s'étant déroulées au CNAM à Paris du 11 au 13 juin 2014. Les contributions présentées dans ce document ont été sélectionnées par les différents groupes de travail du GDR. Il s'agit de résumés, de nouvelles versions, de posters et de démonstrations qui correspondent à des travaux qui ont déjà été validés par les comités de programmes d'autres conférences et revues et dont les droits appartiennent exclusivement à leurs auteurs
31Úme Journées Francophones des Langages Applicatifs
International audienc
- âŠ