Conference
Programming Languages meets Program Verification
About: Programming Languages meets Program Verification is an academic conference. The conference publishes majorly in the area(s): Computer science & Functional programming. Over the lifetime, 53 publications have been published by the conference receiving 1048 citations.
Topics: Computer science, Functional programming, Agda, Formal verification, Functional reactive programming
Papers
2 Oct 2007
TL;DR: The new proposal simplifies Altenkirch's construction of a setoid-model for a system with canonicity and extensionality on top of an intensional type theory with proof-irrelevant propositions by adopting McBride's heterogeneous approach to equality.
Abstract: This paper has something new and positive to say about propositional equality in programming and proof systems based on the Curry-Howard correspondence between propositions and types. We have found a way to present a propositional equality type which is substitutive, allowing us to reason by replacing equal for equal in propositions;which reflects the observable behaviour of values rather than their construction: in particular, we have extensionality-- functions are equal if they take equal inputs to equal outputs;which retains strong normalisation, decidable typechecking and canonicity--the property that closed normal forms inhabiting datatypes have canonical constructors; which allows inductive data structures to be expressed in terms of a standard characterisation of well-founded trees;which is presented syntactically--you can implement it directly, and we are doing so this approach stands at the core of Epigram 2;which you can play with now: we have simulated our system by a shallow embedding in Agda 2, shipping as part of the standard examples package for that system [21].. Until now, it has always been necessary to sacrifice some of these aspects. The closest attempt in the literature is Altenkirch's construction of a setoid-model for a system with canonicity and extensionality on top of an intensional type theory with proof-irrelevant propositions [4]. Our new proposal simplifies Altenkirch's construction by adopting McBride's heterogeneous approach to equality [19].
143 citations
24 Jan 2012
TL;DR: The tool set that is currently being built to support reasoning with the VerCors logic supports a specification language that combines features of separation logic with JML, and the first results on data structure specifications are described.
Abstract: This paper describes the first results and on-going work in the VerCors project. The VerCors project is about Verification of Concurrent Data Structures. Its goal is to develop a specification language and program logic for concurrent programs, and in particular for concurrent data structures, as these are the essential building blocks of many different concurrent programs. The program logic is based on our earlier work on permission-based separation logic for Java. This is an extension of Hoare logic that is particularly convenient to reason about concurrent programs.The paper first describes the tool set that is currently being built to support reasoning with this logic. It supports a specification language that combines features of separation logic with JML. For the verification, the program and its annotations are encoded into Chalice, and then we reuse the Chalice translation to Boogie to generate the proof obligations.Next, the paper describes our first results on data structure specifications. We use histories to keep track of the changes to the data structures, and we show how these histories allow us to derive other conclusions about the data structure implementations. We also discuss how we plan to reason about volatile variables, and how we will use this to verify lock-free data structures.Throughout the paper, we discuss our plans for future work within the VerCors project.
35 citations
20 Jan 2009
TL;DR: An overview of Cryptol's verification toolset is provided, describing the experiences with building a practical programming environment with dedicated support for formal verification.
Abstract: Cryptol is programming a language designed for specifying and programming cryptographic algorithms. In order to meet high-assurance requirements, Cryptol comes with a suite of formal-methods based tools allowing users to perform various program verification tasks. In the fully automated mode, Cryptol uses modern off-the-shelf SAT and SMT solvers to perform verification in a push-button manner. In the manual mode, Cryptol produces Isabelle/HOL specifications that can be interactively verified using the Isabelle theorem prover. In this paper, we provide an overview of Cryptol's verification toolset, describing our experiences with building a practical programming environment with dedicated support for formal verification.
28 citations
2 Oct 2007
TL;DR: The machinery necessary to mechanically import arbitrary functional programs into Coq's type theory, manually strengthen their specifications with additional proofs, and then mechanicaly re-extracting the newly-certified program in a form which is as efficient as the original program is developed.
Abstract: This paper develops machinery necessary to mechanically import arbitrary functional programs into Coq's type theory, manually strengthen their specifications with additional proofs, and then mechanicaly re-extracting the newly-certified program in a form which is as efficient as the original program. In order to facilitate this goal, the coinductive technique of[Capretta2005] is modified to form a monad whose operators are the constructors of a coinductive type rather than functions defined over the type. The inductive invariant technique of [Krstic2003] is extended to allow optional "after the fact" termination proofs. These proofs inhabit members of Prop, and therefore do not affect extracted code. Compared to [Capretta2005], the new monad makes it possible to directly represent unrestricted recursion without violating productivity requirements [Gimenez1995], and it produces efficient code via Coq's extraction mechanism. The disadvantages of this technique include reliance on the JMeq axiom [McBride2000] and a significantly more complex notion of equality. The resulting technique is packaged as a Coq library, and is suitable for formalizing programs written in any side-effect-free functional language with call-by-value semantics. It can be downloaded from: http://www.cs.berkeley.edu/~megacz/computation.
19 citations
2 Oct 2007
TL;DR: The Why platform is aimed at proving behavioral properties of both Java and C source code, and it is shown how C and Java are translated into an intermediate language called Jessie, designed for verification purposes.
Abstract: The Why platform is aimed at proving behavioral properties of both Java and C source code. Both C and Java source are indeed first translated into an intermediate language called Jessie, designed for verification purposes. We present the various features of this language, we show why those features are suitable for verification, and finally how C and Java are translated into it.
17 citations
Performance Metrics
| Year | Papers |
|---|---|
| 2014 | 7 |
| 2013 | 8 |
| 2012 | 8 |
| 2011 | 7 |
| 2010 | 7 |
| 2009 | 8 |