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
.