How the Analyzer can Help the User Help the Analyzer

  title={How the Analyzer can Help the User Help the Analyzer},
  author={Yannick Moy},
  • Yannick Moy
  • Published 6 August 2021
  • Computer Science
  • ArXiv
Program proof is the application of deductive verification techniques to programs. Industrial acceptability of such tools relies on the high degree of automation provided by modern automatic provers, in particular SMT solvers, when the source code is restricted to a suitable language subset. SPARK 1 is an example of such a FLOSS industrial tool for Ada programs. It is available freely online as part of GNAT Community Edition 2. While striving to offer the most automation to our users, we have… 



Deductive Software Verification – The KeY Book

This book is the definitive guide to KeY that lets you explore the full potential of deductive software verification in practice and contains the complete theory behind KeY for active researchers who want to understand it in depth or use it in their own work.

Improved usability and performance of SMT solvers for debugging specifications

  • D. Cok
  • Computer Science
    International Journal on Software Tools for Technology Transfer
  • 2010
Investigations in two areas are described: the reporting of counterexample information and the testing of vacuity, both of which are important to realistic use of such tools for typical software development.

Instrumenting a weakest precondition calculus for counterexample generation

Your Proof Fails? Testing Helps to Find the Reason

This work proposes a complete methodology where test generation helps to identify the reason of a proof failure and to exhibit a counterexample clearly illustrating the issue, and describes how to transform a formally specified C program into C code suitable for testing, and illustrates the benefits on comprehensive examples.

The Boogie Verification Debugger (Tool Paper)

The Boogie Verification Debugger (BVD) is a tool that lets users explore the potential program errors reported by a deductive program verifier. The user interface is like that of a dynamic debugger,

Compiler Error Messages Considered Unhelpful: The Landscape of Text-Based Programming Error Message Research

A comprehensive, historical and state-of-the-art report on research in the area, synthesise and present the existing evidence for these messages including the difficulties they present and their effectiveness, and makes the bibtex file of the 300+ reference corpus publicly available.

VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java

This paper describes the basic symbolic execution approach in some formal detail, and zooms in on two technical aspects: the approach to permission accounting, including fractional permissions, precise predicates, and counting permissions; and the approaches to lemma function termination in the presence of dynamically-bound lemmafunction calls.

Debugging and Visualization

The usage and different use cases of the Symbolic Execution Debugger (SED) are presented and the extendable architecture of the SED and the underlying symbolic execution engine based on KeY are discussed.

Ten Challenges for Making Automation a "Team Player" in Joint Human-Agent Activity

This analysis is based on some of the principles of human-centered computing that have developed individually and jointly over the years, and is adapted from a more comprehensive examination of common ground and coordination.

Lightweight Interactive Proving inside an Automatic Program Verifier

This paper reports on the approach to extend Why3 with interactive proof features and also with a generic client-server infrastructure allowing integration of proof interaction into an external, front-end graph-ical user interface such as the one of SPARK.