Logic and Logical Programming