In the simplest case, XII can use a universally quantified effect to
directly support a universally quantified goal. However, goals,
like ordinary goals, can get clobbered by subgoal interactions; to avoid
this, XII uses an extension of the causal
link [10] mechanism used for protecting other
goals. A causal link is a triple, written
, where
is a goal,
is the step that produces
and
is the step that
consumes
. We refer to
as the label of the link.
When XII supports a
goal directly (i.e., without
expanding into the universal base) it creates a link whose label,
, is a
universally quantified sentence (instead of the traditional literal); we
call such links ``
links.'' In general, a link is threatened when some other step,
, has an effect that possibly interferes with
and
can possibly be executed between
and
. For normal links, interference is defined as having an effect that
unifies with
. Such an effect also threatens a
link, but
links are also threatened by effects that possibly add an
object to the quantifier's universe of discourse. For example, if XII
adds a chmod g+r * step to achieve the goal of having all files in a
directory group readable, the link would be threatened by a step which
moved a new file (possibly unreadable) into the directory. Threats to
links can be handled using the same techniques used to resolve
ordinary threats: demotion, promotion, and confrontation.
Additionally, the following rule
applies.
For example, suppose a link recording the condition that all
files in /tex be group readable is threatened by step
, which
creates a new file, new.tex. This threat can be handled by
subgoaling to ensure that new.tex is either group readable or
not in directory /tex.