95 research outputs found
Sur la Validité des Schémas de Bases de Données
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
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
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)
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.
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
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
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
- âŠ