%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Domain Description %%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Fluents %%%% fluent(at(home)). fluent(at(school)). fluent(at(station)). fluent(taxiAvl(home)). fluent(taxiAvl(school)). fluent(taxiAvl(station)). fluent(hasMoney). %%% End of Fluents %%% %%% Actions %%%% action(bus(station,school)). action(bus(school,station)). action(train(station,school)). action(train(school,station)). action(taxi(home,school)). action(taxi(home,station)). action(taxi(school,home)). action(taxi(school,station)). action(taxi(station,home)). action(taxi(station,school)). action(walk(home,school)). action(walk(home,station)). action(walk(school,home)). action(walk(school,station)). action(walk(station,home)). action(walk(station,school)). action(callTaxi(home,paymeter)). action(callTaxi(home,payflat)). action(callTaxi(school,paymeter)). action(callTaxi(school,payflat)). action(callTaxi(station,paymeter)). action(callTaxi(station,payflat)). %%% End of Actions %%% %%% Section: static causal laws %%%% holds(neg(at(home)), T):- time(T), holds(at(school), T). holds(neg(at(home)), T):- time(T), holds(at(station), T). holds(neg(at(school)), T):- time(T), holds(at(home), T). holds(neg(at(school)), T):- time(T), holds(at(station), T). holds(neg(at(station)), T):- time(T), holds(at(home), T). holds(neg(at(station)), T):- time(T), holds(at(school), T). %%% End section: static causal laws %%%% %%% Section: dynamic causal laws %%%% holds(at(school), T+1):- time(T), possible(bus(station,school), T), occ(bus(station,school),T). holds(at(station), T+1):- time(T), possible(bus(school,station), T), occ(bus(school,station),T). holds(at(school), T+1):- time(T), possible(train(station,school), T), occ(train(station,school),T). holds(at(station), T+1):- time(T), possible(train(school,station), T), occ(train(school,station),T). holds(at(school), T+1):- time(T), possible(taxi(home,school), T), occ(taxi(home,school),T). holds(at(station), T+1):- time(T), possible(taxi(home,station), T), occ(taxi(home,station),T). holds(at(home), T+1):- time(T), possible(taxi(school,home), T), occ(taxi(school,home),T). holds(at(station), T+1):- time(T), possible(taxi(school,station), T), occ(taxi(school,station),T). holds(at(home), T+1):- time(T), possible(taxi(station,home), T), occ(taxi(station,home),T). holds(at(school), T+1):- time(T), possible(taxi(station,school), T), occ(taxi(station,school),T). holds(at(school), T+1):- time(T), possible(walk(home,school), T), occ(walk(home,school),T). holds(at(station), T+1):- time(T), possible(walk(home,station), T), occ(walk(home,station),T). holds(at(home), T+1):- time(T), possible(walk(school,home), T), occ(walk(school,home),T). holds(at(station), T+1):- time(T), possible(walk(school,station), T), occ(walk(school,station),T). holds(at(home), T+1):- time(T), possible(walk(station,home), T), occ(walk(station,home),T). holds(at(school), T+1):- time(T), possible(walk(station,school), T), occ(walk(station,school),T). holds(neg(hasMoney), T+1):- time(T), possible(taxi(home,school), T), occ(taxi(home,school),T). holds(neg(hasMoney), T+1):- time(T), possible(taxi(home,station), T), occ(taxi(home,station),T). holds(neg(hasMoney), T+1):- time(T), possible(taxi(school,home), T), occ(taxi(school,home),T). holds(neg(hasMoney), T+1):- time(T), possible(taxi(school,station), T), occ(taxi(school,station),T). holds(neg(hasMoney), T+1):- time(T), possible(taxi(station,home), T), occ(taxi(station,home),T). holds(neg(hasMoney), T+1):- time(T), possible(taxi(station,school), T), occ(taxi(station,school),T). holds(taxiAvl(home), T+1):- time(T), possible(callTaxi(home,paymeter), T), occ(callTaxi(home,paymeter),T). holds(taxiAvl(home), T+1):- time(T), possible(callTaxi(home,payflat), T), occ(callTaxi(home,payflat),T). holds(taxiAvl(school), T+1):- time(T), possible(callTaxi(school,paymeter), T), occ(callTaxi(school,paymeter),T). holds(taxiAvl(school), T+1):- time(T), possible(callTaxi(school,payflat), T), occ(callTaxi(school,payflat),T). holds(taxiAvl(station), T+1):- time(T), possible(callTaxi(station,paymeter), T), occ(callTaxi(station,paymeter),T). holds(taxiAvl(station), T+1):- time(T), possible(callTaxi(station,payflat), T), occ(callTaxi(station,payflat),T). %%% End section: dynamic causal laws %%%% %%% Section: Executability Conditions %% possible(bus(station,school), T):- time(T), holds(at(station), T), holds(hasMoney, T). possible(bus(school,station), T):- time(T), holds(at(school), T), holds(hasMoney, T). possible(train(station,school), T):- time(T), holds(at(station), T), holds(hasMoney, T). possible(train(school,station), T):- time(T), holds(at(school), T), holds(hasMoney, T). possible(walk(home,school), T):- time(T), holds(at(home), T). possible(walk(home,station), T):- time(T), holds(at(home), T). possible(walk(school,home), T):- time(T), holds(at(school), T). possible(walk(school,station), T):- time(T), holds(at(school), T). possible(walk(station,home), T):- time(T), holds(at(station), T). possible(walk(station,school), T):- time(T), holds(at(station), T). possible(taxi(home,school), T):- time(T), holds(at(home), T), holds(hasMoney, T), holds(taxiAvl(home), T). possible(taxi(home,station), T):- time(T), holds(at(home), T), holds(hasMoney, T), holds(taxiAvl(home), T). possible(taxi(school,home), T):- time(T), holds(at(school), T), holds(hasMoney, T), holds(taxiAvl(school), T). possible(taxi(school,station), T):- time(T), holds(at(school), T), holds(hasMoney, T), holds(taxiAvl(school), T). possible(taxi(station,home), T):- time(T), holds(at(station), T), holds(hasMoney, T), holds(taxiAvl(station), T). possible(taxi(station,school), T):- time(T), holds(at(station), T), holds(hasMoney, T), holds(taxiAvl(station), T). possible(callTaxi(home,paymeter), T):- time(T), holds(at(home), T), holds(hasMoney, T). possible(callTaxi(home,payflat), T):- time(T), holds(at(home), T), holds(hasMoney, T). possible(callTaxi(school,paymeter), T):- time(T), holds(at(school), T), holds(hasMoney, T). possible(callTaxi(school,payflat), T):- time(T), holds(at(school), T), holds(hasMoney, T). possible(callTaxi(station,paymeter), T):- time(T), holds(at(station), T), holds(hasMoney, T). possible(callTaxi(station,payflat), T):- time(T), holds(at(station), T), holds(hasMoney, T). %%% End of section: Executability Conditions %%%% %%% Initial Conditions %%% holds(at(home),0). holds(hasMoney,0). holds(neg(taxiAvl(home)),0). holds(neg(taxiAvl(school)),0). holds(neg(taxiAvl(station)),0). %%% Goal %%% goal(T) :- time(T), holds(at(school), T). :- not goal(length). %%% End Goal %%%