In this paper we investigate updates of knowledge bases represented by logic programs. In order to represent negative information, we use generalized logic programs which allow default negation not only in rule bodies but also in their heads.We start by introducing the notion of an update P U of a 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 generalize the notion of interpretation update. We then extend this notion to compositional sequences of logic programsupdates P1P2 :::, de ning a dynamic program update, and thereby introducing the paradigm of dynamic logic programming. This paradigm signi cantly facilitates modularization of logic programming, and thus modularization of nonmonotonic reasoning as a whole. Speci cally, suppose that we are given a set of logic program modules, each describing a di erent state of our ...