Hi Mitch: we are in agreement. You basically consider one s-t path in the strategy and we do that too: we consider all s-t paths one by one and each such path is of your form [to t1 to t2 to t3 ...]. I like your definition of POSS because it is a formalization of the notion of "while there is still a possibility of success". And POSS is formulated in terms of strategy paths and objects, and not referring to a PathSet concept for class graphs. I adapt the definition slightly: POSS(c1, t, o1) = those edges e outgoing from o1 s.t. there is an object graph O (consistent with the class graph C), containing the object o1 of class c1, an object o2 of type (not class) t, and a path in O from o1 to o2 such that the first edge in the path is e. The goal of POSS is to offer a simpler semantics. You also offer an algorithm to compute POSS doing transitive closures. I think the traversal graph construction we already have is more efficient because it deals with all s-t paths in one sweep. There could be exponentially many s-t paths but the traversal graph construction is still polynomial. Mitch writes: >The object graph slice starting with o1 is the slice built by following >the edges POSS(class(o),t) starting with o = o1 and continuing until >every path terminates at an object of type t. I would like to add to this: >The object graph slice starting with o1 is the slice built by following >the edges POSS(class(o),t) starting with o = o1 and continuing until every path terminates (at an object of type t or it terminates prematurely). I think that we arrive at a much more straightforward definition of traversals that can be better understood by programmers. -- Karl