Systematic software development using VDM
Systematic software development using VDM
Understanding Z: a specification language and its formal semantics
Understanding Z: a specification language and its formal semantics
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Subtypes for Specifications: Predicate Subtyping in PVS
IEEE Transactions on Software Engineering
Inconsistency and Undefinedness in Z - A Practical Guide
ZUM '98 Proceedings of the 11th International Conference of Z Users on The Z Formal Specification Notation
B '98 Proceedings of the Second International B Conference on Recent Advances in the Development and Use of the B Method
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
A Sound Assertion Semantics for the Dependable Systems Evolution Verifying Compiler
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Are the Logical Foundations of Verifying Compiler Prototypes Matching user Expectations?
Formal Aspects of Computing
Practical reasoning about invocations and implementations of pure methods
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
ESC/Java2: uniting ESC/Java and JML
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Efficient Well-Definedness Checking
IJCAR '08 Proceedings of the 4th international joint conference on Automated Reasoning
A Practical Approach to Partiality --- A Proof Based Approach
ICFEM '08 Proceedings of the 10th International Conference on Formal Methods and Software Engineering
Proving Consistency of Pure Methods and Model Fields
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Implicit Dynamic Frames: Combining Dynamic Frames and Separation Logic
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
ICALP'10 Proceedings of the 37th international colloquium conference on Automata, languages and programming: Part II
Verifying executable object-oriented specifications with separation logic
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Correct blame for contracts: no more scapegoating
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Heap-Dependent expressions in separation logic
FMOODS'10/FORTE'10 Proceedings of the 12th IFIP WG 6.1 international conference and 30th IFIP WG 6.1 international conference on Formal Techniques for Distributed Systems
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Local Reasoning for Global Invariants, Part I: Region Logic
Journal of the ACM (JACM)
Object ownership in program verification
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Contract languages such as JML and Spec# specify invariants and pre- and postconditions using side-effect free expressions of the programming language, in particular, pure methods. For such contracts to be meaningful, they must be well-formed: First, they must respect the partiality of operations, for instance, the preconditions of pure methods used in the contract. Second, they must enable a consistent encoding of pure methods in a program logic, which requires that their specifications are satisfiable and that recursive specifications are well-founded.This paper presents a technique to check well-formedness of contracts. We give proof obligations that are sufficient to guarantee the existence of a model for the specification of pure methods. We improve over earlier work by providing a systematic solution including a soundness result and by supporting more forms of recursive specifications. Our technique has been implemented in the Spec# programming system.