diff --git a/src/main/resources/org/rairlab/planner/problems/conformant/bomb.clj b/src/main/resources/org/rairlab/planner/problems/conformant/bomb.clj new file mode 100644 index 0000000..251fba1 --- /dev/null +++ b/src/main/resources/org/rairlab/planner/problems/conformant/bomb.clj @@ -0,0 +1,56 @@ +; Original problem from Joerg Hoffmann and Ronen Brafman +{:name "Bomb-In-The-Toilet" + :background [ + ; Setting object types + (bomb bomb1) + (bomb bomb2) + (bomb bomb3) + (bomb bomb4) + (bomb bomb5) + (toilet toilet1) + ] + + + :actions [ + (define-action dunk [?bomb ?toilet] { + :preconditions [ + ; Type restriction + (bomb ?bomb) + (toilet ?toilet) + ; Preconditions + (not (clogged ?toilet)) + ] + :additions [ + (not (armed ?bomb)) + (clogged ?toilet) + ] + :deletions [ + (armed ?bomb) + (not (clogged ?toilet)) + ] + }) + + (define-action flush [?toilet] { + :preconditions [ (toilet ?toilet) ] + :additions [ (not (clogged ?toilet)) ] + :deletions [ (clogged ?toilet) ] + }) + ] + :start [ + ; Unknown facts don't need to be stated + ; since we don't assume closed world assumption. + ; (unknown (armed bomb1)) + ; (unknown (armed bomb2)) + ; (unknown (armed bomb3)) + ; (unknown (armed bomb4)) + ; (unknown (armed bomb5)) + ] + :goal [ + (not (armed bomb1)) + (not (armed bomb2)) + (not (armed bomb3)) + (not (armed bomb4)) + (not (armed bomb5)) + ] + +} diff --git a/src/main/resources/org/rairlab/planner/problems/conformant/safe.clj b/src/main/resources/org/rairlab/planner/problems/conformant/safe.clj new file mode 100644 index 0000000..542aa2b --- /dev/null +++ b/src/main/resources/org/rairlab/planner/problems/conformant/safe.clj @@ -0,0 +1,81 @@ +; Original problem from Joerg Hoffmann and Ronen Brafman +{:name "Safe" + :background [ ] + + :actions [ + (define-action try [?x] { + ; NOTE: Currently need a precondition otherwise question-answering portion doesn't work. + :preconditions [ (combination ?x) ] + :additions [ (if (right-combination ?x) (safe-open))] + :deletions [ ] + }) + ] + :start [ + ; Unknown facts don't need to be stated + ; since we don't assume closed world assumption. + ; (unknown (right-combination c1)) + ; (unknown (right-combination c2)) + ; (unknown (right-combination c3)) + ; (unknown (right-combination c4)) + ; (unknown (right-combination c5)) + + (combination c1) + (combination c2) + (combination c3) + (combination c4) + (combination c5) + + ; One-of possibilities + (or + (and + (right-combination c1) + (not (right-combination c2)) + (not (right-combination c3)) + (not (right-combination c4)) + (not (right-combination c5)) + ) + + (and + (not (right-combination c1)) + (right-combination c2) + (not (right-combination c3)) + (not (right-combination c4)) + (not (right-combination c5)) + ) + + (and + (not (right-combination c1)) + (not (right-combination c2)) + (right-combination c3) + (not (right-combination c4)) + (not (right-combination c5)) + ) + + (and + (not (right-combination c1)) + (not (right-combination c2)) + (not (right-combination c3)) + (right-combination c4) + (not (right-combination c5)) + ) + + (and + (not (right-combination c1)) + (not (right-combination c2)) + (not (right-combination c3)) + (not (right-combination c4)) + (right-combination c5) + ) + + ) + + ] + :goal [ (safe-open) ] + +} + + + + + + diff --git a/src/main/resources/org/rairlab/planner/problems/epistemic/grapevine.clj b/src/main/resources/org/rairlab/planner/problems/epistemic/grapevine.clj index da85893..ecded3f 100644 --- a/src/main/resources/org/rairlab/planner/problems/epistemic/grapevine.clj +++ b/src/main/resources/org/rairlab/planner/problems/epistemic/grapevine.clj @@ -1,10 +1,13 @@ {:name "GrapeVine" :background [ + ; Type predicates (agent a) (agent b) (agent c) (room p1) (room p2) + + ; Unique name axioms (not (= a b)) (not (= a c)) (not (= b c)) @@ -20,8 +23,8 @@ (not (at ?a p2)) ] :deletions [ - (at ?a p2) (not (at ?a p1)) + (at ?a p2) ] }) @@ -36,8 +39,8 @@ (not (at ?a p1)) ] :deletions [ - (at ?a p1) (not (at ?a p2)) + (at ?a p1) ] }) @@ -65,6 +68,8 @@ :deletions [ (not (Believes! ?a2 (the ?a1))) (not (Believes! ?a3 (the ?a1))) + (not (Believes ?a1 (Believes! ?a2 (the ?a1)))) + (not (Believes ?a1 (Believes! ?a3 (the ?a1)))) ] }) @@ -89,6 +94,7 @@ ] :deletions [ (not (Believes! ?a2 (the ?a1))) + (not (Believes! ?a1 (Believes! ?a2 (the ?a1)))) ] })