Abstract
The role for logic in knowledge and artificial intelligence (AI) representation and reasoning is an interesting and active area of research. In this framework, negation plays an essential role. On the other hand, Logic Programming (LP), and Prolog as its most representative programming language, has been extensively used for the implementation of logic-based systems. However, up to now we cannot find a Prolog implementation that supports an adequate negation subsystem what precludes important uses in AI applications. By adequate we mean correct and complete as well as efficiently implemented. In fact, there is no single method with this characteristic (for instance, negation as failure is incomplete, while constructive negation is hard to implement and until our work there were no running implementation of it). In previous work, we presented a novel method for incorporating negation into a Prolog compiler which takes a number of existing methods (some modified and improved by us) and uses them in a combined fashion. The method makes use of information provided by a global analysis of the source code. However, the correctness of the system was only informally sketched. In this paper, we present a general framework that can be used either to define strategies by combination of negation techniques as well as proving correctness and completeness of the resulting system. From this framework it is possible to define new strategies and, in particular, we describe the strategy that we have implemented, proving its soundness and completeness.
This research was partly supported by the Spanish MCYT project TIC2003-01036.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Barbuti, R., Mancarella, D., Pedreschi, D., Turini, F.: Intensional negation of logic programs. In: TAPSOFT 1987 and CFLP 1987. LNCS, vol. 250, pp. 96–110. Springer, Heidelberg (1987)
Barbuti, R., Mancarella, D., Pedreschi, D., Turini, F.: A transformational approach to negation in logic programming. JLP 8(3), 201–228 (1990)
Bruscoli, P., Levi, F., Levi, G., Meo, M.C.: Compilative constructive negation in constraint logic programs. In: Tison, S. (ed.) CAAP 1994. LNCS, vol. 787, pp. 52–67. Springer, Heidelberg (1994)
Chan, D.: Constructive negation based on the completed database. In: Proc. Int. Conference on LP 1988, pp. 111–125. The MIT Press, Cambridge (1988)
Chan, D.: An extension of constructive negation and its application in coroutining. In: Proc. NACLP 1989, pp. 477–493. The MIT Press, Cambridge (1989)
Clark, K.L.: Negation as failure. In: Gallaire, H., Minker, J. (eds.) Logic and Data Bases, pp. 293–322. Plenum Press, New York (1978)
Drabent, W.: What is a failure? An approach to constructive negation. Acta Informatica 33, 27–59 (1995)
Fages, F.: Constructive negation by pruning. Journal of Logic Programming 32(2) (1997)
Hill, P.M., Lloyd, J.W.: The Gödel Programming Language. The MIT Press, Cambridge (1994)
Kunen, K.: Negation in logic programming. JLP 4, 289–308 (1987)
Muñoz, S., Mariño, J., Moreno-Navarro, J.J.: Constructive intensional negation. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 39–54. Springer, Heidelberg (2004)
Muñoz, S., Moreno-Navarro, J.J.: Implementation results in classical constructive negation. In: Demoen, B., Lifschitz, V. (eds.) ICLP 2004. LNCS, vol. 3132, pp. 284–298. Springer, Heidelberg (2004) (to appear)
Muñoz-Hernández, S., Moreno-Navarro, J.J.: How to incorporate negation in a Prolog compiler. In: Pontelli, E., Santos Costa, V. (eds.) PADL 2000. LNCS, vol. 1753, pp. 124–140. Springer, Heidelberg (2000)
Muñoz-Hernández, S., Moreno-Navarro, J.J., Hermenegildo, M.: Efficient negation using abstract interpretation. In: Nieuwenhuis, R., Voronkov, A. (eds.) Logic for Programming, Artificial Intelligence and Reasoning, La Habana, Cuba (2001)
Naish, L.: Negation and quantifiers in NU-Prolog. In: Shapiro, E. (ed.) ICLP 1986. LNCS, vol. 225, Springer, Heidelberg (1986)
Di Pierro, A., Martelli, M., Palamidessi, C.: Negation as instantiation. Information and Computation 120(2), 263–278 (1995)
Przymusinski, T.C.: On constructive negation in logic programming. In: North American Conference on Logic Programming (October 1989)
Sato, T., Motoyoshi, F.: A complete top-down interpreter for first order programs. In: International Logic Programming Symposium, pp. 35–53 (1991)
Shepherdson, J.C.: Negation as failure ii. JLP, 185–202 (1985)
Stuckey, P.: Negation and constraint logic programming. Information and Computation 118(1), 12–33 (1995)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Moreno-Navarro, J.J., Muñoz-Hernández, S. (2004). Soundness and Completeness of an “Efficient” Negation for Prolog. In: Alferes, J.J., Leite, J. (eds) Logics in Artificial Intelligence. JELIA 2004. Lecture Notes in Computer Science(), vol 3229. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-30227-8_25
Download citation
DOI: https://doi.org/10.1007/978-3-540-30227-8_25
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-23242-1
Online ISBN: 978-3-540-30227-8
eBook Packages: Springer Book Archive