From 7899d3e2625e20097bbaab19db5e2b9050555a85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Mon, 13 Jun 2016 03:48:04 +0200 Subject: [PATCH] Added simple encoding for translated PDDL instances. --- encodings/pddl-meta-sequential-incremental.lp | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 encodings/pddl-meta-sequential-incremental.lp diff --git a/encodings/pddl-meta-sequential-incremental.lp b/encodings/pddl-meta-sequential-incremental.lp new file mode 100644 index 0000000..f4a807b --- /dev/null +++ b/encodings/pddl-meta-sequential-incremental.lp @@ -0,0 +1,31 @@ +#include . + +#program base. + +% Establish initial state +holds(Predicate, 0) :- initialState(Predicate). + +#program step(t). + +% Perform actions +1 {occurs(action(Action), t) : action(Action)} 1. + +% Check preconditions +:- occurs(Action, t), precondition(Action, Predicate, true), not holds(Predicate, t - 1). +:- occurs(Action, t), precondition(Action, Predicate, false), holds(Predicate, t - 1). + +% Apply effects +caused(Predicate, true, t) :- occurs(Action, t), postcondition(Action, Predicate, true). +caused(Predicate, false, t) :- occurs(Action, t), postcondition(Action, Predicate, false). + +holds(Predicate, t) :- caused(Predicate, true, t). +holds(Predicate, t) :- holds(Predicate, t - 1), not caused(Predicate, false, t). + +#program check(t). + +% Verify that goal is met +:- query(t), goal(Predicate, true), not holds(Predicate, t). +:- query(t), goal(Predicate, false), holds(Predicate, t). + +#show query/1. +#show occurs/2.