The Blocks World
   - The blocks world is a simple and commonly used instructional domain.
 
   - It's pretty simple.  There are blocks and the ground.
 
   - Blocks can go on the ground, or on other blocks.
 
   - You can manage this with a simple system of actions with
       preconditions and effects.
 
   - You have primitive facts, which are used in the preconditions
       and effects.
 
   - Block(b) says b is a block.
 
   - On (b,x) says b is on x.  x can be the ground.
 
   - Clear(x) means x  has no
       block on it.  -Clear(x) means x has a block on it.
 
   - Move(b,x,y) means move b from x to y. It looks like:
 
   - Action(Move(b,x,y), 
       Precond: On(b,x) and Clear(b) and Clear(y), 
       Effect: On(b,y) and Clear(x) and -On(b,x) and -Clear(y)) 
   - It's pretty simple, but can be used to explain interesting
       algorithms.
 
   - It relates to the Tower of Hanoi problem.
 
   - This language is used in 
       STRIPS, a GOFAI planning system.