Regular path queries are a way of declaratively specifying program analyses as a kind of regular expressions that are matched
against paths in graph representations of programs. These and similar queries are useful for other path analysis problems
as well. This paper describes the precise specification, derivation, and analysis of a complete algorithm and data structures
for solving regular path queries. We first show two ways of specifying the problem and deriving a high-level algorithmic solution,
using predicate logic and language inclusion, respectively. Both lead to a set-based fixed-point specification. We then derive
a complete implementation from this specification using Paige’s methods that consist of dominated convergence, finite differencing,
and real-time simulation. This formal derivation allows us to analyse the time and space complexity of the implementation
precisely in terms of size parameters of the graph and the deterministic finite automaton that corresponds to the regular
expression. In particular, the time and space complexity is linear in the size of the graph. We also note that the problem
is PSPACE-complete in terms of the size of the regular expression. In applications such as program analysis, the size of the
graph may be very large, but the size of the regular expression is small and can be considered a constant.
This work was supported in part by ONR under grants N00014-01-1-0109 and N00014-99-1-0132.