The =dead-var-elim= component of the [[Stratego optimizer]] eliminates variables from a strategy expression if they are not used in a build.
For example, in the expression
{ x, y, z :
?F(x, y)
; !y
; ?G(z)
; !H(z, z)
}
the variable =z= is used in the final build (not dead), and =y= is used in the build needed for the match with =G= (not dead).
However, =x= is dead since it does not contribute to the final result.
Dead variable elimination removes dead variables by
* eliminating them from the scope, and
* replacing occurrences in matches with a wildcard
Thus, the example reduces to
{ y, z :
?F(_, y)
; !y
; ?G(z)
; !H(z, z)
}
Variable only matches (=?x=) with dead variables are turned into wildcard matches (=?_=) and can
be cleaned up by a subsequent simplification.
-- Main.EelcoVisser - 17 Aug 2003