- Term indexing
In
computer science , term indexing is the task of creating an index of terms and clauses in a collection.Many operations in automatic
theorem prover s require search in huge collections of terms and clauses. Such operations typically fall intothe following scheme. Given a collection of terms (clauses) and a queryterm (clause) , find in some/all terms related to according to acertain retrieval condition. Most interesting retrieval conditionsare formulated as existence of a substitution that relates in a specialway the query and the retrieved objects . Here is a list of retrievalconditions frequently used in provers:* term is unifiable with term , i.e., there exists a substitution , such that =
* term is an instance of , i.e., there exists a substitution , such that =
* term is a generalisation of , i.e., there exists a substitution , such that =
* clause subsumes clause , i.e., there exists a substitution , such that is a subset/submultiset of
* clause is subsumed by , i.e., there exists a substitution , such that is a subset/submultiset of More often than not, we are actually interested in finding the appropriate substitutions explicitly, together with the retrieved terms ,rather than just in establishing existence of such substitutions.Very often the sizes of term sets to be searched are large, the retrieval calls are frequent and the retrieval condition testis rather complex. In such situations linear search in , when the retrievalcondition is tested on every term from , becomes prohibitively costly. To overcome this problem, special data structures, called "indexes", are designed in order to support fast retrieval. Such data structures, together with the accompanying algorithms for index maintenanceand retrieval, are called "term indexing techniques".
Classic indexing techniques
*
discrimination tree s
*substitution tree s
*path indexing Modern indexing techniques
*
feature vector indexing
*code tree s
*context tree s
*relational path indexing Further reading
* P. Graf, Term Indexing, Lecture Notes in Computer Science 1053, 1996 (slightly outdated overview)
* R. Sekar and I.V. Ramakrishnan and A. Voronkov, Term Indexing, in A. Robinson and A. Voronkov, editors,Handbook of Automated Reasoning , volume 2, 2001 (recent overview)
* W. W. McCune, Experiments with Discrimination-Tree Indexing and Path Indexing for Term Retrieval, Journal of Automated Reasoning, 9(2), 1992
* P. Graf, Substitution Tree Indexing, Proc. of RTA, Lecture Notes in Computer Science 914, 1995
* M. Stickel, The Path Indexing Method for Indexing Terms, Tech. Rep. 473, Artificial Intelligence Center, SRI International, 1989
* S. Schulz, Simple and Efficient Clause Subsumption with Feature Vector Indexing, Proc. of IJCAR-2004 workshop ESFOR, 2004
* A. Riazanov and A. Voronkov, Partially Adaptive Code Trees, Proc. JELIA, Lecture Notes in Artificial Intelligence 1919, 2000
* H. Ganzinger and R. Nieuwenhuis and P. Nivela, Fast Term Indexing with Coded Context Trees, Journal of Automated Reasoning, 32(2), 2004
* A. Riazanov and A. Voronkov, Efficient Instance Retrieval with Standard and Relational Path Indexing, Information and Computation, 199(1-2), 2005
Wikimedia Foundation. 2010.