Skip to main content

From Program to Logic: An Introduction

  • Chapter
Tools for Practical Software Verification (LASER 2011)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7682))

Included in the following conference series:

Abstract

We review, compare and discuss several approaches for representing programs by logic formulas, such as symbolic model checking, bounded model checking, verification-condition generation, and symbolic-execution-based test generation.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 49.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Anand, S., Godefroid, P., Tillmann, N.: Demand-Driven Compositional Symbolic Execution. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 367–381. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  2. Ball, T., Kupferman, O., Sagiv, M.: Leaping Loops in the Presence of Abstraction. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 491–503. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  3. Barnett, M., Leino, K.R.M.: Weakest Precondition of Unstructured Programs. In: Proceedings of PASTE 2005 (Program Analysis For Software Tools and Engineering), pp. 82–87 (2005)

    Google Scholar 

  4. Burch, J., Clarke, E., McMillan, K., Dill, D., Hwang, L.: Symbolic Model Checking: 1020 States and Beyond. In: Proceedings of LICS 1990 (5th Symposium on Logic in Computer Science), Philadelphia, pp. 428–439 (June 1990)

    Google Scholar 

  5. Cadar, C., Engler, D.: Execution Generated Test Cases: How to Make Systems Code Crash Itself. In: Godefroid, P. (ed.) SPIN 2005. LNCS, vol. 3639, pp. 2–23. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  6. Clarke, E.M., Biere, A., Raimi, R., Zhu, Y.: Bounded Model Checking Using Satisfiability Solving. Formal Methods in System Design 19(1), 7–34 (2001)

    Article  MATH  Google Scholar 

  7. Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. MIT Press (1999)

    Google Scholar 

  8. Clarke, E.M., Kroening, D., Yorav, K.: Behavioral Consistency of C and Verilog Programs using Bounded Model Checking. In: Design Automation Conference (DAC), pp. 368–371. ACM (2003)

    Google Scholar 

  9. Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst. (TOPLAS) 13(4), 451–490 (1991)

    Article  Google Scholar 

  10. Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM 18, 453–457 (1975)

    Article  MathSciNet  MATH  Google Scholar 

  11. Flanagan, C., Leino, K.R.M.: Houdini, an Annotation Assistant for ESC/Java. In: Oliveira, J.N., Zave, P. (eds.) FME 2001. LNCS, vol. 2021, pp. 500–517. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  12. Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended Static Checking for Java. In: Proceedings of PLDI 2002 (ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation), pp. 234–245 (2002)

    Google Scholar 

  13. Flanagan, C., Saxe, J.B.: Avoiding Exponential Explosion: Generating Compact Verification Conditions. In: Proceedings of POPL 2001 (28th ACM Symposium on Principles of Programming Languages), pp. 193–205 (2001)

    Google Scholar 

  14. Floyd, R.: Assigning Meaning to Programs. In: Mathematical Aspects of Computer Science, pp. 19–32. XIX American Mathematical Society (1967)

    Google Scholar 

  15. Godefroid, P.: Model Checking for Programming Languages using VeriSoft. In: Proceedings of POPL 1997 (24th ACM Symposium on Principles of Programming Languages), Paris, pp. 174–186 (January 1997)

    Google Scholar 

  16. Godefroid, P.: Compositional Dynamic Test Generation. In: Proceedings of POPL 2007 (34th ACM Symposium on Principles of Programming Languages), Nice, pp. 47–54 (January 2007)

    Google Scholar 

  17. Godefroid, P.: Higher-Order Test Generation. In: Proceedings of PLDI 2011 (ACM SIGPLAN 2011 Conference on Programming Language Design and Implementation), San Jose, pp. 258–269 (2011)

    Google Scholar 

  18. Godefroid, P., Klarlund, N., Sen, K.: DART: Directed Automated Random Testing. In: Proceedings of PLDI 2005 (ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation), Chicago, pp. 213–223 (June 2005)

    Google Scholar 

  19. Godefroid, P., Levin, M., Molnar, D.: Active Property Checking. In: Proceedings of EMSOFT 2008 (8th Annual ACM & IEEE Conference on Embedded Software), Atlanta, pp. 207–216. ACM Press (October 2008)

    Google Scholar 

  20. Godefroid, P., Luchaup, D.: Automatic Partial Loop Summarization in Dynamic Test Generation. In: Proceedings of ISSTA 2011 (ACM SIGSOFT International Symposium on Software Testing and Analysis), Toronto, pp. 23–33 (July 2011)

    Google Scholar 

  21. Godefroid, P., Nori, A., Rajamani, S., Tetali, S.: Compositional Must Program Analysis: Unleashing The Power of Alternation. In: Proceedings of POPL 2010 (37th ACM Symposium on Principles of Programming Languages), Madrid, pp. 43–55 (January 2010)

    Google Scholar 

  22. Hoare, C.A.R.: An Axiomatic Approach to Computer Programming. Communications of the ACM 12(10), 576–580 (1969)

    Article  MATH  Google Scholar 

  23. King, J.C.: Symbolic Execution and Program Testing. Journal of the ACM 19(7), 385–394 (1976)

    Article  MathSciNet  MATH  Google Scholar 

  24. Korel, B.: A Dynamic Approach of Test Data Generation. In: IEEE Conference on Software Maintenance, San Diego, pp. 311–317 (November 1990)

    Google Scholar 

  25. Păsăreanu, C.S., Visser, W.: Verification of Java Programs Using Symbolic Execution and Invariant Generation. In: Graf, S., Mounier, L. (eds.) SPIN 2004. LNCS, vol. 2989, pp. 164–181. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  26. Sen, K., Marinov, D., Agha, G.: CUTE: A Concolic Unit Testing Engine for C. In: Proceedings of FSE 2005 (13th International Symposium on the Foundations of Software Engineering) (September 2005)

    Google Scholar 

  27. Tillmann, N., de Halleux, J.: Pex–White Box Test Generation for.NET. In: Beckert, B., Hähnle, R. (eds.) TAP 2008. LNCS, vol. 4966, pp. 134–153. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  28. Tsitovich, A., Sharygina, N., Wintersteiger, C.M., Kroening, D.: Loop Summarization and Termination Analysis. In: Abdulla, P.A., Leino, K.R.M. (eds.) TACAS 2011. LNCS, vol. 6605, pp. 81–95. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Godefroid, P., Lahiri, S.K. (2012). From Program to Logic: An Introduction. In: Meyer, B., Nordio, M. (eds) Tools for Practical Software Verification. LASER 2011. Lecture Notes in Computer Science, vol 7682. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35746-6_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-35746-6_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-35745-9

  • Online ISBN: 978-3-642-35746-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics