Forward Chaining
   - Forward chaining goes from the current state to the goal
       state.
 
   - You can do this by simulating it, or, with for example a robot, doing
       it.
 
   - If you simulate, it's a plan, if you make the move, it's just search.
 
   - The initial state is:  On(B, Ground), On(A, Ground), On(C,A), Clear(B) and Clear(C).
 
   - The goal state is:  On(C, Ground), On(B, C), and On(A,B).
 
   - How do you get from the initial state to the goal state?
 
   - Forward chaining looks at which moves are currently possible.
 
   - Move(C,A,Ground) or Move(B,Ground,C)
 
   - You can do a depth first search.
 
   - Move(B,Ground,C) is wrong despite it reducing the differences in
       the states.
 
   - You want to Move(C,A,Ground), then Move(B,Ground,C) and finally
       Move(A,Ground,B).