% File 'airport-domain' :- macros disjoint(#1,#2) -> (-((#1)=(#2)) & -at(#1,#2) & -at(#2,#1)). :- sorts object >> region; mode. :- variables X,Y,Z :: object; U,V :: region; M :: mode. :- objects i, car, desk :: object; home, airport, county :: region; walking, driving :: mode. :- constants at(object,object) :: inertialFluent; walkable(region), drivable(region) :: boolean; go(object,mode) :: exogenousAction. exogenous walkable(U), drivable(U). % Properties of at caused at(X,Z) if at(X,Y) & at(Y,Z). caused -at(X,Z) if at(X,Y) & disjoint(Y,Z). caused -at(X,X). % Effects of actions go(X,M) causes at(i,X). go(X,driving) causes at(car,X). % Action preconditions nonexecutable go(X,M) if at(i,X). nonexecutable go(X,driving) if -at(i,car). nonexecutable go(X,walking) if -[\/U | walkable(U) & at(i,U) & at(X,U)]. nonexecutable go(X,driving) if -[\/U | drivable(U) & at(i,U) & at(X,U)]. % Restrictions on the concurrent execution of actions nonexecutable go(X,walking), go(Y,driving). nonexecutable go(X,M), -go(Y,M) if at(X,Y) & -at(i,Y). % Sizes of objects constraint -at(car,desk). constraint walkable(home). constraint -walkable(county). constraint -drivable(home). constraint drivable(county).