Automating Defeasible Reasoning with Logic Programming