  In this paper, we present a framework for the semantics and the computation
of aggregates in the context of logic programming. In our study, an aggregate
can be an arbitrary interpreted second order predicate or function. We define
extensions of the Kripke-Kleene, the well-founded and the stable semantics for
aggregate programs. The semantics is based on the concept of a three-valued
immediate consequence operator of an aggregate program. Such an operator
approximates the standard two-valued immediate consequence operator of the
program, and induces a unique Kripke-Kleene model, a unique well-founded model
and a collection of stable models. We study different ways of defining such
operators and thus obtain a framework of semantics, offering different
trade-offs between precision and tractability. In particular, we investigate
conditions on the operator that guarantee that the computation of the three
types of semantics remains on the same level as for logic programs without
aggregates. Other results show that, in practice, even efficient three-valued
immediate consequence operators which are very low in the precision hierarchy,
still provide optimal precision.
