Autonomous theory building systems

Theories are collections of large bodies of data in the real world. We describe autonomous systems, which observe the outside world and try to generate programs which reproduce the observed data. Methods for generation of new programs are enumeration as well as mutation and combination of old programs. We describe two criteria for judging the quality of a program. We can judge a program to be good if it is short and describes a large body of input data. With this criterion we show that a system can learn to evaluate arithmetic expressions in polish notation. But we can also judge a program to be good if it allows to compress the total length of descriptions ofall observations so far. By the latter criterion a system can createtests which can be used e.g. to partition the programs found so far into directories.