We propose to extend the language of extended logic programs by providing a declarative semantics for the use of sets as terms. Such an extension is intuitively natural, since humans frequently reason about collections of items. Our approach to defining a declarative semantics for sets differs from other approaches in that other approaches are very limited in their use of negation, and our approach is model-theoretic in a context allowing multiple models. Further, our approach is based on the answer set semantics, providing a well understood foundation. The language defined here can represent a wide range of common sense problems. As a side effect, an auxiliary contribution of this work is that a subset of this work provides a declarative semantics for how the setof symbol and how sets as terms should be and can be implemented in Prolog..