Axioms to describe the effects of the mental action Hyp(a) -which summarizes the three-step cycle of the algorithm- on the fluents that characterize a mental situation, GS(i,f,m) and Current(m). The expression Result(Hyp(a),m) denotes the mental situation resulting from performing Hyp(a) in mental situation m. The predicates and describe the intermediate goal stacks resulting from steps 1 and 2, respectively.
The effect of step 1 is formalized as follows. A subgoal describing the fact that the precondition of action a should hold at the current situation associated with m is added to the top (location 1) of the goal stack. The location numbers of the subgoals that were in the goal stack associated with m are incremented by 1. Instead of adding action a to the goal stack, we update the situation arguments of the subgoals that were in the goal stack associated with m. The idea is to take into account the fact that adding action a to the top of the goal stack associated with m is equivalent to hypothesizing the execution of a in the current situation associated with m.
The sequences of actions associated with the situation arguments of the subgoals in the goal stack associated with a mental situation describe the plan (or a part of the plan) that is being constructed by STRIPS in the process of searching for a solution. Hyp(a) denotes the mental act of hypothesizing that inserting action a after the sequence of actions that have been applied to the database describing the current situation may improve the plan constructed so far. This can be formalized by modifying the situation arguments of the subgoals according to the following update function. The function Update maps a subgoal of the form into a subgoal of the form , where is obtained from as follows. If s is the current situation associated with m and is the situation resulting of executing the sequence of actions r in s (i.e., ), then is the situation resulting of executing the sequence of actions r preceded by action a in s (i.e., ). Update maps a subgoal of the form into a subgoal of the form , where is obtained from as explained above.
The effect of step 2 is formalized as follows. True subgoals are popped from yielding .
If is not empty the situation argument of the top subgoal of is taken as the new current situation. If is empty, the situation argument of the last subgoal popped from is taken as the current situation. Axioms and capture the intuition that a subgoal is popped from the goal stack iff it has been satisfied by the current database at some point during the process of popping off true subgoals . Therefore, the sequence of actions associated with the situation argument of the subgoal must have been applied to DB at that point.
Finally, the effect of step 3 is formalized as follows. If is not empty, then the goal stack GS associated with Result(Hyp(a),m) is . Otherwise, a subgoal of the form is added to GS for each formula f in the stack describing the problem's goal situation that is not true in the current situation .