Anonymous Rewrite Rule

Stratego -- Strategies for Program Transformation
An anonymous rewrite rule is a rewrite rule that can be used inside a stategy expression.

An anonymous rewrite rule of the form:

\ p1 -> p2 where s \ 

is desugared to

{x1, ..., xn : ?p1; where(s); !p2} 

where x1, ..., xn are the free variables of p1. Any free variables used in s and p2, which do not occur in p1 are bound in the context of the anonymous rewrite rule.

An anonymous rewrite rule of the form:

( p1 -> p2 where s ) 

is desugared to

(?p1; where(s); !p2)

This style doesn't imply any scope for the variables of the rule: it only provides rule-like syntax. The variables of p1, s and p2 are all bound in the context of the anonymous rewrite rule.