In the symbolic AI tradition, planning is usually carried out by search and reasoning. We have introduced how to do planning by search if the graph is given: when a final state is found, the path from initial state to it is the plan to realize it. If the graph needs to be generated by reasoning, a state can be represented as a set of propositions, and each action can change one state to another, which has some preconditions to be satisfied, and some effects to be produced as modifications of the proposition set.
STRIPS represents application domain states in first-order predicate logic, uses means-ends analysis to identify goals and subgoals that needed to be solved as stepping stones to a solution, searches through a space of possible solutions, and employs a simple but effective representation of the actions possible in the domain -- as STRIPS operators. Many of these techniques form the basis for later work in planning.
A STRIPS operator represents an action as having "preconditions" to be satisfied in the state in which the action is performed, and with some "effects" represented by a "delete list" and an "add list" that represent changes made to the state following the performance of the action.
For example, the current state corresponds to the position of a robot waiter and the items on a table:
At(Table-1) and On(Cup-a,Table-1) and On(Plate-a,Table-1)and the following operator represent a pickup action of the robot:
Operator Pickup(x) Preconditions: On(x,y) and At(y) Delete list: On(x,y) Add list: Hold(x)If the operation is applied to Cup-a at the current state, the new state will be
At(Table-1) and On(Plate-a,Table-1) and Hold(Cup-a)
A related topic is self-programming, that is, a system's actions are not explicitly specified by a human programmer, but rather "decided by the system itself" to various degrees.