Automatic construction of algorithms and data structures using a knowledge base of programming rules - Barstow, David Robbins (1978)