Synthesis and Transformation of Logic Programs through Constructive, Inductive Proof