diff --git a/encodings/pddl-sequential-incremental-boolean.lp b/encodings/pddl-sequential-incremental-boolean.lp new file mode 100644 index 0000000..da03935 --- /dev/null +++ b/encodings/pddl-sequential-incremental-boolean.lp @@ -0,0 +1,31 @@ +#include . + +#program base. + + precondition(Action,variable(Fluent),Value) :- precondition(Action, variable(Fluent),value(Fluent,Value)). +postcondition(Action,variable(Fluent),Value) :- postcondition(Action,effect(unconditional),variable(Fluent),value(Fluent,Value)). + +holds(variable(Fluent),0) :- initialState(variable(Fluent),value(Fluent,true)). + +#program step(t). + + { occurs(Action,t) : action(Action) } = 1. + +:- occurs(Action,t), precondition(Action,Fluent,true), not holds(Fluent,t-1). +:- occurs(Action,t), precondition(Action,Fluent,false), holds(Fluent,t-1). + +caused(Fluent,t) :- occurs(Action,t), postcondition(Action,Fluent,true). + +holds(Fluent,t) :- caused(Fluent,t). +holds(Fluent,t) :- holds(Fluent,t-1), not occurs(Action,t) : postcondition(Action,Fluent,false). + +#program check(t). + +goalAt(t) :- holds(variable(Variable),t) : goal(variable(Variable), value(Variable,true)); + not holds(variable(Variable),t) : goal(variable(Variable), value(Variable,false)). + + :- not goalAt(t), query(t). + +#show occurs/2. +% #show holds/2. +