Foundations of logic programming
Foundations of logic programming
Foundations of deductive databases and logic programming
Journal of Logic Programming
Automata-driven indexing of Prolog clauses
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From decision trees to decision graphs
Proceedings of the 1990 North American conference on Logic programming
Can logic programming execute as fast as imperative programming?
Can logic programming execute as fast as imperative programming?
HILOG: a foundation for higher-order logic programming
Journal of Logic Programming
Determinacy testing for nondeterminate logic programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Experiments with discrimination-tree indexing and path indexing for term retrieval
Journal of Automated Reasoning
Unification factoring for efficient execution of logic programs
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Complexity of Trie Index Construction
Journal of the ACM (JACM)
ICALP '92 Proceedings of the 19th International Colloquium on Automata, Languages and Programming
A Complete Indexing Scheme for WAM-based Abstract Machines
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Associative-Commutative Discrimination Nets
TAPSOFT '93 Proceedings of the International Joint Conference CAAP/FASE on Theory and Practice of Software Development
An efficient easily adaptable system for interpreting natural language queries
Computational Linguistics
Handbook of automated reasoning
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Efficient implementation of tuple pattern based retrieval
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Higher-order term indexing using substitution trees
ACM Transactions on Computational Logic (TOCL)
Logic programming approach to automata-based decision procedures
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Theory and Practice of Logic Programming - Prolog Systems
Hi-index | 0.00 |
The efficiency of resolution-based logic programming languages, such as Prolog, depends critically on selecting and executing sets of applicable clause heads to resolve against subgoals. Traditional approaches to this problem have focused on using indexing to determine the smallest possible applicable set. Despite their usefulness, these approaches ignore the nondeterminism inherent in many programming languages to the extent that they do not attempt to optimize execution after the applicable set has been determined. Unification factoring seeks to rectify this omission by regarding the indexing and unification phases of clause resolution as a single process. This article formalizes that process through the construction of factoring automata. A polynomial-time algorithm is given for constructing optimal factoring automata that preserve the clause selection strategy of Prolog. More generally, when the clause selection strategy is not fixed, constructing such an optimal automaton is shown to be NP-complete, solving an open trie minimization problem. Unification factoring is implemented through a source code transformation that preserves the full semantics of Prolog. This transformation is specified in the article, and using it, several well-known programs show significant performance improvements across several different systems. A prototype of unification factoring is available by anonymous ftp.