% DEFINITION OF DELIVERY ROBOT WORLD IN STRIPS NOTATION % ACTIONS % move(Ag,Pos,Pos_1) is the action of Ag moving from Pos to Pos_1 preconditions(move(Ag,Pos,Pos_1), autonomous(Ag) & adjacent(Pos,Pos_1) & sitting_at(Ag,Pos)). addlist(move(Ag,Pos,Pos_1),[sitting_at(Ag,Pos_1)]). deletelist(move(Ag,Pos,Pos_1),[sitting_at(Ag,Pos)]). % pickup(Ag,Obj,Pos) is the action of agent Ag picking up Obj. preconditions(pickup(Ag,Obj,Pos), autonomous(Ag) & sitting_at(Obj,Pos) & Ag \= Obj & at(Ag,Pos)). addlist(pickup(Ag,Obj,Pos), [carrying(Ag,Obj)]). deletelist(pickup(Ag,Obj,Pos), [sitting_at(Obj,Pos)]). % putdown(Ag,Obj,Pos) preconditions(putdown(Ag,Obj,Pos), autonomous(Ag) & at(Ag,Pos) & carrying(Ag,Obj) & Ag \= Obj). addlist(putdown(Ag,Obj,Pos),[sitting_at(Obj,Pos)]). deletelist(putdown(Ag,Obj,Pos),[carrying(Ag,Obj)]). % unlock(Ag,Door) preconditions(unlock(Ag,Door), autonomous(Ag) & blocks(Door,P_1,_) & opens(Key,Door) & carrying(Ag,Key) & at(Ag,P_1)). addlist(unlock(Ag,Door),[unlocked(Door)]). deletelist(unlock(Ag,Door),[]). % PRIMITIVE RELATIONS primitive(carrying(_,_)). primitive(sitting_at(_,_)). primitive(unlocked(_)). % DERIVED RELATIONS at(Obj,Pos) <= sitting_at(Obj,Pos). at(Obj,Pos) <= autonomous(Ag) & carrying(Ag,Obj) & at(Ag,Pos) & Ag \= Obj. adjacent(o109,o103)<= true. adjacent(o103,o109)<= true. adjacent(o109,storage)<= true. adjacent(storage,o109)<= true. adjacent(o109,o111)<= true. adjacent(o111,o109)<= true. adjacent(o103,mail)<= true. adjacent(mail,o103)<= true. adjacent(lab2,o109)<= true. adjacent(P_1,P_2) <= blocks(Door,P_1,P_2) & unlocked(Door). blocks(door1,o103,lab2)<= true. opens(k1,door1)<= true. autonomous(rob)<= true. % INITIAL SITUATION holds(sitting_at(rob,o109),init). holds(sitting_at(parcel,storage),init). holds(sitting_at(k1,mail),init). %%% load 'c:/david/teach/cs322/1999/Module10/strips_strips.pl'. %%% load 'c:/david/teach/cs322/1999/Module10/delrob_strips.pl'.