action(move(R,From,To)):- rocket(R),place(From),place(To),From \== To. action(unload(R,P,C)):- rocket(R),place(P),cargo(C). action(load(R,P,C)):- rocket(R),place(P),cargo(C). action(persists(P)):- proposition(P). proposition(at(R,P)):- rocket(R),place(P). proposition(at(C,P)):- cargo(C),place(P). proposition(in(C,R)):- cargo(C),rocket(R). precond(move(R,From,To),[at(R,From)]). delEffects(move(R,From,To),[at(R,From)]). addEffects(move(R,From,To),[at(R,To)]). precond(unload(R,P,C),[at(R,P),in(C,R)]). delEffects(unload(R,P,C),[in(C,R)]). addEffects(unload(R,P,C),[at(C,P)]). precond(load(R,P,C),[at(R,P),at(C,P)]). delEffects(load(R,P,C),[at(C,P)]). addEffects(load(R,P,C),[in(C,R)]). precond(persists(P),[P]). delEffects(persists(P),[]). addEffects(persists(P),[P]). rocket(r1). rocket(r2). place(a). place(b). cargo(c1). cargo(c2). init([at(c1,b),at(c2,a),at(r1,a),at(r2,a)]). goal([at(c1,a),at(c2,b)]).