(define (domain ferry-strips)
(:requirements :strips)
(:constants ferry)
(:predicates (at ?x ?y)
(place ?x)
(auto ?x)
(at-ferry ?x)
(empty-ferry)
(on ?x ?y)
(ferryless ?x))
(:action board
:parameters (?x ?y)
:precondition (and (at ?x ?y)
(place ?y)
(auto ?x)
(at-ferry ?y)
(empty-ferry))
:effect (and (on ?x ferry)
(not (at ?x ?y))
(not (empty-ferry))))
(:action sail
:parameters (?x ?y)
:precondition (and (at-ferry ?x)
(place ?x)
(place ?y)
(ferryless ?y))
:effect (and (at-ferry ?y)
(ferryless ?x)
(not (at-ferry ?x))))
(:action debark
:parameters (?x ?y)
:precondition (and (on ?x ferry)
(auto ?x)
(place ?y)
(at-ferry ?y))
:effect (and (not (on ?x ferry))
(at ?x ?y)
(empty-ferry))))