55 research outputs found

    Contribution à la vérification de programmes C par combinaison de tests et de preuves

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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 Journées Francophones de Programmation par Contraintes

    Get PDF
    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)

    Get PDF
    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

    Get PDF
    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
    • 

    corecore