(define (domain blocksworld-no-clear)
(:requirements :adl :equality)
(:predicates (on-table ?x) (on ?x ?y))
(:action movetotable
:parameters (?x ?y)
:precondition (and (not (exists (?z) (on ?z ?x)))
; (forall (?z) (not (on ?z ?x)))
(on ?x ?y)
(not (= ?x ?y)))
:effect (and (on-table ?x) (not (on ?x ?y))))
(:action movetoblock
:parameters (?x ?y ?z)
:precondition (and (not (exists (?w) (on ?w ?x)))
; (forall (?w) (not (on ?w ?x)))
(not (exists (?w) (on ?w ?z)))
; (forall (?w) (not (on ?w ?z)))
(on ?x ?y)
(not (= ?x ?z)) (not (= ?y ?z)))
:effect (and (on ?x ?z) (not (on ?x ?y))))
(:action movefromtable
:parameters (?x ?y)
:precondition (and (not (exists (?w) (on ?w ?x)))
; (forall (?w) (not (on ?w ?x)))
(not (exists (?w) (on ?w ?y)))
; (forall (?w) (not (on ?w ?y)))
(on-table ?x)
(not (= ?x ?y)))
:effect (and (on ?x ?y) (not (on-table ?x))))
)