Logic Programming With Constraints