  GP 2 is an experimental programming language based on graph transformation
rules which aims to facilitate program analysis and verification. Writing
efficient programs in such a language is hard because graph matching is
expensive, however GP 2 addresses this problem by providing rooted rules which,
under mild conditions, can be matched in constant time using the GP 2 to C
compiler. In this report, we document various improvements made to the
compiler; most notably the introduction of node lists to improve iteration
performance for destructive programs, meaning that binary DAG recognition by
reduction need only take linear time where the previous implementation required
quadratic time.
