5 research outputs found

    Extracting verified decision procedures: DPLL and Resolution

    Get PDF
    This article is concerned with the application of the program extraction technique to a new class of problems: the synthesis of decision procedures for the classical satisfiability problem that are correct by construction. To this end, we formalize a completeness proof for the DPLL proof system and extract a SAT solver from it. When applied to a propositional formula in conjunctive normal form the program produces either a satisfying assignment or a DPLL derivation showing its unsatisfiability. We use non-computational quantifiers to remove redundant computational content from the extracted program and translate it into Haskell to improve performance. We also prove the equivalence between the resolution proof system and the DPLL proof system with a bound on the size of the resulting resolution proof. This demonstrates that it is possible to capture quantitative information about the extracted program on the proof level. The formalization is carried out in the interactive proof assistant Minlog

    Extracting Programs from Constructive HOL Proofs via IZF Set-Theoretic<br> Semantics

    Full text link
    Church's Higher Order Logic is a basis for influential proof assistants -- HOL and PVS. Church's logic has a simple set-theoretic semantics, making it trustworthy and extensible. We factor HOL into a constructive core plus axioms of excluded middle and choice. We similarly factor standard set theory, ZFC, into a constructive core, IZF, and axioms of excluded middle and choice. Then we provide the standard set-theoretic semantics in such a way that the constructive core of HOL is mapped into IZF. We use the disjunction, numerical existence and term existence properties of IZF to provide a program extraction capability from proofs in the constructive core. We can implement the disjunction and numerical existence properties in two different ways: one using Rathjen's realizability for IZF and the other using a new direct weak normalization result for IZF by Moczydlowski. The latter can also be used for the term existence property.Comment: 17 page

    Actes de la conférence JFLA 2009 (Vingtièmes Journées Francophones des Langages Applicatifs)

    Get PDF
    Ce fichier regroupe en un seul document l'ensemble des articles acceptés pour la conférence JFLA 2009.Pour la vingtième année consécutive, les Journées Francophones des Langages Applications sont l'occasion de se retrouver dans un cadre agréable et propice aux échanges conviviaux. Cette année, c'est à Saint-Quentin sur Isère, près de Grenoble, que nous nous réunissons, maintenant la tradition de l'alternance mer-montagne. Les neuf articles choisis par le comité de programme reflètent bien la diversité de notre communauté et les avancés tant du point de vue de l'application de langages fonctionnels que de la conception et de l'utilisation d'assistants à la preuve. Nous avons souhaité également inclure des articles plus proches de tutoriels ou de retours d'expérience, ceux-ci étant particulièrement adaptés au cadre pédagogique des Journées. Deux orateurs nous ont fait l'honneur d'accepter notre invitation. L'exposé de Vincent Balat, de l'université Paris 7, intitulé ≪ Ocsigen : approche fonctionnelle typée de la programmation Web ≫ illustre l'utilisation croissante de langages applicatifs dans des milieux inattendus. L'exposé de Bruno Barras, de Trusted Labs, intitulé ≪ Faut-il avoir peur de sa carte SIM ? ≫ présente l'application d'assistants à la preuve dans la modélisation de cartes à puces. Pour la quatrième année consécutive, deux sessions d'une demi-journée chacune sont consacrées à des cours. Le premier porte sur la modélisation de la linguistique (par Gérard Huet, de l'INRIA Paris - Rocquencourt) et le deuxième sur les bibliothèques Coq utilisées dans la preuve récente du théorème des quatre couleurs (par Assia Mahboubi, de l'INRIA Saclay - Île-de-France)

    Compiler verification in the context of pervasive system verification

    Get PDF
    This thesis presents the formal verification of the compiling specification for a simple, non-optimizing compiler from the C-like programming language C0 to VAMP assembly code. The main result is a step-by-step simulation theorem between C0 programs and the compiled code (which is specified by the compiling specification). Additionally, a C0 small-step semantics and a verification methodology for VAMP assembly have been developed. This work is part of the Verisoft project which aims at the pervasive formal verification of an entire computer system. The key concept in Verisoft';s methodology is to prove properties of computer systems at the relatively abstract C0 layer and to transfer them via several intermediate layers down to the concrete hardware layer. After successful transfer of a property to the hardware layer, we can be sure that no oversimplifications have been done in the formalizations of the more abstract layers. This context of pervasive system verification imposes several special requirements to our compiler correctness theorem. In particular, the simulation theorem had to be formulated based on small-step semantics to allow for reasoning about non-terminating and interleaving programs. Another important feature is that our result incorporates resource restrictions at the hardware layer and allows to discharge them at the C0 layer. All results presented in this thesis have been formalized in the theorem prover Isabelle / HOL.Die vorliegende Arbeit befasst sich mit der formalen Verifikation des Codegenerierungsalgorithmus eines nicht optimierenden Compilers von der C-ähnlichen Sprache C0 nach VAMP Assembler. Das Hauptergebnis ist ein Schritt-für- Schritt Simulationssatz zwischen C0 Programmen und dem compilierten Code. Die Arbeit umfasst zus¨atzlich die Entwicklung einer Small-Step Semantik für C0 sowie einer Verifikationsmethodik für VAMP Assemblerprogramme. Diese Arbeit ist Teil des Verisoft Projekts, das auf die durchgängige formale Verifikation von Computersystemen abzielt. Die Methodik von Verisoft basiert auf der Verifikation von Eigenschaften eines Computersystems auf der relativ abstrakten C0 Ebene und deren anschließendem Transfer auf die konkrete Hardwareebene. Ein solcher erfolgreicher Eigenschaftstransfer garantiert, dass auf den abstrakten Ebenen keine zu starken Vereinfachungen vorgenommen worden sind. Die Einbettung in die durchgängige Verifikation von Systemen stellt zahlreiche speziellen Anforderungen an den Compilerkorrektheitssatz. Insbesondere muss der Simulationssatz auf einer Small-Step Semantik basieren, um die Behandlung von nebenläufigen und von nicht terminierenden Programmen zu ermöglichen. Eine weitere Eigenschaft ist, dass unser Resultat Ressourcenbeschränkungen auf der Hardwareebene einbezieht und deren Entlastung auf der C0 Ebene erlaubt. Alle Resultate dieser Arbeit sind im Theorembeweiser Isabelle / HOL formalisiert worden
    corecore