The theorem below ensures that reliable channels (linear, replicated input, and mutex channels) cannot immediately cause deadlock.
In the second case, since the output end of a mutex channel cannot be put into a mutex channel (by the condition on type expressions), u must be [x.
i'], is either an output on a mutex channel or a replicated input.
The above encoding uses a mutex channel flag to remember whether or not e has been evaluated, and another mutex channel r to memorize the value of e.
Unfortunately, because mutex channels are used, type information is not sufficient for reasoning about the uniqueness of the result.
In order to avoid simultaneous executions of methods of the same objects (that mw lead to inconsistency), a state is implemented by using a mutex channel.
In other words, the graph-expansion algorithm is uninformed by the goal of the planning problem, and as a result, time can be wasted by adding useless actions and their effects into the graph and reasoning about mutex relations involving these irrelevant facts.
Kambhampati modified the loop to first grow the planning graph backwards from the subgoals by an action and proposition level, then grow the graph forwards from the intersection of the initial state and the backward propositional fringe, including only ground actions that were added during backwards propagation and adding in mutex relations, then performing solution extraction if necessary.
Mutexes are monotonically decreasing: If mutex M between actions A and B is present at level i, then M is present at all previous action levels in which both A and B appear.
For mutex or nogood nodes, the label marks the last level at which the relation holds.
The primary difference stems from IPP'S mutex rules that state that two actions are marked as mutex only if their unconditional effects and preconditions are in conflict.
Second, both approaches use local consistency methods (for example, mutex propagation and propositional simplification) before resorting to exhaustive search.