% length = 4, level = 3

car(car_1).
car(car_2).

location(loc_1).
location(loc_2).

fluent(package_at(loc_1)).
fluent(package_at(loc_2)).
fluent(available(C)):- car(C).
fluent(at(loc_1)).
fluent(at(loc_2)).
fluent(happy).

action(ask_about_package).
executable(ask_about_package, []).

determines(ask_about_package, package_at(loc_1)).
determines(ask_about_package, package_at(loc_2)).

action(drive(C,L)):- car(C), location(L).

executable(drive(C,L), [available(C)]):-
     action(drive(C, L)).

causes(drive(C,L), at(L), []):-
     action(drive(C, L)).

causes(drive(C,L), neg(available(C)), []):-
     action(drive(C, L)).

action(finish).
executable(finish, []).

causes(finish, happy, [package_at(loc_1), at(loc_1)]).
causes(finish, happy, [package_at(loc_2), at(loc_2)]).
  
initially(neg(happy)).
initially(available(car_1)).
initially(neg(available(car_2))).

caused([package_at(loc_1)], neg(package_at(loc_2))).
caused([package_at(loc_2)], neg(package_at(loc_1))).

sgoal(happy).


