Constraints that Assist in the Teaching of Logic Programming