Diffusion on syntax trees for program synthesis