Reduction strategy (code optimization)


In code optimization during the translation of computer programs into an executable form, and in mathematical reduction generally, a reduction strategy for a term rewriting system determines which reducible subterms should be reduced within a term; it may be the case that a term may contain multiple redexes which are disjoint from one another and that choosing to contract one redex before another may have no influence on the resulting reduced form of the term, or that the redexes in a term do overlap and that choosing to contract one of the overlapping redexes over the other may result in a different reduced form of the term. It is the choice of which redex at each step in the reduction to contract that determines the strategy chosen. This can be seen as a practical application of the theoretical notion of reduction strategy in lambda calculus.