New Generation Computing

, Volume 27, Issue 1, pp 25–56 | Cite as

Implementing Constructive Intensional Negation

  • Julio Mariño
  • Juan José Moreno-Navarro
  • Susana Munoz-Hernandez


Although negation is an active area of research in logic programming, sound and complete implementations are still absent from actual Prolog systems. One of the most promising techniques in the literature is intensional negation (IN), which follows a transformational approach: for each predicate p in a program its negative counterpart intneg(p) is generated. However, implementations of IN have not been included in Prolog environments due, in part, to the lack of details and explicit techniques, such as the treatment of universally quantified goals. In this paper, we describe a variant of IN, which we have called constructive intensional negation (CIN). Unlike earlier proposals, CIN does not resort to a dedicated resolution strategy when dealing with universally quantified formulae, which has been instrumental in having an effective implementation. Therefore, pure SLD resolution is used, what enables the reuse of existing Prolog implementation technology. Among the contributions of this work we can mention not only a full implementation being tested for its integration in the Ciao Prolog system but also some formal results ensuring soundness and completeness with their associated proofs.


Negation Intensional Negation Constraint Logic Programming Program Transformation Logic Programming Implementation Constructive Negation 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    The ECLiPSe website at Imperial College.
  2. 2.
  3. 3.
    Barbuti, R., Mancarella, D., Pedreschi, D. and Turini, F., “Intensional negation of logic programs,” LNCS, 250, pp. 96–110, 1987Google Scholar
  4. 4.
    Barbuti, R., Mancarella, D., Pedreschi, D. and Turini, F. (1990) “A transformational approach to negation in logic programming,”. JLP, 8(3): 201–228zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Bruscoli P., Levi F., Levi G. and Meo M.C., “Compilative constructive negation in constraint logic programs,” in Proc. of the Nineteenth Int. Colloquium on Trees in Algebra and Programming(Tyson, S. ed.), CAAP ’94, LNCS, 787, pp. 52–67, Springer-Verlag, Berlin, 1994Google Scholar
  6. 6.
    Bueno, F., The CIAO Multiparadigm Compiler: A User’s Manual, 1995.Google Scholar
  7. 7.
    Chan, D., “Constructive negation based on the completed database,” in Proc. Int. Conf. on LP’88, pp. 111–125. The MIT Press, 1988.Google Scholar
  8. 8.
    Chan, D., “An extension of constructive negation and its application in coroutining,” in Proc. NACLP’89, pp. 477–493. The MIT Press, 1989.Google Scholar
  9. 9.
    Clark, K.L., “Negation as failure,” in. In Logic and Databases(Gallaire, H. and Minker, J. eds.), pp. 293–322. Plenum Press, New York, 1978.Google Scholar
  10. 10.
    di Pierro, A., Martelli, M. and Palamidessi, C., “Negation as instantiation,” Information and Computation, 120(2), pp. 263–278, 1995zbMATHCrossRefMathSciNetGoogle Scholar
  11. 11.
    Dovier, A., Pontelli, E. and Rossi, G., “A necessary condition for constructive negation in constraint logic programming,” Information Processing Letters, 74, pp. 147–156, 2000CrossRefMathSciNetGoogle Scholar
  12. 12.
    Fages, F., “Constructive negation by pruning,” Journal of Logic Programming, 32(2), 1997.Google Scholar
  13. 13.
    Fitting, M., “A Kripke-Kleene semantics for logic programs,” Journal of Logic Programming, 2(4), pp. 295–312, 1985zbMATHCrossRefMathSciNetGoogle Scholar
  14. 14.
    Hill, P.M. and Lloyd, J.W., The Gödel Programming Language. The MIT Press, 1994.Google Scholar
  15. 15.
    Kunen, K., “Negation in logic programming,” Journal of Logic Programming, 4, pp. 289–308, 1987zbMATHCrossRefMathSciNetGoogle Scholar
  16. 16.
    Lassez, J.L., Maher, M.J. and Marriott, K., “Elimination of negation in term algebras,” in Mathematical Foundations of Computer Science, pp. 1–16, 1991.Google Scholar
  17. 17.
    Leone, N., Pfeifer, G., Faber, W., Eiter, T., Gottlob, G., Perri, S. and Scarcello, F., “The DLV system for knowledge representation and reasoning,” ACM Trans. Comput. Logic, 7(3), pp. 499–562, 2006CrossRefMathSciNetGoogle Scholar
  18. 18.
    Lloyd, J.W., Foundations of Logic Programming, 2nd ed., Springer, 1987.Google Scholar
  19. 19.
    Maher, M.J., “Complete axiomatizations of the algebras of finite, rational and infinite trees,” in Proc. os the 3rd IEEE Symp. on Logic in Computer Science, pp. 348–357, 1988.Google Scholar
  20. 20.
    Marpons, G., Mariño, J., Carro, M., Herranz, Á., Fredlund, L.-Å. and Moreno-Navarro, J.J., “Automatic coding rule conformance checking using logic programming,” in Practical Aspects of Declarative Languages, 10th Int. Symp. PADL 2008, San Francisco, CA, USA, January 7-8, 2008, LNCS, 4902, pp. 18–34. Springer, 2008.Google Scholar
  21. 21.
    Moreno-Navarro, J.J., “Default rules: An extension of constructive negation for narrowing-based languages,” in Proc. ICLP’94, pp. 535–549. The MIT Press, 1994.Google Scholar
  22. 22.
    Muñoz, S. and Moreno-Navarro, J.J., “Implementation results in classical constructive negation,” in ICLP’04 (Ducassie, M. ed.), LNCS, 3132, pp. 284–298, Saint-Maló, France, September 2004. Springer-Verlag.Google Scholar
  23. 23.
    Muñoz-Hernández, S, A Negation System for Prolog. PhD thesis, Facultad de Informática (Universidad Politécnica de Madrid), 2003.Google Scholar
  24. 24.
    Muñoz-Hernández, S. and Moreno-Navarro, J.J., “How to incorporate negation in a Prolog compiler,” in 2nd Int. Workshop PADL’2000(Santos Costa, V and Pontelli, E. ed.), LNCS, 1753, pp. 124–140, Boston, MA (USA), 2000. Springer.Google Scholar
  25. 25.
    Muñoz-Hernández, S., Moreno-Navarro, J.J. and Hermenegildo, M., “Efficient negation using abstract interpretation,” in “Logic for Programming, Artificial Intelligence and Reasoning(Nieuwenhuis, R. and Voronkov, A. eds.), La Habana (Cuba), 2001.Google Scholar
  26. 26.
    Naish, L., “Negation and quantifiers in NU-Prolog,” in Proc. 3rd ICLP, 1986.Google Scholar
  27. 27.
    Niemelä, I., Simons, P. and Syrjänen, T., “Smodels: A system for answer set programming,” in 8th. Int. Workshop on Nonmonotonic Reasoning, April 2000.Google Scholar
  28. 28.
    Sato, T., “First order compiler: A deterministic logic program synthesis algorithm,” Journal of Symbolic Computation, 8(6), pp. 605–627, 1989zbMATHCrossRefMathSciNetGoogle Scholar
  29. 29.
    Sato, T. and Motoyoshi, F., “A complete top-down interpreter for first order programs,” in Logic Programming, Proc. of the 1991 Intern’l Symp., pp. 35–53. MIT Press, 1991.Google Scholar
  30. 30.
    Sato, T. and Tamaki, H. “Transformational logic program synthesis,” in Proc. of the Int. Conf. on 5th Generation Computer Systems FGCS84, pp. 195–201, 1984.Google Scholar
  31. 31.
    Stuckey, P., “Constructive negation for constraint logic programming,” in Proc. IEEE Symp. on Logic in Computer Science, 660. IEEE Comp. Soc. Press, 1991.Google Scholar
  32. 32.
    Stuckey, P., “Negation and constraint logic programming,” in Information and Computation, 118(1), pp. 12–33, 1995zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Ohmsha, Ltd. 2009

Authors and Affiliations

  • Julio Mariño
    • 1
  • Juan José Moreno-Navarro
    • 1
    • 2
  • Susana Munoz-Hernandez
    • 1
  1. 1.Babel Group, Universidad Politécnica de MadridBoadilla del MonteSpain
  2. 2.IMDEA-SoftwareBoadilla del MonteSpain

Personalised recommendations