fluent(alive). fluent(loaded). time(1..2). action(load). action(shoot). holds(alive,1). not_holds(loaded,1). holds(loaded, T+1) :- time(T), occurs(load,T). not_holds(alive, T+1) :- time(T), occurs(shoot,T), holds(loaded,T). holds(F,T+1) :- fluent(F), time(T), holds(F,T), not not_holds(F,T+1). not_holds(F,T+1) :- fluent(F), time(T), not_holds(F,T), not holds(F,T+1). other_occurs(A,T) :- action(A), time(T), action(B), occurs(B,T), neq(A,B). occurs(A,T) :- action(A), time(T), not other_occurs(A,T). :- not not_holds(alive,3). hide fluent(X). hide time(X). hide action(X). hide other_occurs(X,Y).