Recently several authors have stressed and illustrated the importance of including a second kind of negation (explicit negation) in logic programs besides “negation as failure”, and its use in deductive databases, knowledge representation, and nonmonotonic reasoning. By introducing explicit negation into logic programs contradiction may appear. In this work we present two approaches for dealing with contradiction, and show their equivalence. One of the approaches consists in avoiding contradiction, and is based on restrictions in the adoption of abductive hypotheses. The other approach consists in removing contradiction, and is based on a transformation of contradictory programs into noncontradictory ones, guided by the reasons for contradiction. The work is divided into two parts: one is presented in this paper, and comprises the contradiction avoidance approach, and the other in  in this volume, comprises the contradiction removal approach and shows the equivalence between the avoidance and removal approaches.