A polymorphic type system for PROLOG.
Artificial Intelligence
A type system for logic program
Journal of Logic Programming
Handbook of theoretical computer science (vol. B)
Types in logic programming
The art of Prolog (2nd ed.): advanced programming techniques
The art of Prolog (2nd ed.): advanced programming techniques
The Go¨del programming language
The Go¨del programming language
On the complexity of dataflow analysis of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A generic type system for CLP( X )
JICSLP'98 Proceedings of the 1998 joint international conference and symposium on Logic programming
Declaration-free type checking
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Directional Type Checking of Logic Programs
SAS '94 Proceedings of the First International Static Analysis Symposium on Static Analysis
A Typed Foundation for Directional Logic Programming
ELP '92 Proceedings of the Third International Workshop on Extensions of Logic Programming
Using parametric set constraints for locating errors in CLP programs
Theory and Practice of Logic Programming
Improving precision of type analysis using non-discriminative union
Theory and Practice of Logic Programming
Hi-index | 0.00 |
In this paper we present a new type system for logic programs. Our system combines ideas of the classical polymorphic, but not very precise, system due to Mycroft and O'Keefe [16], and the complementary system of directional types that has been proposed by Aiken and Lakshman [1].Our main technical inventions are a new method of deriving more specific types from a given type, which we call pruning, and the notion of the main type from which, using a combination of substitution, subtyping and pruning all types of a predicate can be obtained.We describe a type checking algorithm, and a type reconstruction algorithm which for a given program and a predicate finds its main type. A complexity analysis of these algorithms is provided. In spite of large theoretical complexity bounds these algorithms work quite fast in practice.