Logic Tools for Programming