STRIPS
one_step_plan(State,Goals,NewState,Plan) :-
diff(Goals,State,[Goal|Rest]),.
rule(Action,Precond,Add,Del,Proc),
instantiate(Precond,State),
one_step_plan(State,Precond,State1,Plan1),
update(State1,Add,Del,State2), !,
one_step_plan(State2,Rest,NewState,Plan2),
append(Plan1,[Action|Plan2],Plan).
one_step_plan(State,_,State,[]).