From 92f3018b89793323a7915bbc1f9a5f3def1d3729 Mon Sep 17 00:00:00 2001 From: Torsten Schaub Date: Mon, 22 Aug 2016 22:35:35 +0200 Subject: [PATCH] first throw at PDDL specifc encoding for sequential planning using Boolean fluents only --- .../pddl-sequential-incremental-boolean.lp | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 encodings/pddl-sequential-incremental-boolean.lp 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. +