Natural deduction as higher-order resolution
Journal of Logic Programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automata-driven indexing of Prolog clauses
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Experiments with discrimination-tree indexing and path indexing for term retrieval
Journal of Automated Reasoning
Multistage indexing algorithms for speeding Prolog execution
Software—Practice & Experience
Principles and practice of unification factoring
ACM Transactions on Programming Languages and Systems (TOPLAS)
Intersection types and computational effects
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Oracle-based checking of untrusted software
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Term Indexing
A Proof-Theoretic Foundation for Tabled Higher-Order Logic Programming
ICLP '02 Proceedings of the 18th International Conference on Logic Programming
Design and Implementation of Jump Tables for Fast Indexing of Logic Programs
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
RTA '95 Proceedings of the 6th International Conference on Rewriting Techniques and Applications
Handbook of automated reasoning
Higher-order Unification via Explicit Substitutions
LICS '95 Proceedings of the 10th Annual IEEE Symposium on Logic in Computer Science
Fast Term Indexing with Coded Context Trees
Journal of Automated Reasoning
The design and implementation of VAMPIRE
AI Communications - CASC
Tabled higher-order logic programming
Tabled higher-order logic programming
Higher-Order Matching, Games and Automata
LICS '07 Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science
ACM Transactions on Computational Logic (TOCL)
ICLP'05 Proceedings of the 21st international conference on Logic Programming
Tabling for higher-order logic programming
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
Hi-index | 0.00 |
We present a higher-order term indexing strategy based on substitution trees for simply typed lambda-terms. There are mainly two problems in adapting first-order indexing techniques. First, many operations used in building an efficient term index and retrieving a set of candidate terms from a large collection are undecidable in general for higher-order terms. Second, the scoping of variables and binders in the higher-order case presents challenges. The approach taken in this article is to reduce the problem to indexing linear higher-order patterns, a decidable fragment of higher-order terms, and delay solving terms outside of this fragment. We present insertion of terms into the index based on computing the most specific linear generalization of two linear higher-order patterns, and retrieval based on matching two linear higher-order patterns. Our theoretical framework maintains that terms are in βη-normal form, thereby eliminating the need to renormalize and raise terms during insertion and retrieval. Finally, we prove correctness of our presented algorithms. This indexing structure is implemented as part of the Twelf system to speed up the execution of the tabled higher-logic programming interpreter.