Figure 15 shows the procedure used. Procedure EstablishPre shows the methods of adding a new step and reusing an existing step; they are essentially the methods used in UCPOP extended to reflect the need to check and propagate contingency labels.
Procedure EstablishUnk shows methods of adding a new decision and reusing an existing decision that are specific to Cassandra. The issues involved were discussed in Section 4.2.
:unknown
do
EstablishPre(Plan
, Open
) and
return the resulting list of plans;
:unknown
with
source of uncertainty Uncertainty
and outcome
Outcome
do EstablishUnk(Plan
,
Open
, Uncertainty
,
Outcome
) and return the resulting list of plans.
Plan
, Open
)
NewPlans
;
Eff
resulting from a step
Step
in Plan
Eff
can occur in every contingency in which
Open
must be established Eff
can precede the step SupStep
that
Open
is required to support EffCond
of Eff
that can
unify with condition Cond
that Open
is required to establish:
Open
by using
Eff
as the establishing effect;
NewPlans
;
Eff
with a
postcondition EffCond
that can unify with
Cond
:
Step
;
Open
by using
Eff
as the establishing effect;
Step
as
open conditions;
NewPlans
;
NewPlans
:
Step
precedes SupStep
;
EffCond
unifies with Cond
;
SecPre
of
Eff
as open conditions;
NewPlans
.
Plan
, Open
,
Uncertainty
, Outcome
)
NewCPlans
;
Uncertainty
is a new source of uncertainty in
the plan:
DecStep
for uncertainty
Uncertainty
;
NewCPlans
;
Uncertainty
is an existing source of uncertainty
in the plan:
DecStep
for
uncertainty Uncertainty
;
NewCPlans
;
NewCPlans
:
DecStep
for
Outcome
to include Cond
as an
antecedent;
(know-if Cond)
as an open condition required
to establish DecStep
;
DecStep
precedes
SupStep
;
NewCPlans
.