clear(x): there is nothing on top of block x; therefore it can be picked up
handempty: you are not holding any block
Definitions of Operators:
Op{ACTION: pickup(x)
PRECOND: ontable(x),
clear(x), handempty
EFFECT: holding(x), ~ontable(x), ~clear(x), ~handempty }
Op{ACTION: putdown(x)
PRECOND: holding(x)
EFFECT: ontable(x), clear(x), handempty,
~holding(x) }
Op{ACTION: stack(x,y)
PRECOND: holding(x),
clear(y)
EFFECT: on(x,y), clear(x), handempty,
~holding(x), ~clear(y) }
Op{ACTION: unstack(x,y)
PRECOND: clear(x), on(x,y),
handempty
EFFECT: holding(x), clear(y), ~clear(x), ~on(x,y), ~handempty ) }