  Suppose we have just performed searches in a self-index for two patterns $A$
and $B$ and now we want to search for their concatenation \A B); how can we
best make use of our previous computations? In this paper we consider this
problem and, more generally, how we can store a dynamic library of patterns
that we can easily manipulate in interesting ways. We give a space- and
time-efficient data structure for this problem that is compatible with many of
the best self-indexes.
