Program Synthesis for Quantum Applications