A polymorphic type system for PROLOG.
Artificial Intelligence
Journal of Logic Programming
A transformational approach to negation in logic programming
Journal of Logic Programming
A type system for logic program
Journal of Logic Programming
Types in logic programming
A bottom-up polymorphic type inference in logic programming
Science of Computer Programming
Negation and constraint logic programming
Information and Computation
Efficient Negation Using Abstract Interpretation
LPAR '01 Proceedings of the Artificial Intelligence on Logic for Programming
An Assertion Language for Constraint Logic Programs
Analysis and Visualization Tools for Constraint Programming, Constrain Debugging (DiSCiPl project)
A practical type analysis for verification of modular prolog programs
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Automatic coding rule conformance checking using logic programming
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Hi-index | 0.00 |
Negation has traditionally been a difficult issue in Logic Programming. Most of Prolog programmers have been restricted to use just a weak negation technique, like negation as failure. Many alternative semantics were proposed for achieving constructive negation in the last 20 years, but no implementation was provided so far because of its exponential complexity and the difficulty for developing it. First effective implementations of constructive negation into standard Prolog compilers are available just recently, around 2003, provided by our previous works. In this paper we present an extension of our implementations by introducing types in programs, thus improving usability as well as efficiency in some cases of our implementations of constructive negation. This can make constructive negation an interesting approach for its use in data bases querying, web search, filtered search, ontologies querying, coding rules, business rules, etc. Thanks to the use of types, our constructive negation can provide concrete values as results, instead of constraints (as in our previous works). We provide details about the semantics and the implementation in our approaches of classical, finite constructive, and intensional negation. The paper also includes some practical examples additionally allowing for providing measurements of computational behavior.