pub mod heuristic;
mod gripper {
pub const DOMAIN: &'static str = "
(define (domain gripper-strips)
(:predicates
(room ?r)
(ball ?b)
(gripper ?g)
(at-robby ?r)
(at ?b ?r)
(free ?g)
(carry ?o ?g)
)
(:action move
:parameters (?from ?to)
:precondition (and
(room ?from)
(room ?to)
(at-robby ?from)
)
:effect (and
(at-robby ?to)
(not (at-robby ?from))
)
)
(:action pick
:parameters (?obj ?room ?gripper)
:precondition (and
(ball ?obj)
(room ?room)
(gripper ?gripper)
(at ?obj ?room)
(at-robby ?room)
(free ?gripper)
)
:effect (and
(carry ?obj ?gripper)
(not (at ?obj ?room))
(not (free ?gripper))
)
)
(:action drop
:parameters (?obj ?room ?gripper)
:precondition (and
(ball ?obj)
(room ?room)
(gripper ?gripper)
(carry ?obj ?gripper)
(at-robby ?room)
)
:effect (and
(at ?obj ?room)
(free ?gripper)
(not (carry ?obj ?gripper))
)
)
)
";
pub const PROBLEM_UNSOLVED: &'static str = "
(define (problem strips-gripper4)
(:domain gripper-strips)
(:objects rooma roomb ball1 ball2 ball3 ball4 left right)
(:init (room rooma)
(room roomb)
(ball ball1)
(ball ball2)
(ball ball3)
(ball ball4)
(gripper left)
(gripper right)
(at-robby rooma)
(free left)
(free right)
(at ball1 rooma)
(at ball2 rooma)
(at ball3 rooma)
(at ball4 rooma))
(:goal (and
(at ball1 roomb)
(at ball2 roomb)
(at ball3 roomb)
(at ball4 roomb))
)
)";
pub const PROBLEM_HALFSOLVED: &'static str = "
(define (problem strips-gripper4)
(:domain gripper-strips)
(:objects rooma roomb ball1 ball2 ball3 ball4 left right)
(:init (room rooma)
(room roomb)
(ball ball1)
(ball ball2)
(ball ball3)
(ball ball4)
(gripper left)
(gripper right)
(at-robby rooma)
(free left)
(free right)
(at ball1 rooma)
(at ball2 rooma)
(at ball3 roomb)
(at ball4 roomb))
(:goal (and
(at ball1 roomb)
(at ball2 roomb)
(at ball3 roomb)
(at ball4 roomb))
)
)";
pub const PROBLEM_SOLVED: &'static str = "
(define (problem strips-gripper4)
(:domain gripper-strips)
(:objects rooma roomb ball1 ball2 ball3 ball4 left right)
(:init (room rooma)
(room roomb)
(ball ball1)
(ball ball2)
(ball ball3)
(ball ball4)
(gripper left)
(gripper right)
(at-robby rooma)
(free left)
(free right)
(at ball1 roomb)
(at ball2 roomb)
(at ball3 roomb)
(at ball4 roomb)
)
(:goal (and
(at ball1 roomb)
(at ball2 roomb)
(at ball3 roomb)
(at ball4 roomb))
)
)";
}