Hi Boaz: thank you for your remark; it is very important and made me rewrite the definitions reflecting also Doug's implementation: ============================= DEFINITION of strategy graph: A strategy graph S = (C,D,s,t,LV,P) is a tuple consisting of: C: nodes, D: edges, s,t: nodes in C, LV: label variables, P: D -> PathConstraints. PathConstraints are conjunctions of primitives of the following forms: Node primitives: bypassing c, where c in C; only-through c, where c in C, Edge primitives: bypassing -> X,l,Y where X,Y in C, l in LV. X,Y and l may be *. only-through -> X,l,Y where X,Y in C, l in LV. X,Y and l may be *. ============================= In this form a strategy graph is clearly separated from a class graph. It is now possible to define a WYSIWYG strategy graph elegantly: ============================= DEFINITION of WYSIWYG strategy graph: A strategy graph S = (C,D,s,t,LV,P) is a WYSIWYG strategy graph if for all elements d of D, the path constraint P(d) implies bypassing c for all elements of C. ============================= This is much simpler! The fact that Crista did not like the earlier def. welcomes this simplification and clear separation of the adaptive (strategic) level from the class graph level. To use a strategy S in a class graph G = (V,E,L), we need to provide a name map for S and G which is a pair N1,N2: N1: C -> V, N2: LV -> L. When we have a class graph, we compute the B mapping of our paper as follows: Consider a strategy graph edge d with P(d) contains a conjunct of the form bypassing c for c in C, set B false for all edges entering or exiting N1(c). P(d) contains a conjunct of the form only-through c for c in C, set B false for all edges neither entering nor exiting N1(c). P(d) contains a conjunct of the form bypassing -> X,l,Y, apply the name maps : N1(X),N2(l),N1(Y), expand the *s, if any, and set B false for the resulting set of edges. P(d) contains a conjunct of the form only-through -> X,l,Y, apply the name maps : N1(X),N2(l),N1(Y), expand the *s, if any, and set B false for the complement (with respect to the set of all class graph edges) of the resulting set of edges. If an edge is not set to false by B, it is set to true. Doug, does this correctly describe your implementation? (modulo the name map) Boaz, I think a form of the above should go into the implementation notes with acknowledgements to Doug since this what Doug implemented. -- Karl From boaz@ccs.neu.edu Fri Aug 8 00:25:51 1997 From: Boaz Patt-Shamir To: lieber@ccs.neu.edu cc: Boaz Patt-Shamir Subject: "implementation notes" Just not to forget (I was reminded by a comment from Crista): An important issue to be mentioned in section 7 is the star notation in the predicate language. It makes the strategies more expressive: you can refer to nodes and edges you don't know about. If this is incoporated with the ability to say something like "bypassing A" where A is a STRATEGY graph node (meaning to bypass the class N(A), which is specified only after the class graph and the name map are given, presumably "independently" of the strategy graph and the edge constraints), it would increase adaptivity somewhat. Boaz