We introduce a logic programming language which supports hypothetical and c
ounterfactual reasoning. The language is based on a conditional logic which
enables to formalize conditional updates of the knowledge base. Due to the
presence of integrity constraints, alternative revisions of the knowledge
base may result from an update. We develop an abductive semantics which cap
tures different evolutions of the knowledge base. Furthermore, we provide a
goal-directed abductive proof procedure to compute the alternative solutio
ns for a goal. We finally analyze our conditional programming language in t
he context of belief revision theory, and we establish a connection with Ne
bel's prioritized base revision. (C) 2000 Elsevier Science Inc. All rights
reserved.