The roadmap for DebGraph outlines three sets of graph
operators: essential, useful, and
exotic. Naturally, each successive set extends the
previous set's functionality, and in many cases the
complexity of the work performed by the operators increases
accordingly.

Over the weekend, I wrapped up work on the
essential operators and separated the unit test
suite into its own subdirectory and executable. Having a
few simple operators around means that we can do basic queries:

Show me all 3dchess packages.

Show me all all libc6 packages.

Show me the union of the two previous results, including
dependencies between the two groups.

(Click the graphs for a larger version.)

These graphs can be helpful, but they are rather trivial.
More useful would be an operator that could, say, find all
dependency loops (cycles) and return them in such a way that
each cycle could be examined individually.

Next step: an operator that computes all dependencies for a
given package.