A Review of Nonmonotonic Reasoning