TOAST is given the goal of putting some instance of a given material in its finished state. We will call this an existential goal because it is satisfied by exactly those environment states in which there exists an object of a specified type in a specified state. Let (E,G) be a DCP and let E' be uniformly reducible to E. We define the existential goal of G in E' to be the set of states in E' that project under some binding to a goal state in (E,G):
where is the set of states that map to goal states under . Given a solution to a schematic goal in a schematic environment, we can easily construct any number of solutions to the existential goal:
The TOAST algorithm implements a policy which is a composition of a schematic solution and a binding that maps it onto the real world. Consider the problem of cooking an egg. The schematic solution might be:
break the-egg into the-panhere the boldface verbs break, beat, and heat name actions. The italicized expressions the-egg and the-pan name the objects (state components) that they affect in the simplified world. The binding then determines objects in the real world to which those state components correspond. Given a binding, the main control structure need only remember the sequence break, beat, heat. Each of these may have preconditions on the states of the tools (i.e. the whisk needs to be clean), but they can be handled by reduction given policies for resetting the tools.
beat the-egg in the-pan using the-whisk
heat the-egg in the-pan