Specification and verification

  title={Specification and verification},
  author={Mike Barnett and Manuel F{\"a}hndrich and K. Rustan M. Leino and Peter M{\"u}ller and Wolfram Schulte and Herman Venter},
  journal={Communications of the ACM},
  pages={81 - 91}
Can a programming language really help programmers write better programs? 
AutoProof: auto-active functional verification of object-oriented programs
This paper presents AutoProof, a state-of-the-art auto-active verifier for object-oriented sequential programs with complex functional specifications, which fully supports advanced object- oriented features and a powerful methodology for framing and class invariants, which make it applicable in practice to idiomaticobject-oriented patterns.
Putting the semantics into semantic versioning
It is argued that developers would greatly benefit from tools such as semantic version calculators to help them upgrade safely, and that contracts are a promising input to semantic versioning calculators, which can suggest whether an upgrade is likely to be safe.
Product-line specification and verification with feature-oriented contracts
It is found that behavioral subtyping applies to most, but not all featureoriented contracts, and synergistic effects when using theorem proving and model checking for product-line verification in concert are measured.
FM 2014: Formal Methods
This paper proposes the first safe language for supporting putback-based bidirectional programming, and shows that validity of putback transformations in this language is decidable and can be automatically checked.
Verification Condition Generation for Permission Logics with Abstract Predicates and Abstraction Functions
This paper presents an encoding of abstract predicates and abstraction functions in the verification condition generator Boogie that is sound and handles recursion in a way that is suitable for automatic verification using SMT solvers.
Dafny: An Automatic Program Verifier for Functional Correctness
A tour of the language and verifier Dafny, which has been used to verify the functional correctness of a number of challenging pointer-based programs, is given and the full functional specification of the Schorr-Waite algorithm is shown.
Finding Bugs with Specification-Based Testing is Easy!
Results indicate the automated testing of programs written in Whiley is effective in many cases, and that sampling offers useful performance benefits with only modest reductions in bug-finding capability.
Experience Report on Formally Verifying Parts of OpenJDK's API with KeY
The initial effort in specifying parts of OpenJDK 6 constitutes a stepping stone towards a case study for future research, and the experiences are that in principle, deductive verification for API-like code bases is feasible, but requires high expertise.
Understanding Parameters of Deductive Verification: An Empirical Investigation of KeY
This work applies machine learning techniques to empirically investigate which parameters and combinations of parameters impair or improve provability and verification effort in deductive verification, and identified parameters that represent a trade-off between high Provability and low verification effort.
Making Whiley Boogie!
The use of Boogie as an intermediate verification language for verifying programs in Whiley is explored, and it is reported that, whilst a naive translation to Boogie is unsatisfactory, a more abstract encoding is surprisingly effective.


Spec# tutorial. In LASER summer school lecture
  • 2009
Preliminary design of JML: a behavioral interface specification language for java
This paper discusses the goals of JML, the overall approach, and describes the basic features of the language through examples, intended for readers who have some familiarity with both Java and behavioral specification using pre- and postconditions.
Assigning Meanings to Programs
This paper attempts to provide an adequate basis for formal definitions of the meanings of programs in appropriately defined programming languages, in such a way that a rigorous standard is
Proofs for the working engineer
This thesis shows that proper tool support can not only ease theorem proving, but also strenghten its role as a design aid, and shows that it is feasible to integrate interactive proof within a reactive development environment for formal systems.
PVS: A Prototype Verification System
High Integrity Software - The SPARK Approach to Safety and Security
From the Book: This book is about programming in Spark--a language highly suited for writing programs that need to be reliable, and thus particularly relevant to those application areas where
Modular specification and verification of object-oriented programs
A method for modular specification and verification using the ideas of subtype and normal type, which corresponds to informal techniques used by object-oriented programmers, and a formal model of abstract type specifications is used.
Modular Specification and Verification of Object-Oriented Programs
  • Peter Müller
  • Computer Science
    Lecture Notes in Computer Science
  • 2002
The Mojave Type System and the Universe Type System are studied, which describes the specification and verification of type Invariants in a modular manner, and the semantics of Mojave are studied.