Formalizing a Framework for Dynamic Slicing of Program Dependence Graphs in Isabelle/HOL

  • Daniel Wasserrab
  • Andreas Lochbihler
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5170)


Slicing is a widely-used technique with applications in e.g. compiler technology and software security. Thus verification of algorithms in these areas is often based on the correctness of slicing, which should ideally be proven independent of concrete programming languages and with the help of well-known verifying techniques such as proof assistants. As a first step in this direction, this contribution presents a framework for dynamic slicing based on control flow and program dependence graphs and machine checked in Isabelle/HOL. Abstracting from concrete syntax we base the framework on a graph representation of the program fulfilling certain structural and well-formedness properties.


Source Node Target Node Proof Assistant Concrete Syntax Control Flow Graph 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Agrawal, H., Horgan, J.R.: Dynamic program slicing. In: Proc. of PLDI 1990, pp. 246–256. ACM Press, New York (1990)Google Scholar
  2. 2.
    Amtoft, T.: Slicing for modern program structures: a theory for eliminating irrelevant loops. Information Processig Letters 106(2), 45–51 (2008)MathSciNetCrossRefzbMATHGoogle Scholar
  3. 3.
    Ballarin, C.: Locales and locale expressions in Isabelle/Isar. In: Berardi, S., Coppo, M., Damiani, F. (eds.) TYPES 2003. LNCS, vol. 3085, pp. 34–50. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  4. 4.
    Blech, J.O., Gesellensetter, L., Glesner, S.: Formal verification of dead code elimination in Isabelle/HOL. In: Proc. of SEFM 2005, pp. 200–209. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  5. 5.
    Gouranton, V., Métayer, D.L.: Dynamic slicing: a generic analysis based on a natural semantics format. Journal of Logic and Computation 9(6), 835–871 (1999)MathSciNetCrossRefzbMATHGoogle Scholar
  6. 6.
    Jhala, R., Majumdar, R.: Path slicing. In: Proc. of PLDI 2005, pp. 38–47. ACM Press, New York (2005)Google Scholar
  7. 7.
    Klein, G., Nipkow, T.: A Machine-Checked Model for a Java-Like Language, Virtual Machine and Compiler. ACM TOPLAS 28(4), 619–695 (2006)CrossRefGoogle Scholar
  8. 8.
    Krinke, J.: Program slicing. Handbook of Software Engineering and Knowledge Engineering 3, 307–332 (2004)Google Scholar
  9. 9.
    Lammich, P., Müller-Olm, M.: Precise fixpoint-based analysis of programs with thread-creation and procedures. In: Caires, L., Vasconcelos, V.T. (eds.) CONCUR. LNCS, vol. 4703, pp. 287–302. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  10. 10.
    Leroy, X.: Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In: Proc. of POPL 2006, pp. 42–54. ACM Press, New York (2006)Google Scholar
  11. 11.
    Nielson, F., Nielson, H.R., Hankin, C.: Principles of Program Analysis. Springer, Heidelberg (1999)CrossRefzbMATHGoogle Scholar
  12. 12.
    Nipkow, T., Paulson, L.C., Wenzel, M.T.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)zbMATHGoogle Scholar
  13. 13.
    Ranganath, V.P., Amtoft, T., Banerjee, A., Hatcliff, J., Dwyer, M.B.: A new foundation for control dependence and slicing for modern program structures. ACM TOPLAS 29(5), 27 (2007)CrossRefzbMATHGoogle Scholar
  14. 14.
    Reps, T., Yang, W.: The semantics of program slicing. Technical Report CS-TR-1988-777, University of Wisconsin-Madison (1988)Google Scholar
  15. 15.
    Tip, F.: A survey of program slicing techniques. Journal of Programming Languages 3(3), 121–189 (1995)Google Scholar
  16. 16.
    Ward, M., Zedan, H.: Slicing as a program transformation. ACM TOPLAS 29(2), 1–53 (2007)CrossRefGoogle Scholar
  17. 17.
    Wasserrab, D., Nipkow, T., Snelting, G., Tip, F.: An operational semantics and type safety proof for multiple inheritance in C++. In: Proc. of OOPSLA 2006, pp. 345–362. ACM Press, New York (2006)Google Scholar
  18. 18.
    Weiser, M.: Program slices: formal, psychological, and practical investigations of an automatic program abstraction method. PhD thesis, University of Michigan (1979)Google Scholar
  19. 19.
    Wolfe, M.J.: High Performance Compilers for Parallel Computing. Addison-Wesley, Reading (1995)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Daniel Wasserrab
    • 1
  • Andreas Lochbihler
    • 1
  1. 1.Universität KarlsruheGermany

Personalised recommendations