Implementing Constructive Intensional Negation
- First Online:
- 41 Downloads
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.
Keywords:Negation Intensional Negation Constraint Logic Programming Program Transformation Logic Programming Implementation Constructive Negation
Unable to display preview. Download preview PDF.
- 1.The ECLiPSe website at Imperial College. http://www.icparc.doc.ic.ac.uk/eclipse/.
- 2.The XSB home page. http://www.cs.sunysb.edu/~sbprolog/xsb-page.html.
- 3.Barbuti, R., Mancarella, D., Pedreschi, D. and Turini, F., “Intensional negation of logic programs,” LNCS, 250, pp. 96–110, 1987Google Scholar
- 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.Bueno, F., The CIAO Multiparadigm Compiler: A User’s Manual, 1995.Google Scholar
- 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.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.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
- 12.Fages, F., “Constructive negation by pruning,” Journal of Logic Programming, 32(2), 1997.Google Scholar
- 14.Hill, P.M. and Lloyd, J.W., The Gödel Programming Language. The MIT Press, 1994.Google Scholar
- 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
- 18.Lloyd, J.W., Foundations of Logic Programming, 2nd ed., Springer, 1987.Google Scholar
- 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.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.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.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.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.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.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.Naish, L., “Negation and quantifiers in NU-Prolog,” in Proc. 3rd ICLP, 1986.Google Scholar
- 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
- 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.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.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