Advertisement

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)

Abstract

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.

Keywords

Logic program slicing program analysis & understanding 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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