fluent(aircraft(_)).
fluent(person(_)).
fluent(city(_)).
fluent(flevel(_)).

fluent(at(_,_)).
fluent(in(_,_)).
fluent(fuel_level(_,_)).
fluent(next(_,_)).

action(board(_,_,_)).

poss(board(P,A,C),and(person(P),
		      and(aircraft(A),
			  and(city(C),
			      and(at(P,C),at(A,C)))))).

causes_true(in(P,A),board(P,A,C),true).
causes_false(at(P,C),board(P,A,C),true).

action(debark(_,_,_)).
poss(debark(P,A,C),and(person(P),
		      and(aircraft(A),
			  and(city(C),and(in(P,A),at(A,C)))))).

causes_true(at(P,C),debark(P,A,C),true).
causes_false(in(P,A),debark(P,A,C),true).


action(fly(_,_,_,_,_)).
poss(fly(A,C1,C2,L1,L2),and(aircraft(A),
			    and(city(C2),
				and(at(A,C1),
				   and(fuel_level(A,L1),
				       next(L2,L1)))))).

causes_true(at(A,C2),fly(A,C1,C2,L1,L2),true).
causes_true(fuel_level(A,L2),fly(A,C1,C2,L1,L2),true).
causes_false(fuel_level(A,L1),fly(A,C1,C2,L1,L2),true).
causes_false(at(A,C1),fly(A,C1,C2,L1,L2),true).

% action(zoom(_,_,_,_,_,_)).
% poss(zoom(A,C1,C2,L1,L2,L3),and(aircraft(A),
% 				and(city(C2),
% 				    and(at(A,C1)
% 				       and(fuel_level(A,L1),
% 					   and(next(L2,L1),next(L3,L2))))))).


% causes_true(at(A,C2),zoom(A,C1,C2,L1,L2,L3),true).
% causes_true(fuel_level(A,L3),zoom(A,C1,C2,L1,L2,L3),true).
% causes_false(at(A,C1),zoom(A,C1,C2,L1,L2,L3),true).
% causes_false(fuel_level(A,L1),zoom(A,C1,C2,L1,L2,L3),true).


action(refuel(_,_,_,_)).
poss(refuel(A,C,L,L1),and(aircraft(A),and(city(C),and(fuel_level(A,L),next(L,L1))))).
causes_true(fuel_level(A,L1),refuel(A,C,L,L1),true).
causes_false(fuel_level(A,L),refuel(A,C,L,L1),true).