Non-Monotonic Reasoning and Logic Programming