Indexing data structures have a crucial impact on the performance of automated theorem provers. Examples are discrimination trees, which are like tries where terms are seen as strings and common prefixes are shared, and substitution trees, where terms keep their tree structure and all common contexts can be shared. Here we describe a new indexing data structure, called context trees, where, by means of a limited kind of context variables, also common subterms can be shared, even if they occur below different function symbols. Apart from introducing the concept, we also provide evidence for its practical value. We describe an implementation of context trees based on Curry terms and on an extension of substitution trees with equality constraints, where one also does not distinguish between internal and external variables. Experiments with matching benchmarks show that our preliminary implementation is already competitive with tightly coded current state- of-the-art implementations of the other main techniques. In particular space consumption of context trees is significantly less than for other index structures.
This volume contains selected papers of the International Workshop on "Categorical Methods in Computer Science - with Aspects from Topology" and of the "6th International Data Type Workshop" held in August/September 1988 in Berlin. The 23 papers of this volume are grouped into three parts: Part 1 includes papers on categorical foundations and fundamental concepts from category theory in computer science. Part 2 presents applications of categorical methods to algebraic specification languages and techniques, data types, data bases, programming, and process specifications. Part 3 comprises papers on categorial aspects from topology which mainly concentrate on special adjoint situations like cartesian closeness, Galois connections, reflections, and coreflections which are of growing interest in categorical topology and computer science.
En este trabajo se presentan las ideas básicas seguidas para el diseño de un lenguaje de anotaciones para el lenguaje de programación Merlín. En concreto, las anotaciones se prevén en forma de especificaciones ecuacionales ligadas a los universos (construcción modular básica de Merlín), tanto a su componente de interfaz como a su componente de implementación. De cara a definir la semántica del lenguaje de anotaciones se ha optado por una semántica algebraica de comportamiento, en la que ciertas componentes son interpretadas inicialmente.
The basic ideas for the design of an annotation language for the programming language Merlin are presented. A new semantics based on behaviour is introduced to formally define annotations.