Echo

From Dependability


Safe operation is crucial to safety-critical systems, and formally verified implementations are desirable. Traditional formal verification approaches follow the Floyd-Hoare style, setting up a direct compliance argument between an abstract formal specification and a concrete implementation. Such approaches require proofs of large numbers of verification conditions. The process of generating and proving verification conditions can require significant skill and can be time-consuming. We introduce a general formal verification approach that closely models the Floyd-Hoare pattern, yet avoids the tedious direct compliance proof between the formal specification and the implementation. The approach moves the major proof step to a point between two abstract specifications. Our preliminary design takes PVS as our specification language and SPARK Ada as our implementation language. We first use a human-guided refinement to manually generate Ada code along with appropriate SPARK annotations from a PVS specification. We then verify the annotations’ compliance with the specification by (1) mechanically extracting a PVS specification from them, and (2) proving that properties of the generated specification imply all of the properties of the original. We rely on the existing SPARK toolset to verify the Ada code against the SPARK annotations. The process is largely automatic or computer-aided. A case study using a hypothetical avionics system provides a preliminary indication that this approach is feasible and practical.

Selected Papers

  • Strunk, Elisabeth A., Xiang Yin, and John C. Knight
Echo: A Practical Approach to Formal Verification
FMICS-05: Tenth International Workshop on Formal Methods for Industrial Critical Systems, September 2005 (PDF)