A plan may involve two or more sources of uncertainty, in which case the plan will have more than one set of branches. For example, suppose Cassandra is given the goal of picking up a package that is at one of two locations, and that one of two cars will be available for it to use. If the uncertainty regarding the location of the package is encountered first during the construction of the plan, Cassandra will respond by building a plan involving two contingencies, one for each location. Call these contingencies A and B (see Figure 8 and Section A.3).
Figure 8: A partial plan to pick up a package
At some point during the construction of the plan for contingency A, will encounter the uncertainty concerning which car will be available and will make the current plan dependent upon one particular outcome of that uncertainty. Since this new source of uncertainty arises in the context of planning for contingency A, contingency A is in effect bifurcated into two contingencies: A1, in which the package is at location 1 and car 1 is available; and A2, in which the package is at location 1 and car 2 is available). Cassandra must replace all existing contingency A labels with contingency A1 labels. It must then introduce a new copy of the top-level goal labeled with contingency A2.
Note that Cassandra must plan from scratch to achieve the top-level goal in contingency A2, in spite of the fact that it already has a viable plan for the goal in contingency A1. This is necessary because situations may be encountered in which the only successful plans involve using different methods to achieve the goal in the two contingencies. For example, extreme differences between the two cars might necessitate different plans for driving them (e.g., in a more detailed representation of the situation than we have presented here, such differences might affect the routes on which the cars could be driven or the places in which they could be parked). Cassandra must therefore consider all possible ways to achieve the goal in contingency A2 in the search for a completion of the plan. If the particular car used does not in fact affect the driving plan, then one path through the search space will result in isomorphic contingency plans for A1 and A2 (see Figure 9 and Section A.4).
Figure 9: A plan with two sources of uncertainty
The same reasoning applies to the extension of the plan to deal with contingency B. It cannot be assumed a priori that the plan for contingency B will in any way resemble the plan constructed for contingency A. An interesting consequence of this is that the uncertainty concerning the availability of the cars does not necessarily arise in a given plan for contingency B. For example, if the location of the package in contingency B were close enough that the agent could get there without using a car, the final plan might have only three contingencies: A1 (location 1 with car 1), A2 (location 1 with car 2), and B (location 2, on foot).
Cassandra may, of course, produce an extension of the plan in which a car is to be used in contingency B as well, in which case it will again encounter the uncertainty associated with the location of the car, and will proceed to bifurcate contingency B just as was done previously for contingency A. In the limit, the plan will involve one contingency for every member of the cross product of the possible outcomes of the relevant uncertainties. However, it is important to note that not every member of the cross-product set must appear as a contingency, since, as we have shown, some uncertainties may arise only given particular outcomes of other uncertainties.