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.