A polymorphic type system for PROLOG.
Artificial Intelligence
Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Static inference of modes and data dependencies in logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract interpretation for concurrent logic languages
Proceedings of the 1990 North American conference on Logic programming
Deriving descriptions of possible values of program variables by means of abstract interpretation
Journal of Logic Programming
Experimental evaluation of a generic abstract interpretation algorithm for PROLOG
ACM Transactions on Programming Languages and Systems (TOPLAS)
Typed Static Analysis: Application to Groundness Analysis of PROLOG and lambda-PROLOG
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
Mode Analysis Domains for Typed Logic Programs
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Making Mercury Programs Tail Recursive
LOPSTR'99 Selected papers from the 9th International Workshop on Logic Programming Synthesis and Transformation
Binding-time analysis by constraint solving a modular and higher-order approach for mercury
LPAR'00 Proceedings of the 7th international conference on Logic for programming and automated reasoning
Approximating the success set of logic programs using constrained regular types
ACSC '03 Proceedings of the 26th Australasian computer science conference - Volume 16
Enhancing the Programmability of Spreadsheets with Logic Programming
VLHCC '07 Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing
Towards a Normal Form for Mercury Programs
Logic-Based Program Synthesis and Transformation
Towards a Type Discipline for Answer Set Programming
Types for Proofs and Programs
Runtime checking for separation logic
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
Extracting purely functional contents from logical inductive types
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiling formal specifications to oz programs
MOZ'04 Proceedings of the Second international conference on Multiparadigm Programming in Mozart/Oz
Smart testing of functional programs in isabelle
LPAR'12 Proceedings of the 18th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Hi-index | 0.00 |
Recent logic programming languages, such as Mercury and HAL, require type, mode and determinism declarations for predicates. This information allows the generation of efficient target code and the detection of many errors at compile-time. Unfortunately, mode checking in such languages is difficult. One of the main reasons is that, for each predicate mode declaration, the compiler is required to decide which parts of the procedure bind which variables, and how conjuncts in the predicate definition should be re-ordered to enforce this behaviour. Current mode checking systems limit the possible modes that may be used because they do not keep track of aliasing information, and have only a limited ability to infer modes, since inference does not perform reordering. In this paper we develop a mode inference system for Mercury based on mapping each predicate to a system of Boolean constraints that describe where its variables can be produced. This allows us handle programs that are not supported by the existing system.