Skip to main content

Interleaving Symbolic Execution and Partial Evaluation

  • Conference paper
Formal Methods for Components and Objects (FMCO 2009)

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

Included in the following conference series:

Abstract

Partial evaluation is a program specialization technique that allows to optimize programs for which partial input is known. We show that partial evaluation can be used with advantage to speed up as well symbolic execution of programs. Interestingly, the input required for partial evaluation comes from symbolic execution itself which makes it natural to interleave partial evaluation and symbolic execution steps in a software verification setup.

This work has been partially supported by the EU project FP7-ICT-2007-3 HATS Highly Adaptable and Trustworthy Software using Formal Methods and the EU COST Action IC0701 Formal Verification of Object-Oriented Software.

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 54.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. King, J.C.: A program verifier. PhD thesis, Carnegie-Mellon University (1969)

    Google Scholar 

  2. Jones, N.D., Gomard, C.K., Sestoft, P.: Partial evaluation and automatic program generation. Prentice-Hall, Englewood Cliffs (1993)

    MATH  Google Scholar 

  3. Beckert, B., Hähnle, R., Schmitt, P. (eds.): Verification of Object-Oriented Software: The KeY Approach. LNCS, vol. 4334. Springer, Heidelberg (2006)

    Google Scholar 

  4. Beckert, B., Platzer, A.: Dynamic logic with non-rigid functions: A basis for object-oriented program verification. In: Furbach, U., Shankar, N. (eds.) IJCAR 2006. LNCS (LNAI), vol. 4130, pp. 266–280. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  5. Heisel, M., Reif, W., Stephan, W.: Program verification by symbolic execution and induction. In: Knuth, E., Neuhold, E.J. (eds.) Operating Systems 1982. LNCS, vol. 152, Springer, Heidelberg (1985)

    Google Scholar 

  6. Pasareanu, 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 

  7. Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# programming system: an overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  8. Baum, M.: Debugging by visualizing of symbolic execution. Master’s thesis, Dept.of Computer Science, Institute for Theoretical Computer Science (June 2007)

    Google Scholar 

  9. de Halleux, J., Tillmann, N.: Parameterized unit testing with Pex. In: Beckert, B., Hähnle, R. (eds.) TAP 2008. LNCS, vol. 4966, pp. 171–181. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  10. Engel, C., Hähnle, R.: Generating unit tests from formal proofs. In: Gurevich, Y., Meyer, B. (eds.) TAP 2007. LNCS, vol. 4454, pp. 169–188. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  11. Stenzel, K.: A formally verified calculus for full Java Card. In: Rattray, C., Maharaj, S., Shankland, C. (eds.) AMAST 2004. LNCS, vol. 3116, pp. 491–505. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  12. Deng, X., Lee, J.: Robby: Bogor/Kiasan: a k-bounded symbolic execution for checking strong heap properties of open systems. In: Proc. 21st IEEE/ASM Intl. Conference on Automated Software Engineering, Tokyo, Japan, pp. 157–166. IEEE Computer Society, Los Alamitos (2006)

    Google Scholar 

  13. Jacobs, B., Piessens, F.: The VeriFast program verifier. Technical Report CW-520, Department of Computer Science, Katholieke Universiteit Leuven (August 2008)

    Google Scholar 

  14. Schultz, U.P., Lawall, J.L., Consel, C.: Automatic program specialization for java. ACM Transactions on Programming Languages and Systems 25 (2003)

    Google Scholar 

  15. Bubel, R., Hähnle, R., Weiss, B.: Abstract interpretation of symbolic execution with explicit state updates. In: de Boer, F.S., Bonsangue, M.M., Madelaine, E. (eds.) FMCO 2008. LNCS, vol. 5751, pp. 247–277. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  16. Weiß, B.: Predicate abstraction in a program logic calculus. In: Leuschel, M., Wehrheim, H. (eds.) IFM 2009. LNCS, vol. 5423, pp. 136–150. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  17. Engel, C., Roth, A., Schmitt, P.H., WeiĂź, B.: Verification of modifies clauses in dynamic logic with non-rigid functions. Technical Report 2009-9, Department of Computer Science, University of Karlsruhe (2009)

    Google Scholar 

  18. Sahlin, D.: Mixtus: an automatic partial evaluator for full prolog. New Gen. Comput. 12(1), 7–51 (1993)

    Article  MATH  Google Scholar 

  19. Glenstrup, A.J., Makholm, H., Secher, J.P.: C-mix: Specialization of c programs. Partial Evaluation, 108–154 (1998)

    Google Scholar 

  20. Turchin, V.F.: The concept of a supercompiler. ACM Trans. Program. Lang. Syst. 8(3), 292–325 (1986)

    Article  MATH  Google Scholar 

  21. Albert, E., Gomez-Zamalloa, M., Puebla, G.: PET: a partial evaluation-based test case generation tool for Java bytecode. In: ACM SIGPLAN WS on Partial Evaluation and Semantics-based Program Manipulation. ACM Press, New York (2010)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Bubel, R., Hähnle, R., Ji, R. (2010). Interleaving Symbolic Execution and Partial Evaluation. In: de Boer, F.S., Bonsangue, M.M., Hallerstede, S., Leuschel, M. (eds) Formal Methods for Components and Objects. FMCO 2009. Lecture Notes in Computer Science, vol 6286. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-17071-3_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-17071-3_7

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-17070-6

  • Online ISBN: 978-3-642-17071-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics