Automated Reasoning for Software Verication

There is renewed interest in the formal verification of software. We see the motivations for this renewal as having a social as well as a technological dimension. Firstly, society is becoming increasingly dependent on software systems for critical services, e.g. safety and security. Traditional software testing alone can not deliver the levels of integrity that are required for critical services. Formal verification can ensure such levels of integrity. Secondly, technological advances have made formal verification a more realistic proposition, i.e. there is greater, i) focus on property based verification, ii) use of mechanized abstraction, and iii) integration between complementary formal analysis tools. Examples of industrial led software verification projects include SLAM (Microsoft) [1], ESC/Java (Compaq/HP) [7, 6], Caveat (French Atomic Agency/Airbus) [3]. Our applied research follows a similar pattern, focusing on SPARK [2] (Praxis), a language and toolset designed for the needs of high integrity software development. Below we describe in more detail our work with the SPARK toolset and how we are making an impact on industry. In addition, we outline our future research plans.

[1]  Andrew Ireland,et al.  Combining Proof Plans with Partial Order Planning for Imperative Program Synthesis , 2006, Automated Software Engineering.

[2]  Andrew Ireland,et al.  An Integration of Program Analysis and Automated Theorem Proving , 2004, IFM.

[3]  Greg Nelson,et al.  Extended static checking for Java , 2002, PLDI '02.

[4]  John G. P. Barnes,et al.  High Integrity Software - The SPARK Approach to Safety and Security , 2003 .

[5]  K. Rustan M. Leino,et al.  Houdini, an Annotation Assistant for ESC/Java , 2001, FME.

[6]  Steve King,et al.  Is Proof More Cost-Effective Than Testing? , 2000, IEEE Trans. Software Eng..

[7]  Bill J. Ellis,et al.  An Integrated Approach to Program Reasoning , 2022 .

[8]  Andrew Ireland,et al.  Automation for exception freedom proofs , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[9]  Towards Increased Verification Automation for High Integrity Software Engineering , .

[10]  Patrick Baudin,et al.  Caveat: a tool for software validation , 2002, Proceedings International Conference on Dependable Systems and Networks.

[11]  Patrick Maier,et al.  Description logics for shape analysis , 2005, Third IEEE International Conference on Software Engineering and Formal Methods (SEFM'05).

[12]  Witold Charatonik,et al.  Bounded Model Checking of Pointer Programs , 2005, CSL.

[13]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.