Like a Scheme list, a Sol set is a collection of things. Unlike a Scheme list, a Sol set can be either finite or infinite, ordered or unordered. Every Scheme list has an explicit external representation, but many Sol sets don't have one, either because they are infinite (the set of complex numbers) or are the result of set operations which don't reduce to an explicit set. Sol sets are hierarchical -- just as COMPLEX is a subset of NUMBER, all Sol entities are also subsets of the SOL set.
Sol defines a special set of procedures called set operators. The process of applying a set operator (operator for short) to a set is called an operation, and every operation results in a new (possibly empty) set. Generally speaking, set operations do not alter the contents of existing sets.
Sol sets come in three basic flavors. There are the core sets, which form the basis of all other sets and are defined as part of the language environment. There are fundamental sets, a designation which includes the core sets, Java classes, and explicit user-defined sets. And there are derived sets, which are the result of set operations on fundamental or derived sets, e.g.(union boolean integer). Sets and set operations provide Sol with a very powerful and flexible typing system, as well as lexical parallelism -- one can see concurrency in a Sol program simply by examining the source code.