Model checking and abstract interpretation as building blocks of advanced program analysis techniques

Formal analysis of software systems can look back on a close to 50 years history and, yet, significant progress is being made today by either new approaches or innovative combinations of existing techniques. In the 1960s, Floyd [5] and Hoare [7] provided the emerging field of computer science with a fundamental understanding of (partial and total) program correctness. Given a precondition P of a program φ, establishing a correctness argument amounts to deriving the strongest description Q of φ subject to P . A correctness proof in Floyd–Hoare logic is then represented as a tuple:

[1]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[2]  Orna Grumberg,et al.  Static Analysis for State-Space Reductions Preserving Temporal Logics , 2004, Formal Methods Syst. Des..

[3]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[4]  Joseph Sifakis,et al.  Specification and verification of concurrent systems in CESAR , 1982, Symposium on Programming.

[5]  Rupak Majumdar,et al.  From Tests to Proofs , 2009, TACAS.

[6]  C. Rattray,et al.  Specification and Verification of Concurrent Systems , 1990, Workshops in Computing.

[7]  Lydia E. Kavraki,et al.  Falsification of LTL safety properties in hybrid systems , 2009, International Journal on Software Tools for Technology Transfer.

[8]  Sriram Sankaranarayanan,et al.  Static analysis for concurrent programs with applications to data race detection , 2013, International Journal on Software Tools for Technology Transfer.

[9]  Theo C. Ruys,et al.  Selected dynamic issues in software model checking , 2012, International Journal on Software Tools for Technology Transfer.

[10]  Armin Biere,et al.  Bounded model checking , 2003, Adv. Comput..

[11]  Edmund M. Clarke,et al.  Symbolic Model Checking: 10^20 States and Beyond , 1990, Inf. Comput..

[12]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[13]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .