Motivation
1. Reduce the programming burden: it would be nice to have a system that could simply accept the necessary information and the objective (goal), and then figure out its own solution.
2. Have a program that looks more like its own specification.
3. Take advantage of logical inference to automatically get many of the consequences of the given information.