Integrated reasoning and proof choice point selection in the jahob system (Mechanisms for program survival)
Name
01088361d01.pdf
Size
204.81 KB
Format
Adobe PDF
Checksum (MD5)
50c8f87e12c24d1c62f1ff6e44d31a29
Author(s)
Rinard, Martin C.
Alternative Title
Integrated Reasoning and Proof Choice Point Selection in the Jahob System – Mechanisms for Program Survival
Date Issued
July 2009
Journal
Lecture Notes in Computer Science: Automated Deduction – CADE-22
Publisher
Springer Berlin Heidelberg
Citation
Rinard, Martin. “Integrated Reasoning and Proof Choice Point Selection in the Jahob System – Mechanisms for Program Survival.” Automated Deduction – CADE-22 2009.
Version
Author's final manuscript
Abstract
In recent years researchers have developed a wide range of powerful automated reasoning systems. We have leveraged these systems to build Jahob, a program specification, analysis, and verification system. In contrast to many such systems, which use a monolithic reasoning approach, Jahob provides a general integrated reasoning framework, which enables multiple automated reasoning systems to work together to prove the desired program correctness properties.
We have used Jahob to prove the full functional correctness of a collection of linked data structure implementations. The automated reasoning systems are able to automatically perform the vast majority of the reasoning steps required for this verification. But there are some complex verification conditions that they fail to prove. We have therefore developed a proof language, integrated into the underlying imperative Java programming language, that developers can use to control key choice points in the proof search space. Once the developer has resolved these choice points, the automated reasoning systems are able to complete the verification. This approach appropriately leverages both the developer’s insight into the high-level structure of the proof and the ability of the automated reasoning systems to perform the mechanical steps required to prove the verification conditions.
Building on Jahob’s success with this challenging program verification problem, we contemplate the possibility of verifying the complete absence of fatal errors in large software systems. We envision combining simple techniques that analyze the vast majority of the program with heavyweight techniques that analyze those more sophisticated parts of the program that may require arbitrarily sophisticated reasoning. Modularity mechanisms such as abstract data types enable the sound division of the program for this purpose. The goal is not a completely correct program, but a program that can survive any remaining errors to continue to provide acceptable service.
MIT Department
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Terms of Use
Attribution-Noncommercial-Share Alike 3.0 Unported
Persistent DSpace Link
DOI of Published Version
http://dx.doi.org/10.1007/978-3-642-02959-2_1