Logic Programming and Nonmonotonic Reasoning