(define (domain depot)
(:predicates
(at ?x ?y) (on ?x ?y) (in ?x ?y) (lifting ?x ?y) (available ?x) (clear ?x)(place ?x) (locatable ?x) (depot ?x) (distributor ?x) (truck ?x) (hoist ?x) (surface ?x) (pallet ?x) (crate ?x) )
(:action drive
:parameters ( ?x ?y ?z)
:precondition
(and (truck ?x) (place ?y) (place ?z) (at ?x ?y))
:effect
(and (at ?x ?z) (not (at ?x ?y))))
(:action lift
:parameters ( ?x ?y ?z ?p)
:precondition
(and (hoist ?x) (crate ?y) (surface ?z) (place ?p) (at ?x ?p) (available ?x) (at ?y ?p) (on ?y ?z) (clear ?y))
:effect
(and (lifting ?x ?y) (clear ?z) (not (at ?y ?p)) (not (clear ?y)) (not (available ?x)) (not (on ?y ?z))))
(:action drop
:parameters ( ?x ?y ?z ?p)
:precondition
(and (hoist ?x) (crate ?y) (surface ?z) (place ?p) (at ?x ?p) (at ?z ?p) (clear ?z) (lifting ?x ?y))
:effect
(and (available ?x) (at ?y ?p) (clear ?y) (on ?y ?z) (not (lifting ?x ?y)) (not (clear ?z))))
(:action load
:parameters ( ?x ?y ?z ?p)
:precondition
(and (hoist ?x) (crate ?y) (truck ?z) (place ?p) (at ?x ?p) (at ?z ?p) (lifting ?x ?y))
:effect
(and (in ?y ?z) (available ?x) (not (lifting ?x ?y))))
(:action unload
:parameters ( ?x ?y ?z ?p)
:precondition
(and (hoist ?x) (crate ?y) (truck ?z) (place ?p) (at ?x ?p) (at ?z ?p) (available ?x) (in ?y ?z))
:effect
(and (lifting ?x ?y) (not (in ?y ?z)) (not (available ?x))))
)