In this paper we investigate updates of knowledge bases represented by logi
c programs. In order to represent negative information, we use generalized
logic programs which allow default negation not only in rule bodies but als
o in their heads, We start by introducing the notion of an update P + U of
one logic program P by another logic program U. Subsequently, we provide a
precise semantic characterization of P + U, and study some basic properties
of program updates, In particular, we show that our update programs genera
lize the notion of interpretation update. We then extend this notion to com
positional sequences of logic programs updates P-1 + P-2 + (. . .), definin
g a dynamic program update, and thereby introducing the paradigm of dynamic
logic programming. This paradigm significantly facilitates modularization
of logic programming, and thus modularization of non-monotonic reasoning as
a whole. Specifically, suppose that we are given a set of logic program mo
dules, each describing a different state of our knowledge of the world. Dif
ferent states may represent different time points or different sets of prio
rities or perhaps even different viewpoints. Consequently, program modules
may contain mutually contradictory as well as overlapping information. The
role of the dynamic program update is to employ the mutual relationships ex
isting between different modules to precisely determine, at any given modul
e composition stage, the declarative as well as the procedural semantics of
the combined program resulting from the modules. (C) 2000 Elsevier Science
Inc. All rights reserved.