Figure 14 shows how threats are resolved. The methods shown in steps 2, 3, and 4 are standard methods found in SNLP and UCPOP; they are often termed separation, demotion, and promotion respectively. We say that the methods in step 5 disable the threat. The methods in steps 5a and 5b ensure that the threatening effect does not occur in a given contingency. The method in step 5a is a modification of a standard method found in UCPOP and other planners that use secondary preconditions. Essentially, the idea is to prevent an effect from occurring by ensuring that the context in which it occurs cannot hold. The method in 5b prevents an effect from occurring in a contingency by forbidding the execution of the step that produces it. The method in step 5c notes that the established step or effect cannot occur in a given contingency. If any of these techniques result in inconsistent labeling of any plan element (so that, for example, it cannot occur in every contingency in which it is required) the resulting partial plan is abandoned, as it represents a dead end in the search space.
NewPlans;
ClobberCond with the condition Cond
established by the link Unsafe involves
adding codesignation constraints to the bindings of
Plan:
Plan that ensures that
ClobberCond cannot unify with
Cond;
NewPlans;
ClobberStep can precede the
step Step that establishes Unsafe:
ClobberStep
precedes Step;
NewPlans;
SupStep supported by
Unsafe can precede ClobberStep:
SupStep
precedes ClobberStep;
NewPlans;
ClobberEff from
occurring in each contingency Conting in which the
link Unsafe is unsafe:
ClobberEff as an open condition with
positive contingency label Conting;
Conting to the negative
contingency labels of ClobberStep;
Conting to the negative
contingency labels of the effect
SupEff or step SupStep
that Unsafe supports;
ClobberStep occurs between steps
Step and SupStep;
NewPlans;
NewPlans.