Describir: Logic-Based Program Synthesis and Transformation