The flaw selection strategies that have been discussed in the literature typically have been given idiosyncratic names (e.g., DUnf, LCFR, ZLIFO). It is useful, in comparing them, to have a precise unifying notation. We therefore specify a flaw strategy as a sequence of preferences. A strategy begins by attempting to find a flaw that satisfies its first preference; if it is unable to do so, it then looks for a flaw that satisfies the second preference; and so on. To ensure that a POCL algorithm using the strategy is complete, the sequence of preferences must be exhaustive: every flaw must satisfy some preference. If a flaw satisfies more than one preference in a strategy, we assume that the first match is what counts.
In principle, a preference could identify any feature of a flaw. In practice, however, flaw selection strategies have only made use of a small number of features: the type of a flaw (open condition, nonseparable threat, or separable threat), the number of ways it can be repaired, and the time at which it was introduced into the plan. Often, more than one flaw will have a given feature, in which case a tie-breaking strategy may be specified for choosing among the relevant flaws.
We therefore describe a preference using the following notation
{flaw types}repair cost rangetie-breaking strategy
We abbreviate flaw type as ``o'' (for open condition), ``n'' (for nonseparable threat), and ``s'' (for separable threat). We also use abbreviations for common tie-breaking strategies, e.g., ``LC'' (least (repair) cost), ``LIFO'' and ``R'' (Random). In the case of LC, if a choice must be made between flaws that have the same repair cost, LIFO selection is used.
Thus, for example
{n}0-1R
An example of a complete flaw selection strategy is then:
{n}0-1R / {o}LIFO / {n,s}R
While we have distinguished between flaw type and maximum repair cost, on the one hand, and tie-breaking strategy, on the other, it is easy to describe strategies that use something other than flaw type as the main criterion for selection. For example, a pure LIFO selection strategy would be encoded as follows. (Henceforth, we give the name of a strategy in boldface preceding the specification.)
LIFO {o,n,s}LIFO