A Proof Slicing Framework for Program Verification

  • Ton Chanh Le
  • Cristian Gherghina
  • Razvan Voicu
  • Wei-Ngan Chin
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8144)

Abstract

In the context of program verification, we propose a formal framework for proof slicing that can aggressively reduce the size of proof obligations as a means of performance improvement. In particular, each large proof obligation may be broken down into smaller proofs, for which the overall processing cost can be greatly reduced, and be even more effective under proof caching. Our proposal is built on top of existing automatic provers, including the state-of-the-art prover Z3, and can also be viewed as a re-engineering effort in proof decomposition that attempts to avoid large-sized proofs for which these provers may be particularly inefficient. In our approach, we first develop a calculus that formalizes a complete proof slicing procedure, which is followed by the development of an aggressive proof slicing method. Retaining completeness is important, and thus in our experiments the complete method serves as a backup for the cases when the aggressive procedure fails. The foundations of the aggressive slicing procedure are based on a novel lightweight annotation scheme that captures weak links between sub-formulas of a proof obligation; the annotations can be inferred automatically in practice, and thus both methods are fully automated.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Amir, E., McIlraith, S.: Partition-based logical reasoning for first-order and propositional theories. Artificial Intelligence 162, 49–88 (2005)MathSciNetCrossRefMATHGoogle Scholar
  2. 2.
    Biere, A., Sinz, C.: Decomposing SAT problems into connected components. JSAT (2006)Google Scholar
  3. 3.
    Buss, S.R.: An introduction to proof theory. In: Handbook of Proof Theory (1998)Google Scholar
  4. 4.
    de Moura, L., Bjørner, N.: Relevancy propagation. Technical report, MSR (2007)Google Scholar
  5. 5.
    de Moura, L., Bjørner, N.: Z3: An Efficient SMT Solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  6. 6.
    Do, H., Elbaum, S.G., Rothermel, G.: Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact. In: ESE, vol. 10 (2005)Google Scholar
  7. 7.
    Dolzmann, A., Sturm, T.: Redlog: computer algebra meets computer logic. SIGSAM Bulletin 31, 2–9 (1997)CrossRefGoogle Scholar
  8. 8.
    Fietzke, A., Weidenbach, C.: Labelled splitting. Annals of MAI 55 (2009)Google Scholar
  9. 9.
    Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. In: POPL (2004)Google Scholar
  10. 10.
    Huang, H., Tsai, W.-T., Paul, R.A.: Proof slicing with application to model checking web services. In: ISORC, pp. 292–299 (2005)Google Scholar
  11. 11.
    Klarlund, N., Moller, A.: MONA Version 1.4 - User Manual. BRICS Notes Series (2001)Google Scholar
  12. 12.
    Lang, J., Liberatore, P., Marquis, P.: Propositional independence: formula-variable independence and forgetting. Journal of Artificial Intelligence Research 18 (2003)Google Scholar
  13. 13.
    Le, T.C., Gherghina, C., Voicu, R., Chin, W.N.: A Proof Slicing Framework for Program Verification (2013), http://www.comp.nus.edu.sg/~chanhle/icfem13-long.pdf
  14. 14.
    Leino, K.R.M., Moskal, M., Schulte, W.: Verification condition splitting (2008)Google Scholar
  15. 15.
    McMillan, K.L.: An interpolating theorem prover. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 16–30. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  16. 16.
    Meng, J., Paulson, L.C.: Lightweight relevance filtering for machine-generated resolution problems. Journal of Applied Logic, 41–57 (2009)Google Scholar
  17. 17.
    Navarro Pérez, J.A., Rybalchenko, A.: Separation logic + superposition calculus = heap theorem prover. In: PLDI, pp. 556–566 (2011)Google Scholar
  18. 18.
    Nguyen, H.H., David, C., Qin, S.C., Chin, W.N.: Automated Verification of Shape And Size Properties via Separation Logic. In: VMCAI, pp. 251–266 (2007)Google Scholar
  19. 19.
    O’Hearn, P.W., Reynolds, J., Yang, H.: Local Reasoning about Programs that Alter Data Structures. In: Fribourg, L. (ed.) CSL 2001. LNCS, vol. 2142, pp. 1–19. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  20. 20.
    Park, T.J., Gelder, A.V.: Partitioning methods for satisfiability testing on large formulas. In: McRobbie, M.A., Slaney, J.K. (eds.) CADE 1996. LNCS, vol. 1104, pp. 748–762. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  21. 21.
    Pugh, W.: The Omega Test: A fast practical integer programming algorithm for dependence analysis. Communications of the ACM 8, 102–114 (1992)CrossRefGoogle Scholar
  22. 22.
    Hong, H.S., Lee, I., Sokolsky, O.: Abstract slicing: A new approach to program slicing based on abstract interpretation and model checking. In: SCAM (2005)Google Scholar
  23. 23.
    Sørensen, U.: Slicing for Uppaal. Technical report, AALBORG University (2008)Google Scholar
  24. 24.
    Frama-C Software Analyser System (2012), http://frama-c.com
  25. 25.
    Torres-Jimenez, J., Vega-Garcia, L., Coutino-Gomez, C.A., Cartujano-Escobar, F.J.: SSTP: An approach to Solve SAT instances Through Partition. In: WSEAS (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Ton Chanh Le
    • 1
  • Cristian Gherghina
    • 1
  • Razvan Voicu
    • 1
  • Wei-Ngan Chin
    • 1
  1. 1.Department of Computer ScienceNational University of SingaporeSingapore

Personalised recommendations