Logic and Prolog Programming