Hi Doug: is this a fair description of your idea? If so, please can you add this to the traversal graph package. The goal is to make the traversal graph package as good as we can because it serves as subalgorithm in many different tools here at NU and outside. -- Karl PS. The traversal graph package did very well in our recent testing effort. The name map issue is one missing piece which the testing revealed. =================================================== Based on a discussion with Doug June 10, 1998. The traversal graph package does not deal with name maps. There are two name maps to consider: from strategy graph node names to class valued variables from class-valued variables to classes Doug made the following simplifying proposal: Strategy graphs are expressed in terms of class valued variables. If two nodes are labeled with same class-valued variable we have a loop in the strategy graph. When we map to classes, we can assign the same class-valued variable to the same class. sg: {Expression -> Compound Compound -> SubExpression} from class-valued variables to classes: SubExpression -> Expression results in: from Expression via Compound to Expression The disadvantage of Doug's proposal is that we cannot write a strategy {A -> B B -> A} without meaning a loop. We would have to write: {A -> B B -> C} and later C would be mapped to class A. I like Doug's proposal because it simplifies (no name space for strategy graph nodes) without giving up much expressiveness. An adaptive program should put all its class-valued variables into its interface. Strategies are written in terms of those class-valued variables. When a class graph is given: the strategies are specialized and the class-valued variables are mapped. This means that Demeter/Java introduces a name map syntax. Something like: NameMap = List(NameMapElement). NameMapElement = ClassValuedVariable ":" ClassName. // variables not mentioned are mapped to a class with the same name The traversal package should take as input a class graph and a strategy graph and a name map and produce a traversal graph. -- Karl