Synthesis of eureka predicates for developing logic programs

  • Maurizio Proietti
  • Alberto Pettorossi
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 432)


We consider the problem of inventing new predicates when developing logic programs by transformation. Those predicates, often called eureka predicates, improve program efficiency by eliminating redundant computations and avoiding multiple visits of data structures. It can be shown that no general method exists for inventing the required eureka predicates for a given initial program. We introduce here two strategies, the Loop Absorption Strategy and the Generalization Strategy, which in many cases determine the new predicates to be defined during program transformation. We study the properties of those strategies and we present some classes of programs in which they are successful.


Logic Program Generalization Step Recurrent Pattern Program Transformation Generalization Strategy 
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.

7. References

  1. [Azibi 87]
    Azibi, N.: "TREQUASI: Un système pour la transformation automatique de programmes PROLOG récursifs en quasi-itératifs, These, Université de Paris-Sud, Centre d'Orsay, 1987.Google Scholar
  2. [Bird 84]
    Bird, R.S.: "The Promotion and Accumulation Strategies in Transformational Programming", Toplas ACM 6 (4) 1984, pp. 487–504.CrossRefGoogle Scholar
  3. [Boyer-Moore 75]
    Boyer, R.S. and Moore, J.S.: "Proving Theorems about LISP Functions", JACM 22 (1) 1975, pp. 129–144.CrossRefGoogle Scholar
  4. [Bossi et al. 88]
    Bossi, A., Cocco, N. and Dulli S.: "A Method for Specializing Logic Programs", Proc. 3rd Italian Conf. on Logic Programming, GULP 88, Roma, 1988, pp. 97–114.Google Scholar
  5. [Bruynooghe et al. 87]
    Bruynooghe, M., Janssens G., Callebaut, A., and Demoen, B.: "Abstract Interpretation: Toward the Global Optimization of Prolog Programs", Proc. Symposium on Logic Programming, IEEE Press, 1987, pp. 192–204.Google Scholar
  6. [Bruynooghe et al. 89]
    Bruynooghe, M., De Raedt, L., and De Schreye D.: "Explanation Based Program Transformation", R. CW-89, Katholieke Universiteit Leuven, Belgium, 1989 (also in Proc IJCAI 89).Google Scholar
  7. [Burstall-Darlington 77]
    Burstall, R.M. and Darlington, J.: "A Transformation System for Developing Recursive Programs", JACM, Vol. 24, No. 1, January 1977, pp. 44–67.CrossRefGoogle Scholar
  8. [Clark et al. 87]
    Clark, K., McCabe, F., Johns, N., and Spenser, C.: "LPA MacPROLOG Reference Manual" Logic Programming Associates, London [1987].Google Scholar
  9. [Darlington 81]
    Darlington, J.: "An Experimental Program Transformation and Synthesis System", Artificial Intelligence 16, 1981, pp. 1–46.CrossRefGoogle Scholar
  10. [Debray 88]
    Debray, S.K.: "Unfold/Fold Transformations and Loop Optimization of Logic Programs", Proc. SIGPLAN 88 Conf. on Programming Language Design and Implementation, Atlanta, 1988.Google Scholar
  11. [Debray-Warren 88]
    Debray, S.K. and Warren, D.S.: "Automatic Mode Inference for Logic Programs", J. Logic Programming 1988, Vol. 5, pp. 207–229.CrossRefGoogle Scholar
  12. [Deransart-Maluszynski 85]
    Deransart, P. and Maluszynski, J.: "Relating Logic Programs and Attribute Grammars" INRIA Report n.393, 1985.Google Scholar
  13. [van Emden-Kowalski 76]
    van Emden, M.H. and Kowalski, R.: "The Semantics of Predicate Logic as a Programming Language", JACM, Vol. 23, No. 4, October 1976, pp. 733–742.CrossRefGoogle Scholar
  14. [Feather 86]
    Feather, M.S.: "A Survey and Classification of Some Program Transformation Techniques", Proc. TC2 IFIP Working Conf. on Program Specification and Transformation, Bad Tölz, Germany, 1986.Google Scholar
  15. [Hogger 81]
    Hogger, C.J.: "Derivation of Logic Programs", JACM, No. 28, 2, 1981, pp. 372–392.CrossRefGoogle Scholar
  16. [Kawamura-Kanamori 88]
    Kawamura, T. and Kanamori, T.: "Preservation of Stronger Equivalence in Unfold/Fold Logic Program Transformation", Proc. Int. Conf. on FGCS, Tokyo, 1988, pp. 413–422.Google Scholar
  17. [Lloyd 87]
    Lloyd, J.W.: "Foundations of Logic Programming", Springer-Verlag, Berlin, Heidelberg, New York, Tokyo, 2nd edition, 1987.Google Scholar
  18. [Nakagawa 85]
    Nakagawa, H.: "Prolog Program Transformations and Tree Manipulation Algorithms", J. Logic Programming 1985, 2, pp. 77–91.CrossRefMathSciNetGoogle Scholar
  19. [Pettorossi-Proietti 89]
    Pettorossi, A. and Proietti, M.: "Decidability Results and Characterization of Strategies for the Development of Logic Programs", Proc. 6th Int. Conf. on Logic Programming, Lisboa (Portugal) 1989, pp. 539–553.Google Scholar
  20. [Proietti-Pettorossi 89]
    Proietti, M. and Pettorossi, A.: "The Loop Absorption and the Generalization Strategies for the Development of Logic Programs", Report IASI-CNR, Roma, Italy, (Dec. 1989).Google Scholar
  21. [Sterling-Lakhotia 88]
    Sterling, L. and Lakhotia, A.: "Composing Prolog Meta-Interpreters", Proc. 5th Int. Conf. on Logic Programming, Seattle, WA (USA), 1988.Google Scholar
  22. [Tamaki-Sato 84]
    Tamaki, H. and Sato, T.: "Unfold/Fold Transformation of Logic Programs", Proc. 2nd Int. Conf. on Logic Programming, Uppsala, 1984.Google Scholar
  23. [Wadler 84]
    Wadler, P. L.: "Listless is Better than Laziness" Ph.D. Dissertation, Carnegie-Mellon University, August 1984.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1990

Authors and Affiliations

  • Maurizio Proietti
    • 1
  • Alberto Pettorossi
    • 2
  1. 1.IASI-CNRRomaItaly
  2. 2.Department of ElectronicsUniversity of Roma Tor VergataRomaItaly

Personalised recommendations