Adding intersection to traversal strategies Suppose we have some traversal strategy S1: (A . ( B . Z + C . Z)) and we are only interested in paths from A to Z which bypass any edge labeled x. We could write a traversal strategy of the form: (A . bypassing {-> *,x,*} ( B .bypassing {-> *,x,*} Z + C .bypassing {-> *,x,*} Z)) But this strategy contains a lot of duplication. Instead, we introduce intersection which allows to isolate the intersection. The above example becomes: (A . ( B . Z + C . Z)) ^ (A . bypassing {-> *,x,*} Z) The good news is that Boaz can implement intersection efficiently by extending the token passing algorithm on the traversal graphs. do s1 ^ do s2 means to follow only paths which are legal according to both strategies. Intersection of strategies has many applications: for example the hidden edges which Geoff is implementing?! Another application is that we define some "view" of a class graph using a strategy s1 and then we define traversals within that view using a second strategy s2. The first view could be a persistent object view. -- Karl