Narrowing Failure in Functional Logic Programming

  • Francisco Javier López-Fraguas
  • Jaime Sánchez-Hernández
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2441)


Negation as failure is an important language feature within the logic programming paradigm. The natural notion generalizing negation as failure in a functional logic setting is that of finite failure of reduction. In previous works we have shown the interest of using such programming construct when writing functional logic programs, and we have given a logical status to failure by means of proof calculi designed to deduce failures from programs. In this paper we address the problem of the operational mechanism for the execution of functional logic programs using failure. Our main contribution is the proposal of a narrowing relation able to deal with failures, which is constructive in the usual sense of the term in the context of negation, that is, narrowing is able to find substitutions for variables even in presence of failures. As main technical results, we prove correctness and completeness of the narrowing relation with respect to the proof-theoretic semantics.


Logic Program Logic Programming Denotational Semantic Constraint Logic Programming Functional Logic 
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]
    M. Abengózar-Carneros et al. \( \mathcal{T}\mathcal{O}\mathcal{Y} \): a multiparadigm declarative language, version 2.0. Technical report, Dep. SIP, UCM Madrid, January 2001. 212, 213Google Scholar
  2. [2]
    S. Antoy. Definitional trees. In Proc. ALP’92, pages 143–157. Springer LNCS 632, 1992. 214, 217Google Scholar
  3. [3]
    S. Antoy. Constructor-based conditional narrowing. In Proc. PPDP’01, pages 199–206. ACM Press, 2001. 217, 225Google Scholar
  4. [4]
    K.R. Apt and R. Bol. Logic programming and negation: A survey. Journal of Logic Programming, 19&20:9–71, 1994. 212CrossRefMathSciNetGoogle Scholar
  5. [5]
    D. Chan. Constructive negation based on the completed database. In Proc. ICSLP’88, pages 111–125, 1988. 214Google Scholar
  6. [6]
    K. L. Clark. Negation as failure. In H. Gallaire and J. Minker, editors, Logic and Data Bases, pages 293–322. Plenum Press, 1978. 212Google Scholar
  7. [7]
    J.C. González-Moreno, T. Hortalá-González, F. J. López-Fraguas, and M. Rodríguez-Artalejo. A rewriting logic for declarative programming. In Proc. ESOP’96, pages 156–172. Springer LNCS 1058, 1996. 213, 225Google Scholar
  8. [8]
    J.C. González-Moreno, T. Hortalá-González, F. J. López-Fraguas, and M. Rodríguez-Artalejo. An approach to declarative programming based on a rewriting logic. Journal of Logic Programming, 40(1):47–87, 1999. 212, 213, 218, 225zbMATHCrossRefMathSciNetGoogle Scholar
  9. [9]
    M. Hanus. The integration of functions into logic programming: From theory to practice. Journal of Logic Programming, 19&20:583–628, 1994. 212CrossRefMathSciNetGoogle Scholar
  10. [10]
    M. Hanus (ed.). Curry: An integrated functional logic language. Available at, February 2000. 212, 213
  11. [11]
    F. J. López-Fraguas and J. Sánchez-Hernández. \( \mathcal{T}\mathcal{O}\mathcal{Y} \): A multiparadigm declarative system. In Proc. RTA’99, Springer LNCS 1631, pages 244–247, 1999. 212, 213Google Scholar
  12. [12]
    F. J. López-Fraguas and J. Sánchez-Hernández. Proving failure in functional logic programs. In Proc. CL’00, Springer LNAI 1861, pages 179–193, 2000. 213, 214, 218Google Scholar
  13. [13]
    F. J. López-Fraguas and J. Sánchez-Hernández. Functional logic programming with failure: A set-oriented view. In Proc. LPAR’01, Springer LNAI 2250, pages 455–469, 2001. 213, 214, 217, 218Google Scholar
  14. [14]
    F. J. López-Fraguas and J. Sánchez-Hernández. Narrowing failure in functional logic programming (long version). Available at, 2002. 215
  15. [15]
    F. J. López-Fraguas and J. Sánchez-Hernández. A proof theoretic approach to failure in functional logic programming. Draft available at, 2002. 213, 214
  16. [16]
    J. J. Moreno-Navarro. Default rules: An extension of constructive negation for narrowing-based languages. In Proc. ICLP’94, pages 535–549. MIT Press, 1994. 214Google Scholar
  17. [17]
    J. J. Moreno-Navarro. Extending constructive negation for partial functions in lazy functional-logic languages. In Proc. ELP’96, pages 213–227. Springer LNAI 1050, 1996. 214, 216Google Scholar
  18. [18]
    J. C. Reynolds. Theories of Programing Languages. Cambridge Univ. Press, 1998. 216Google Scholar
  19. [19]
    P. J. Stuckey. Constructive negation for constraint logic programming. In Proc. LICS’91, pages 328–339, 1991. 214Google Scholar
  20. [20]
    P. J. Stuckey. Negation and constraint logic programming. Information and Computation, 118:12–33, 1995. 214zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Francisco Javier López-Fraguas
    • 1
  • Jaime Sánchez-Hernández
    • 1
  1. 1.Dep. Sistemas Informáticos y ProgramaciónUniv. Complutense de MadridMadrid

Personalised recommendations