Program Synthesis by Inductive Inference