skip to main content
research-article

Algorithmic logic-based verification

Published: 22 April 2015 Publication History

Abstract

Turing in his seminal paper "Checking a Large Routine" [Turing 1949] already asked the question whether it was possible to check a routine was right. Among other contributions, he proposed flowcharts as a concise program representation. He also described a method based on the insight that a programmer should make a number of definite assertions which can be proven individually, and from which the correctness of the whole program could easily follow. It took several years until Floyd [Floyd 1967] and Hoare [Hoare 1969], inspired by McCarthy [McCarthy 1963] and Naur [Naur 1966]'s works, established a logic based on a deductive system what is called today Floyd-Hoare logic that allowed proving correctness of programs in a rigorous manner. Dijkstra [Dijkstra 1975] presented the first semi-algorithmic view of the Floyd-Hoare logic based on the ideas of predicate transformers. Since then, the field of software verification has been growing rapidly during the last decades with many available techniques. Among them, Abstract Interpretation [Cousot and Cousot 1977], Model Checking [Clarke and Emerson 1981; Queille and Sifakis 1982], and Symbolic Execution [King 1976] are probably the most predominant algorithmic (i.e., fully automated) techniques today.

References

[1]
Aws Albarghouthi, Arie Gurfinkel, and Marsha Chechik. 2012. Craig Interpretation. In SAS. 300--316.
[2]
Aws Albarghouthi, Arie Gurfinkel, Yi Li, Sagar Chaki, and Marsha Chechik. 2013. UFO: Verification with Interpolants and Abstract Interpretation - (Competition Contribution). In TACAS. 637--640.
[3]
Aws Albarghouthi, Yi Li, Arie Gurfinkel, and Marsha Chechik. 2012. Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification. In CAV. 672--678.
[4]
Dirk Beyer. 2015. Software Verification and Verifiable Witnesses (Report on SV-COMP 2015). In TACAS.
[5]
Dirk Beyer, Alessandro Cimatti, Alberto Griggio, M. Erkan Keremoglu, and Roberto Sebastiani. 2009. Software model checking via large-block encoding. In FMCAD. 25--32.
[6]
Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala, and Rupak Majumdar. 2007. The software model checker Blast. STTT 9, 5--6 (2007), 505--525.
[7]
Dirk Beyer and M. Erkan Keremoglu. 2011. CPAchecker: A Tool for Configurable Software Verification. In CAV. 184--190.
[8]
Nikolaj Bjørner and Arie Gurfinkel. 2015. Property Directed Polyhedral Abstraction. In Verification, Model Checking, and Abstract Interpretation - 16th International Conference, VMCAI 2015. 263--281.
[9]
Nikolaj Bjørner, Kenneth L. McMillan, and Andrey Rybalchenko. 2012. Program Verification as Satisfiability Modulo Theories. In SMT. 3--11.
[10]
Nikolaj Bjørner, Kenneth L. McMillan, and Andrey Rybalchenko. 2013. On Solving Universally Quantified Horn Clauses. In SAS. 105--125.
[11]
Aaron R. Bradley. 2012. IC3 and beyond: Incremental, Inductive Verification. In CAV. 4.
[12]
Guillaume Brat, Jorge A. Navas, Nija Shi, and Arnaud Venet. 2014. IKOS: A Framework for Static Analysis Based on Abstract Interpretation. In SEFM. 271--277.
[13]
Maurice Bruynooghe, Gerda Janssens, Alain Callebaut, and Bart Demoen. 1987. Abstract Interpretation: Towards the Global Optimization of Prolog Programs. In Proceedings of the 1987 Symposium on Logic Programming, San Francisco, California, USA, August 31 -- September 4, 1987. 192--204.
[14]
Edmund M. Clarke and E. Allen Emerson. 1981. Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic. In Logics of Programs, Workshop, Yorktown Heights, New York, May 1981. 52--71.
[15]
Patrick Cousot and Radhia Cousot. 1977. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proceedings of the Fourth Annual Symposium on Principles of Programming Languages. 238--252.
[16]
Emanuele De Angelis, Fabio Fioravanti, Alberto Pettorossi, and Maurizio Proietti. 2014. VeriMAP: A Tool for Verifying Programs through Transformations. In TACAS. 568--574.
[17]
Giorgio Delzanno and Andreas Podelski. 1999. Model Checking in CLP. In TACAS. 223--239.
[18]
Edsger W. Dijkstra. 1975. Guarded Commands, Nondeterminacy and Formal Derivation of Programs. Commun. ACM 18, 8 (1975), 453--457.
[19]
Cormac Flanagan. 2003. Automatic Software Model Checking Using CLP. In ESOP. 189--203.
[20]
Robert W. Floyd. 1967. Assigning meanings to programs. Symposium Applied Mathematics 10 (1967), 19--32.
[21]
Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, and Peter J. Stuckey. 2013. Failure tabled constraint logic programming by interpolation. TPLP 13, 4--5 (2013), 593--607.
[22]
Pierre-Loïc Garoche, Temesghen Kahsai, and Cesare Tinelli. 2013. Incremental Invariant Generation Using Logic-Based Automatic Abstract Transformers. In NASA Formal Methods, 5th International Symposium, NFM 2013. 139--154.
[23]
Sergey Grebenshchikov, Nuno P. Lopes, Corneliu Popeea, and Andrey Rybalchenko. 2012. Synthesizing Software Verifiers from Proof Rules. In PLDI. 405--416.
[24]
Ashutosh Gupta, Corneliu Popeea, and Andrey Rybalchenko. 2011. Threader: A Constraint-Based Verifier for Multi-threaded Programs. In Computer Aided Verification - 23rd International Conference, CAV 2011, Snowbird, UT, USA, July 14--20, 2011. Proceedings. 412--417.
[25]
Arie Gurfinkel and Sagar Chaki. 2010. Combining predicate and numeric abstraction for software model checking. STTT 12, 6 (2010), 409--427.
[26]
Arie Gurfinkel, Sagar Chaki, and Samir Sapra. 2011. Efficient Predicate Abstraction of Program Summaries. In NFM. 131--145.
[27]
Arie Gurfinkel, Temesghen Kahsai, and Jorge A. Navas. 2015. SeaHorn: A Framework For Verifying C Programs - (Competition Contribution). In To appear in TACAS.
[28]
Arie Gurfinkel, Ou Wei, and Marsha Chechik. 2008. Model Checking Recursive Programs with Exact Predicate Abstraction. In ATVA. 95--110.
[29]
Kim S. Henriksen and John P. Gallagher. 2006. CHA: Convex Hull Analyser for constraint logic programs. (2006).
[30]
Manuel V. Hermenegildo, Germán Puebla, Francisco Bueno, and Pedro López-García. 2003. Program Development Using Abstract Interpretation (And The Ciao System Preprocessor). In SAS. 127--152.
[31]
C. A. R. Hoare. 1969. An Axiomatic Basis for Computer Programming. Commun. ACM 12, 10 (1969), 576--580.
[32]
Krystof Hoder and Nikolaj Bjørner. 2012a. Generalized Property Directed Reachability. In Theory and Applications of Satisfiability Testing - SAT 2012 - 15th International Conference, Trento, Italy, June 17--20, 2012. Proceedings. 157--171.
[33]
Krystof Hoder and Nikolaj Bjørner. 2012b. Generalized Property Directed Reachability. In SAT. 157--171.
[34]
Joxan Jaffar and Jean-Louis Lassez. 1987. Constraint Logic Programming. In POPL. 111--119.
[35]
Joxan Jaffar, Vijayaraghavan Murali, Jorge A. Navas, and Andrew E. Santosa. 2012. TRACER: A Symbolic Execution Tool for Verification. In CAV. 758--766.
[36]
Joxan Jaffar, Andrew E. Santosa, and Razvan Voicu. 2004. A CLP Proof Method for Timed Automata. In RTSS. 175--186.
[37]
James C. King. 1976. Symbolic Execution and Program Testing. Commun. ACM 19, 7 (1976), 385--394.
[38]
Anvesh Komuravelli, Arie Gurfinkel, and Sagar Chaki. 2014. SMT-Based Model Checking for Recursive Programs. In CAV. 17--34.
[39]
Anvesh Komuravelli, Arie Gurfinkel, Sagar Chaki, and Edmund M. Clarke. 2013. Automatic Abstraction in SMT-Based Unbounded Software Model Checking. In CAV. 846--862.
[40]
Akash Lal and Shaz Qadeer. 2014. A program transformation for faster goal-directed search. In FMCAD. 147--154.
[41]
Chris Lattner and Vikram S. Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In CGO. 75--88.
[42]
Kim. Marriott and Peter. J. Stuckey. 1998. Introduction to Constraint Logic Programming. MIT Press, Cambridge, MA, USA.
[43]
John McCarthy. 1963. A Basis for a Mathematical Theory of Computation. (1963), 33--70.
[44]
Ken McMillan and Andrey Rybalchenko. 2013. Solving Constrained Horn Clauses using Interpolation. Technical Report. MSR-TR-2013-6.
[45]
Mario Méndez-Lojo, Jorge A. Navas, and Manuel V. Hermenegildo. 2007. A Flexible, (C)LP-Based Approach to the Analysis of Object-Oriented Programs. In LOPSTR. 154--168.
[46]
Kalyan Muthukumar and Manuel V. Hermenegildo. 1989. Determination of Variable Dependence Information through Abstract Interpretation. In Logic Programming, Proceedings of the North American Conference. 166--185.
[47]
Peter Naur. 1966. Proof of algorithms by general snapshots. 6 (1966), 310--316. Issue 4.
[48]
Julio C. Peralta, John P. Gallagher, and Hüseyin Saglam. 1998. Analysis of Imperative Programs through Analysis of Constraint Logic Programs. In SAS. 246--261.
[49]
Jean-Pierre Queille and Joseph Sifakis. 1982. Specification and verification of concurrent systems in CESAR. In International Symposium on Programming, 5th Colloquium, Torino, Italy, April 6--8, 1982, Proceedings. 337--351.
[50]
Philipp Rümmer, Hossein Hojjat, and Viktor Kuncak. 2013. Disjunctive Interpolants for Horn-Clause Verification. In CAV. 347--363.
[51]
Harald Søndergaard. 1986. An Application of Abstract Interpretation of Logic Programs: Occur Check Reduction. In ESOP. 327--338.
[52]
Alan Turing. 1949. Checking a Large Routine. (1949).
[53]
Richard Warren, Manuel V. Hermenegildo, and Saumya K. Debray. 1988. On the Practicality of Global Flow Analysis of Logic Programs. In ICLP. 684--699.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGLOG News
ACM SIGLOG News  Volume 2, Issue 2
April 2015
36 pages
EISSN:2372-3491
DOI:10.1145/2766189
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 April 2015
Published in SIGLOG Volume 2, Issue 2

Check for updates

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 111
    Total Downloads
  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)0
Reflects downloads up to 28 Feb 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media