A Flexible Framework for Dynamic and Static Slicing of Logic Programs

  • Wamberto Weber Vasconcelos
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1551)


Slicing is a technique for automatically obtaining subparts of a program with a collective meaning. When the slicing takes into account the actual execution of the program, it is said to be dynamic; when only statically available information is used, it is said to be static. In this paper we describe a flexible framework to slice logic programs that accommodates both dynamic and static approaches naturally. Our framework addresses practical aspects of logic programs such as different executions, system predicates and side-effects and can be customized to any logic language, provided we have its (concrete or abstract) interpreter and information on the behavior of system predicates.


Logic program slicing program analysis & understanding 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    H. Agrawal, R. A. DeMillo, and E. H. Spafford. Dynamic Slicing in the Presence of Unconstrained Pointers. In Proc. TAV4. ACM/IEEE, Oct. 1993.Google Scholar
  2. [2]
    H. Aït-Kaci. Warren’s Abstract Machine. MIT Press, USA, 1991.Google Scholar
  3. [3]
    K. R. Apt. From Logic Programming to Prolog. Prentice-Hall, U.K., 1997.Google Scholar
  4. [4]
    V. Berzins, editor. Software Merging and Slicing. IEEE Computer Society, 1995.Google Scholar
  5. [5]
    A. W. Bowles, D. Robertson, W. W. Vasconcelos, M. Vargas-Vera, and D. Bental. Applying Prolog Programming Techniques. Int’l Journal of Human-Computer Studies, 41(3):329–350, Sept. 1994.CrossRefGoogle Scholar
  6. [6]
    J. Boye, J. Paaki, and J. Ma luszyński. Synthesis of Directionality Information for Functional Logic Programs. In Lect. Notes in Comp. Sci., Vol. 724. Springer-Verlag, 1993.Google Scholar
  7. [7]
    W. F. Clocksin and C. S. Mellish. Programming in Prolog. Springer-Verlag, 1987.Google Scholar
  8. [8]
    P. Cousout and R. Cousout. Abstract Interpretation and Application to Logic Programs. Journal of Logic Programming, 13(2–3):103–179, 1992.CrossRefMathSciNetGoogle Scholar
  9. [9]
    S. K. Debray and D. S. Warren. Automatic Mode Inference for Prolog Programs. In IEEE Symp. on Logic Progr., 1986.Google Scholar
  10. [10]
    R. A. DeMillo, H. Pan, and E. Spafford. Critical Slicing for Software Fault Localization. In Proc. of ISSTA’96. ACM, 1996.Google Scholar
  11. [11]
    M. Ducassé and J. Noyé. Logic Programming Environments: Dynamic Program Analysis and Debugging. Journal of Logic Programming, 19, 20:351–384, 1994.CrossRefMathSciNetGoogle Scholar
  12. [12]
    K. B. Gallagher and J. R. Lyle. Using Program Slicing in Software Maintenance. IEEE Trans. on Soft. Eng., 17(8):751–761, Aug. 1991.CrossRefGoogle Scholar
  13. [13]
    V. Gouranton. Deriving Analysers by Folding/Unfolding of Natural Semantics and a Case Study: Slicing. In Proc. SAS’98, Lect. Notes in Comp. Sci., Vol. 1503. Springer-Verlag, 1998.Google Scholar
  14. [14]
    V. Gouranton and D. Le Métayer.Dynamic Slicing: a Generic Analysis based on a Natural Semantics Format. RR 3375, INRIA, France, Mar. 1998.Google Scholar
  15. [15]
    T. Guymóthy and J. Paaki. Static Slicing of Logic Programs. In Proc. 2nd. Int’l Workshop on Automated and Algorithmic Debugging, IRISA, France, 1995.Google Scholar
  16. [16]
    S. Horwitz, T. Reps, and D. Binkley. Interprocedural Slicing Using Dependence Graphs. ACM Trans. on Program. Lang. & Systems, 12(1):26–60, Jan. 1990.CrossRefGoogle Scholar
  17. [17]
    H. Huang, W. T. Tsai, and S. Subramanian. Generalized Program Slicing for Software Maintenance. In Proc. SEKE’96, Nevada, U.S.A., 1996.Google Scholar
  18. [18]
    D. Jackson and E. J. Rollins. A New Model of Program Dependences for Reverse Engineering. In Proc. SIGSOFT’94. ACM, 1994.Google Scholar
  19. [19]
    T. Kanamori and T. Kawamura. Analyzing Success Patterns of Logic Programs by Abstract Interpretation. Technical Report 279, ICOT, June 1987.Google Scholar
  20. [20]
    B. Korel and J. Laski. Dynamic Program Slicing. Inf. Proc. Letters, 29(3):155–163, Oct. 1988.zbMATHCrossRefGoogle Scholar
  21. [21]
    J. W. Lloyd. Foundations of Logic Programming. Springer-Verlag, 1993.Google Scholar
  22. [22]
    H. Mannila and E. Ukkonen. Flow Analysis of Prolog Programs. In IEEE Symp. on Logic Progr., 1987.Google Scholar
  23. [23]
    C. Mellish. Abstract Interpretation of Prolog Programs. In Abstract Interpretation of Declarative Languages. Ellis Horwood, 1987.Google Scholar
  24. [24]
    T. Reps, S. Horwitz, M. Sagiv, and G. Rosay. Speeding Up Slicing. In Proc. SIGSOFT’94. ACM, 1994.Google Scholar
  25. [25]
    D. Robertson. A Simple Prolog Techniques Editor for Novice Users. In 3rd Annual Conf. on Logic Progr. Springer-Verlag, 1991.Google Scholar
  26. [26]
    S. Schoenig and M. Ducassé. A Backward Slicing Algorithm for Prolog. In Proc. SAS’96, Lect. Notes in Comp. Sci., Vol. 1145. Springer-Verlag, 1996.Google Scholar
  27. [27]
    R. W. Sebesta. Concepts of Programming Languages. Addison-Wesley, 1996.Google Scholar
  28. [28]
    A. M. Sloane and J. Holdsworth. Beyond Traditional Program Slicing. In Proc. of ISSTA’96. ACM, 1996.Google Scholar
  29. [29]
    L. Sterling and E. Shapiro. The Art of Prolog: Advanced Programming Techniques. MIT Press, 1986.Google Scholar
  30. [30]
    F. Tip. A Survey of Program Slicing Techniques. Journal of Prog. Lang., 3(3):121–189, Sept. 1995.Google Scholar
  31. [31]
    W. W. Vasconcelos. A Method of Extracting Prolog Programming Techniques. Technical Paper 27, DAI, Edinburgh Univ., 1994.Google Scholar
  32. [32]
    W. W. Vasconcelos. Extracting, Organising, Designing and Reusing Prolog Programming Techniques. PhD thesis, DAI, Edinburgh Univ., Aug. 1995.Google Scholar
  33. [33]
    W. W. Vasconcelos and M. A. T. Aragão. Slicing Logic Programs. Tech. Report, 1998. Available from authors.Google Scholar
  34. [34]
    W. W. Vasconcelos and N. E. Fuchs. Prolog Program Development via Enhanced Schema-Based Transformations. RP 776, DAI, Edinburgh Univ., 1996.Google Scholar
  35. [35]
    M. Weiser. Programmers use Slices when Debugging. Comm. of the ACM, 25(7):446–452, 1982.CrossRefGoogle Scholar
  36. [36]
    M. Weiser. Program Slicing. IEEE Trans. on Soft. Eng., SE-10(4):352–357, 1984.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Wamberto Weber Vasconcelos
    • 1
  1. 1.Department of Statistics & ComputingState University of CearáCearáBrazil

Personalised recommendations