Addressing the Shortcomings of Traditional Formal Reasoning Methods for Concurrent Programs: New Tools and Techniques for Source Code Correctness

Using an informal but realistic model, this paper argues that human programmers reason about their source code on multiple abstraction levels. Distinguishing features of these levels are given. Traditional reasoning methods that use code annotation are analyzed and shown to be inadequate for certain such levels. A new design architecture that explicitly captures the multi-level paradigm is presented along with a prototype implementation. The prototype demonstrates support for fine-grained, highly interactive analysis of source code without requiring formal-methods expertise from the user.