.. _sets-module: ==== Sets ==== Basic Sets ---------- .. automodule:: sympy.sets.sets .. autoclass:: Set :members: .. autofunction:: imageset Elementary Sets --------------- .. autoclass:: Interval :members: .. autoclass:: FiniteSet :members: Compound Sets ------------- .. module:: sympy.sets.sets :noindex: .. autoclass:: Union :members: .. autoclass:: Intersection :members: .. autoclass:: ProductSet :members: .. autoclass:: Complement :members: .. autoclass:: SymmetricDifference :members: .. autoclass:: DisjointUnion :members: Singleton Sets -------------- .. autoclass:: EmptySet :members: .. autoclass:: UniversalSet :members: Special Sets ------------ .. automodule:: sympy.sets.fancysets .. autoclass:: Rationals :members: .. autoclass:: Naturals :members: .. autoclass:: Naturals0 :members: .. autoclass:: Integers :members: .. autoclass:: Reals :members: .. autoclass:: Complexes :members: .. autoclass:: ImageSet :members: .. autoclass:: Range :members: .. autoclass:: ComplexRegion :members: .. autoclass:: CartesianComplexRegion :members: .. autoclass:: PolarComplexRegion :members: .. autofunction:: normalize_theta_set Power sets ---------- .. automodule:: sympy.sets.powerset .. autoclass:: PowerSet :members: Condition Sets -------------- .. automodule:: sympy.sets.conditionset .. autoclass:: ConditionSet :members: .. autoclass:: Contains :members: SetKind ------- .. autoclass:: SetKind :members: Iteration over sets ------------------- For set unions, `\{a, b\} \cup \{x, y\}` can be treated as `\{a, b, x, y\}` for iteration regardless of the distinctiveness of the elements, however, for set intersections, assuming that `\{a, b\} \cap \{x, y\}` is `\varnothing` or `\{a, b \}` would not always be valid, since some of `a`, `b`, `x` or `y` may or may not be the elements of the intersection. Iterating over the elements of a set involving intersection, complement, or symmetric difference yields (possibly duplicate) elements of the set provided that all elements are known to be the elements of the set. If any element cannot be determined to be a member of a set then the iteration gives ``TypeError``. This happens in the same cases where ``x in y`` would give an error. There are some reasons to implement like this, even if it breaks the consistency with how the python set iterator works. We keep in mind that sympy set comprehension like ``FiniteSet(*s)`` from a existing sympy sets could be a common usage. And this approach would make ``FiniteSet(*s)`` to be consistent with any symbolic set processing methods like ``FiniteSet(*simplify(s))``.