Whenever an open condition is established, links in the plan may be jeopardized either because a new step threatens an existing link, or because a new link is threatened by an existing step. The situations in which a link is unsafe are shown in Figure 5. In general, a link is considered unsafe if there is an effect in the plan that could possibly interfere with the condition established by that link.
There are three general methods of protecting a threatened link (see Figure 5). First, ordering can be used to constrain the threatening action to occur either before the beginning or after the end of the threatened link. Second, the threatening effect and the threatened link can be separated by imposing constraints on the variables involved so that the effect cannot be unified with the established condition. Third, the link can be preserved by generating a new subgoal to disable the effect that threatens the link.
A link establishing the condition Cond
is unsafe
if there is an effect Eff
in the plan (other than the
effect SourceEff
that establishes Cond
and
the (possible) effect GoalEff
that is either established
or disabled by the link) with the following properties:
Eff
can
possibly unify with either Cond
or its negation.
Eff
can, according to
the partial order, occur both before the step that produces
GoalEff
and after the step that produces
SourceEff
.
Eff
occurs either before
the step that produces SourceEff
or after the step that
produces GoalEff
;
Eff
cannot in fact
unify with the threatened condition Cond
;
Eff
. This new open condition is the negation of
one of Eff
's secondary preconditions.