Logic Programming Languages: Constraints, Functions, and Objects