A Semantics for Program Analysis in Narrowing-Based Functional Logic Languages

  • Michael Hanus
  • Salvador Lucas
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1722)


We introduce a denotational characterization of narrowing, the computational engine of many functional logic languages. We use a functional domain for giving a denotation to the narrowing space associated to a given initial expression under an arbitrary narrowing strategy. Such a semantic description highlights (and favours) the operational notion of evaluation instead of the more usual model-theoretic notion of interpretation as the basis for the semantic description. The motivation is to obtain an abstract semantics which encodes information about the real operational framework used by a given (narrowing-based) functional logic language. Our aim is to provide a general, suitable, and accurate framework for the analysis of functional logic programs.


domain theory functional logic languages narrowing program analysis semantics 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abramsky, S.: Abstract Interpretation, Logical Relations and Kan Extensions. Journal of Logic and Computation 1(1), 5–40 (1990)zbMATHCrossRefMathSciNetGoogle Scholar
  2. 2.
    Abramsky, S.: Domain Theory in Logic Form. Annals of Pure and Applied Logic 51, 1–77 (1991)zbMATHCrossRefMathSciNetGoogle Scholar
  3. 3.
    Alpuente, M., Falaschi, M., Manzo, F.: Analyses of Unsatisfiability for Equational Logic Programming. Journal of Logic Programming 22(3), 221–252 (1995)CrossRefMathSciNetGoogle Scholar
  4. 4.
    Antoy, S., Echahed, R., Hanus, M.: A needed narrowing strategy. In: Conference Record of the ACM Symposium on Principles of Programming Languages, POPL 1994, pp. 268–279. ACM Press, New York (1994)CrossRefGoogle Scholar
  5. 5.
    de Bakker, J.W.: Least Fixed Points Revisited. Theoretical Computer Science 2, 155–181 (1976)zbMATHCrossRefMathSciNetGoogle Scholar
  6. 6.
    Baader, F., Nipkow, T.: Term Rewriting and All That. Cambridge University Press, Cambridge (1998)Google Scholar
  7. 7.
    Dybjer, P.: Inverse Image Analysis Generalises Strictness Analysis. Information and Computation 90, 194–216 (1991)zbMATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    Goguen, J.A., Thatcher, J.W., Wagner, E.G., Wright, J.B.: Initial Algebra Semantics and Continuous Algebras. Journal of the ACM 24(1), 68–95 (1977)zbMATHCrossRefMathSciNetGoogle Scholar
  9. 9.
    González-Moreno, J.C., Hortalá-González, M.T., López-Fraguas, F.J., Rodríguez-Artalejo, M.: An approach to declarative programming based on a rewriting logic. Journal of Logic Programming 40(1), 47–87 (1999)zbMATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    Gunter, C.A.: Semantics of Programming Languages. The MIT Press, Cambridge (1992)zbMATHGoogle Scholar
  11. 11.
    Hanus, M.: Towards the Global Optimization of Functional Logic Programs. In: Fritzson, P.A. (ed.) CC 1994. LNCS, vol. 786, pp. 68–82. Springer, Heidelberg (1994)Google Scholar
  12. 12.
    Hanus, M.: A Unified Computation Model for Functional and Logic Programming. In: Conference Record of the 24th Symposium on Principles of Programming Languages POPL 1997, pp. 80–93. ACM Press, New York (1997)CrossRefGoogle Scholar
  13. 13.
    Hanus, M., Zartmann, F.: Mode Analysis of Functional Logic Programs. In: LeCharlier, B. (ed.) SAS 1994. LNCS, vol. 864, pp. 26–42. Springer, Heidelberg (1994)Google Scholar
  14. 14.
    Hullot, J.-M.: Canonical forms and unification. In: Karlsson, R., Lingas, A. (eds.) SWAT 1988. LNCS, vol. 318-334, Springer, Heidelberg (1988)Google Scholar
  15. 15.
    Moreno-Navarro, J.J., Kuchen, H., Mariño, J., Winkler, S., Hans, W.: Efficient Lazy Narrowing using Demandedness Analysis. In: Penjam, J., Bruynooghe, M. (eds.) PLILP 1993. LNCS, vol. 714, pp. 167–183. Springer, Heidelberg (1993)Google Scholar
  16. 16.
    Moreno-Navarro, J.J., Rodríguez-Artalejo, M.: Logic programming with functions and predicates: the language BABEL. Journal of Logic Programming 12, 191–223 (1992)zbMATHCrossRefGoogle Scholar
  17. 17.
    Mycroft, A.: The theory and practice of transforming call-by-need into callby- value. In: Robinet, B. (ed.) Programming 1980. LNCS, vol. 83, pp. 269–281. Springer, Heidelberg (1980)Google Scholar
  18. 18.
    Reddy, U.S.: Narrowing as the Operational Semantics of Functional Languages. In: Proc. of IEEE International Symposium on Logic Programming, pp. 138–151 (1985)Google Scholar
  19. 19.
    Scott, D.: Domains for Denotational Semantics. In: Nielsen, M., Schmidt, E.M. (eds.) ICALP 1982. LNCS, vol. 140, pp. 577–613. Springer, Heidelberg (1982)CrossRefGoogle Scholar
  20. 20.
    Scott, D.: Lectures on a mathematical theory of computation. Monograph PRG- 19. Computing Laboratory, Oxford University (1981)Google Scholar
  21. 21.
    Stoltenberg-Hansen, V., Lindström, I., Griffr, E.R.: Mathematical Theory of Domains. Cambridge University Press, Cambridge (1994)zbMATHGoogle Scholar
  22. 22.
    Vickers, S.: Topology via Logic. Cambridge University Press, Cambridge (1989)zbMATHGoogle Scholar
  23. 23.
    Zartmann, F.: Denotational Abstract Interpretation of Functional Logic Programs. In: Van Hentenryck, P. (ed.) SAS 1997. LNCS, vol. 1302, pp. 141–159. Springer, Heidelberg (1997)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Michael Hanus
    • 1
  • Salvador Lucas
    • 2
  1. 1.Informatik IIRWTH AachenAachenGermany
  2. 2.DSICUPVValenciaSpain

Personalised recommendations