“The Blocks World”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Definitions of Descriptors:

               

ontable(x):             block x is on top of the table

on(x,y):                   block x is on top of block y

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 ) }