Inductive Synthesis of Functional Programs: An Explanation Based Generalization Approach | Synapse