Learning Differentiable Programs with Admissible Neural Heuristics