Geometry of Program Synthesis