Many approaches in the field of nonmonotonic and "commonsense" reasoning are actually different representations of the same basic ideas and constructions. This book gives a logical formalization of the original, explanatory approach to nonmonotonic reasoning. It uses the basic formalism of biconsequence relations, as well as derived systems of default, autoepistemic and causal inference, to cover in a single framework such diverse systems as default logic, autoepistemic and modal nonmonotonic logics, input/output and causal logics, argumentation theory, and semantics of general logic programs with negation as failure. This approach provides a clear separation between logical (monotonic) and nonmonotonic aspects of nonmonotonic reasoning. The separation allows, in particular, to single out the logics underlying modern logic programming and restore thereby the connection between logic programming and logic.