Strategies are the part of the program that specifies the way rule application is to be controlled.
Compilation techniques are studied in this context for an efficient execution of these programs. This choice may be complex, even in a case that may look simple of simplification of arithmetic expressions. Due to this inherent non-determinism, controlling rewrite rule application is an important issue for all kinds of rules. In most programming languages the evaluation strategy is fixed, which avoids non-determinism, so that the evaluation process is then easier to implement. The counterpart of this option is that programs are dependent on this built-in evaluation strategy.