## Documentation |

Category of sets of complex numbers

`Cat::Set` represents the category of subsets
of the complex numbers.

Sets of this category allow set-theoretic operations as well as pointwise arithmetical operations.

The main feature of `Cat::Set` is a particular
overloading mechanism. It provides `n`-ary operators
that can handle operands from different domains of category `Cat::Set`,
as well as mixed input where some operands are of types not belonging
to `Cat::Set`. *Hence, in the methods of Cat::Set,
operands of arbitrary type are allowed.*

There are three kinds of operators: `n`-ary
(associative and commutative), binary (not assumed to be commutative),
and unary (mapping a function). `Cat::Set` provides
generic methods for generating these kinds of operators, and uses
them to define default methods overloading the common set-theoretic
and arithmetical functions.

By default, any operation of sets is defined, but returns unevaluated
since the arithmetical or set-theoretic expression cannot be simplified.
Each domain of type `Cat::Set` must provide particular
slots and tables in order to achieve simplifications in certain special
cases.

Arithmetical operations are defined pointwise. It is not an error if some operation is not defined for all elements of a set.

`Cat::Set` is mainly used by domains of sets
returned by `solve`.

Was this topic helpful?