(domain BLOCKS) (type object) (predicate ontable) (arity ontable 1) (types ontable (object)) (predicate holding) (arity holding 1) (types holding (object)) (predicate clear) (arity clear 1) (types clear (object)) (predicate on) (arity on 2) (types on (object, object)) (predicate handempty) (arity handempty 0) (types handempty ()) (action pick-up) (types pick-up (object)) (= (pre (pick-up $x)) (superpose ((clear $x) (ontable $x) (handempty )))) (= (eff-pos (pick-up $x)) (superpose ((holding $x)))) (= (eff-neg (pick-up $x)) (superpose ((ontable $x) (clear $x) (handempty )))) (action put-down) (types put-down (object)) (= (pre (put-down $x)) (superpose ((holding $x)))) (= (eff-pos (put-down $x)) (superpose ((clear $x) (handempty ) (ontable $x)))) (= (eff-neg (put-down $x)) (superpose ((holding $x)))) (action stack) (types stack (object object)) (= (pre (stack $x $y)) (superpose ((holding $x) (clear $y)))) (= (eff-pos (stack $x $y)) (superpose ((clear $x) (handempty ) (on $x $y)))) (= (eff-neg (stack $x $y)) (superpose ((holding $x) (clear $y)))) (action unstack) (types unstack (object object)) (= (pre (unstack $x $y)) (superpose ((on $x $y) (clear $x) (handempty )))) (= (eff-pos (unstack $x $y)) (superpose ((holding $x) (clear $y)))) (= (eff-neg (unstack $x $y)) (superpose ((clear $x) (handempty ) (on $x $y)))) (problem BLOCKS-4-0) (object C) (isa C object) (object B) (isa B object) (object D) (isa D object) (object A) (isa A object) (init state 0) (= (valuation (state 0)) (superpose ((ontable B) (clear B) (ontable D) (clear D) (ontable C) (clear C) (ontable A) (handempty ) (clear A)))) (goal (and (on D C) (on C B) (on B A)))