A unifying logical framework for integer linear programming and finite domain constraint programming