The search subsystem contains code from part II on problem
solving, search, and game-playing. The main data type is the
problem. each new type of problem needs a representation for
states, a successor function, and a goal test. You can find examples
of this in the domains subdirectory.