Journal of Logic Programming
A matching tree oriented abstract machine for Prolog
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
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)
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
Principles and practice of unification factoring
ACM Transactions on Programming Languages and Systems (TOPLAS)
FLORA: Implementing an Efficient DOOD System Using a Tabling Logic Engine
CL '00 Proceedings of the First International Conference on Computational Logic
Handbook of automated reasoning
Logic program specialisation through partial deduction: Control issues
Theory and Practice of Logic Programming
The Life of a Logic Programming System
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
Demand-driven indexing of prolog clauses
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 non-determinism inherent in many programming languages to the extent that they do not attempt to optimize execution after the applicable set theory 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 paper formalizes that process through the construction of factoring automata. A polynomial-time algorithm is given for constructing optimal factoring automata which 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 paper, and using it, several well-known programs show performance improvements of up to 100% across three different systems. A prototype of unification factoring is available by anonymous ftp.