95 research outputs found

    Sur la Validité des Schémas de Bases de Données

    Get PDF
    Les mises a jour (Tun schema de base de donnees peuvent porter sur ses trois Constituante, ( l ) les declarations de structures, (2) les regies de coherence (et de deduction) et (3) les transactions. Ces Constituante doivent verifier certaines proprietes, definissant les Schemas valides. Un Systeme de gestion de Schemas doit pouvoir verifier la validite des sche"mas (independamment de toute extension de la base) et detecter les modifications des Schemas violant les conditions de validite. Dans cet article nous decrivons tout d'abord Papproche que nous avons suivi pour realiser un Systeme de gestion des declarations de structures, premier composant disponible d'un Systeme de gestion de Schemas en cours de developpement. Cette approche fait de la validite de declarations de structures un probleme semblable a la verification des regies de coherence dans une base de donnees. Nous montrons ensuite que la validite des regies (de coherence et de deduction) correspond a une propriete logique plus forte que la consistence, la satisfaisabilite finie. Dans certains cas, cette propriete peut elre detected par des methodes de refutation de preuve automatique de theoremes. Considerant la resolution, sur laquelle s'appuient les procedures de refutation les plus performantes, nous caracterisons les additions necessaires pour etendre une procedure de refutation en une methode complete pour la satisfaisabilite finie. Une telle extension de la resolution est decrite

    Approximations par réécriture pour deux problÚmes indécidables

    Get PDF
    National audiencePour vérifier des propriétés de sûreté ou de (non-)atteignabilité par model-checking régulier, on se concentre sur une modélisation des configurations accessibles du systÚme par des langages réguliers et des relations d'évolution par des systÚmes de réécriture. Le problÚme d'atteignabilité est indécidable dans de nombreux formalismes, et l'approche générale consiste à étudier et/ou à combiner des cas particuliers. Nous nous intéressons à l'approche par approximation pour semi-décider ce problÚme de vérification. Dans ce papier, nous exploitons l'analyse d'atteignabilité pour deux problÚmes indécidables pour les machines de Turing : vacuité d'un langage et appartenance d'un mot à un langage. Nous proposons une modélisation et montrons comment les approximations par réécriture permettent de semi-décider ces problÚmes. Cette approche a été implantée et expérimentée

    Preuve automatique dans le calcul propositionnel et les logiques trivalentes

    Get PDF
    Nous prĂ©sentons une application des bases de Gröbner (bases standard) d’idĂ©aux de polynĂŽmes la vĂ©rification des tautologies dans le Calcul Propositionnel et dans trois types de logiques trivalentes. L’idĂ©e base est de transformer les formules en polynĂŽmes, et de trouver l’®equivalent algĂšbrique de la dĂ©duction: nous verons des thĂ©orĂšmes faisant la liaison entre dĂ©duction et criĂšeres de rĂ©duction algĂšbrique

    Trakt : Uniformiser les types pour automatiser les preuves (démonstration)

    Get PDF
    National audienceDans un assistant de preuve comme Coq, un mĂȘme objet mathĂ©matique peut souvent ĂȘtre formalisĂ© par diffĂ©rentes structures de donnĂ©es. Par exemple, le type Z des entiers binaires, dans la bibliothĂšque standard de Coq, reprĂ©sente les entiers relatifs tout comme le type ssrint, des entiers unaires, fourni par la bibliothĂšque MathComp. En pratique, cette situation familiĂšre en programmation est un frein Ă  la preuve formelle automatique. Dans cet article, nous prĂ©sentons trakt, un outil dont l'objectif est de faciliter l'accĂšs des utilisateurs de Coq aux tactiques d'automatisation, pour la reprĂ©sentation des thĂ©ories dĂ©cidables de leur choix. Cet outil construit une formule auxiliaire Ă  partir d'un but utilisateur, et une preuve que cette derniĂšre implique ce but initial. La formule auxiliaire est conçue pour ĂȘtre adaptĂ©e aux outils de preuve automatique (lia, SMTCoq, etc). Cet outil est extensible, grĂące Ă  une API permettant Ă  l'utilisateur de dĂ©finir plusieurs natures de plongements dans un jeu de structures de donnĂ©es de rĂ©fĂ©rence. Le mĂ©ta-langage Coq-Elpi, utilisĂ© pour l'implĂ©mentation, fournit des facilitĂ©s bienvenues pour la gestion des lieurs et la mise en oeuvre des parcours de termes en jeu dans ces tactiques

    Des types aux assertions logiques : preuve automatique ou assistée de propriétés sur les programmes fonctionnels.

    Get PDF
    This work studies two approaches to improve the safety of computer programs using static analysis.The first one is typing which guarantees that the evaluation of program cannot fail. The functionallanguage ML has a very rich type system and also an algorithm that infers automatically the types.We focus on its adaptation to generalized algebraic data types (GADTs). In this setting, efficientcomputation of a most general type is impossible. We propose a stratification of the language thatretain the usual characteristics of the ML fragment and make explicit the use of GADTs. The re-sulting language, MLGX, entails a burden on the programmer who must annotate its programs toomuch. A second stratum, MLGI, offers a mechanism to infer locally, in a predictable and efficient way,incomplete yet, most of the type annotations. The first part concludes on an illustration of the expres-siveness of GADTs to encode the invariants of pushdown automata used in LR parsing. The secondapproach augments the language with logic assertions that enables arbitrarily complex specificationsto be expressed. We check the compliance of the program semantics with respect to these specifica-tions thanks to a method called Hoare logic and thanks to semi-automatic computer-based proofs.The design choices permit to handle first-class functions. They are directed by an implementationwhich is illustrated by the certification of a module of trees that denote finite sets.Cette thĂšse Ă©tudie deux approches fondĂ©es sur l’analyse statique pour augmenter la sĂ»retĂ© defonctionnement et la correction des programmes informatiques.La premiĂšre approche est le typage qui permet de prouver automatiquement qu’un programmes’évalue sans Ă©chouer. Le langage fonctionnel ML possĂšde un systĂšme de type trĂšs riche et un algorithmeeffectuant une synthĂšse automatique de ces types. On s’intĂ©resse Ă  l’adaptation de cet algorithme auxtypes algĂ©briques gĂ©nĂ©ralisĂ©s (GADT), une forme restreinte des inductifs de Coq, qui ont Ă©tĂ© introduitspar Hongwei Xi en 2003.Dans ce cadre, le calcul efficace d’un type plus gĂ©nĂ©ral est impossible. On propose une stratificationqui maintient les caractĂ©ristiques habituelles sur le fragment ML et qui isole le traitement des GADTen explicitant leur utilisation. Le langage obtenu, MLGX, nĂ©cessite des annotations de type qui alour-dissent les programmes. Une seconde strate, MLGI, offre au programmeur un mĂ©canisme de synthĂšselocale, prĂ©dictible et efficace bien qu’incomplet, de la plupart de ces annotations. La premiĂšre parties’achĂšve avec une dĂ©monstration de l’expressivitĂ© des GADT pour coder les invariants des automatesĂ  pile utilisĂ©s par l’analyse syntaxique LR.La seconde approche augmente le langage de programmation par des assertions logiques permettantd’exprimer des spĂ©cifications de complexitĂ© arbitraire dans la logique d’ordre supĂ©rieur polymorphi-quement typĂ©e. On vĂ©rifie statiquement la conformitĂ© de la sĂ©mantique du programme vis-Ă -vis de cesspĂ©cifications Ă  l’aide d’une technique appelĂ©e logique de Hoare qui consiste Ă  engendrer un ensembled’obligations de preuves Ă  partir d’un programme annotĂ©. Une fois ces obligations de preuve traitĂ©es,si un programme est utilisĂ© correctement et si il renvoie une valeur alors il est certain que celle-ci estcorrecte.Habituellement, cette technique est employĂ©e sur les langages impĂ©ratifs. Avec un langage fonc-tionnel pur, les problĂšmes liĂ©s Ă  l’état de la mĂ©moire d’évanouissent tandis que l’ordre supĂ©rieur etle polymorphisme en posent de nouveaux. Nos choix de conceptions cherchent Ă  maximiser les op-portunitĂ©s d’utilisation de prouveurs automatiques en traduisant minutieusement les objets d’ordresupĂ©rieur en objets du premier ordre. Une implantation prototype du systĂšme en fournit une illustra-tion dans la preuve presque totalement automatique d’un module CAML d’arbres Ă©quilibrĂ©s dĂ©notantdes ensembles finis

    Vérification de propriétés LTL sur des programmes C par génération d'annotations

    Get PDF
    Ce travail propose une méthode de vérification de propriétés temporelles basée sur la génération automatique d'annotations de programmes. Les annotations générées sont ensuite vérifiées par des prouveurs automatiques via un calcul de plus faible précondition. Notre contribution vise à optimiser une technique existante de génération d'annotations, afin d'améliorer l'automatisation de la vérification des obligations de preuve produites. Cette approche a été outillée sous la forme d'un plugin au sein de l'outil Frama-C pour la vérification de programmes~

    L'arithmétique de séparation

    Get PDF
    National audienceNous, praticiens de la preuve de programmes, souhaitons que le processus de la vérification soit le plus automatique possible. Les meilleurs outils pour cela sont à l'heure actuelle les démonstrateurs SMT, qui combinent notamment la logique du premier ordre et l'arithmétique linéaire. Par opposition, le raisonnement inductif n'est pas un point fort des démonstrateurs automatiques. Or, les programmes utilisant des pointeurs le font souvent pour manipuler des structures récursives : listes, arbres, etc. Dans cet article, nous décrivons une approche qui permet d'amener la preuve de programmes avec pointeurs à la portée des démonstrateurs automatiques. L'idée consiste à projeter une structure récursive sur un domaine numérique, de sorte que les propriétés de possession et de séparation deviennent exprimables en terme de simples inégalités arithmétiques. En plus de simplifier la preuve, cela permet une spécification claire et naturelle. On illustre cette approche avec l'exemple classique du renversement en place d'une liste simplement chaßnée
    • 

    corecore