Complement (set theory)

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In set theory, the complement of a set A refers to elements not in A. The relative complement of A with respect to a set B is the set of elements in B but not in A. When all sets under consideration are considered to be subsets of a given set U, the absolute complement of A is the set of elements in U but not in A.

Relative complement[edit]

Definition[edit]

If A and B are sets, then the relative complement of A in B,[1] also termed the set-theoretic difference of B and A,[2] is the set of elements in B but not in A.

The relative complement of A (left circle) in B (right circle):

The relative complement of A in B is denoted B \ A according to the ISO 31-11 standard. It is sometimes written B - A, but this notation is ambiguous, as in some contexts it can be interpreted as the set of all elements b - a, where b is taken from B and a from A.

Formally:

Examples[edit]

  • .
  • .

Properties[edit]

Let A, B, and C be three sets. The following identities capture notable properties of relative complements:

  • .
  • .
  • ,
    with the important special case demonstrating that intersection can be expressed using only the relative complement operation.
  • .
  • .
  • .
  • .
  • .

Absolute complement[edit]

The absolute complement of A in U:

Definition[edit]

If A is a set, then the absolute complement of A (or simply the complement of A) is the set of elements not in A. In other words, if U is the universe that contains all the sets under study, and there is no need to mention it because it is obvious and unique, then the absolute complement of A is the relative complement of A in U:[3]

.

Formally:

The absolute complement of A is usually denoted by . Other notations include Ac, , A, , and .[4]

Examples[edit]

  • Assume that the universe is the set of integers. If A is the set of odd numbers, then the complement of A is the set of even numbers. If B is the set of multiples of 3, then the complement of B is the set of numbers congruent to 1 or 2 modulo 3.
  • Assume that the universe is the standard 52-card deck. If the set A is the suit of spades, then the complement of A is the union of the suits of clubs, diamonds, and hearts. If the set B is the union of the suits of clubs and diamonds, then the complement of B is the union of the suits of hearts and spades.

Properties[edit]

Let A and B be two sets in a universe U. The following identities capture important properties of absolute complements:

De Morgan's laws:[1]
Complement laws:[1]
  • (this follows from the equivalence of a conditional with its contrapositive).
Involution or double complement law:
Relationships between relative and absolute complements:
Relationship with set difference:

The first two complement laws above show that if A is a non-empty, proper subset of U, then {A, Ac} is a partition of U.

LaTeX notation[edit]

In the LaTeX typesetting language, the command \setminus[5] is usually used for rendering a set difference symbol, which is similar to a backslash symbol. When rendered, the \setminus command looks identical to \backslash except that it has a little more space in front and behind the slash, akin to the LaTeX sequence \mathbin{\backslash}. A variant \smallsetminus is available in the amssymb package.

Complements in various programming languages[edit]

Some programming languages allow for manipulation of sets as data structures, using these operators or functions to construct the difference of sets a and b:

.NET Framework
a.Except(b);
C++
set_difference(a.begin(), a.end(), b.begin(), b.end(), result.begin());
Clojure
(clojure.set/difference a b)[6]
Common Lisp
set-difference, nset-difference[7]
F#
Set.difference a b[8]

or

a - b[9]
Falcon
diff = a - b[10]
Haskell
difference a b
a \\ b[11]
Java
diff = a.clone();
diff.removeAll(b);[12]
Julia
setdiff[13]
Mathematica
Complement[14]
MATLAB
setdiff[15]
OCaml
Set.S.diff[16]
Octave
setdiff[17]
PARI/GP
setminus[18]
Pascal
SetDifference := a - b;
Perl 5
#for perl version >= 5.10
@a = grep {not $_ ~~ @b} @a;
Perl 6
$A ∖ $B
$A (-) $B # texas version
PHP
array_diff($a, $b);[19]
Prolog
a(X),\+ b(X).
Python
diff = a.difference(b)[20]
diff = a - b[20]
R
setdiff[21]
Racket
(set-subtract a b)[22]
Ruby
diff = a - b[23]
Scala
a.diff(b)[24]

or

a -- b[24]
Smalltalk (Pharo)
a difference: b
SQL
SELECT * FROM A

EXCEPT SELECT * FROM B

Unix shell
comm -23 a b[25]
grep -vf b a # less efficient, but works with small unsorted sets

See also[edit]

Notes[edit]

  1. ^ a b c Halmos 1960, p. 17.
  2. ^ Devlin 1979, p. 6.
  3. ^ The set other than A is thus implicitly mentioned in an absolute complement, and explicitly mentioned in a relative complement.
  4. ^ Bourbaki 1970, p. E II.6.
  5. ^ [1] The Comprehensive LaTeX Symbol List
  6. ^ [2] clojure.set API reference
  7. ^ Common Lisp HyperSpec, Function set-difference, nset-difference. Accessed on September 8, 2009.
  8. ^ Set.difference<'T> Function (F#). Accessed on July 12, 2015.
  9. ^ Set.( - )<'T> Method (F#). Accessed on July 12, 2015.
  10. ^ Array subtraction, data structures. Accessed on July 28, 2014.
  11. ^ Data.Set (Haskell)
  12. ^ Set (Java 2 Platform SE 5.0). JavaTM 2 Platform Standard Edition 5.0 API Specification, updated in 2004. Accessed on February 13, 2008.
  13. ^ [3]. The Standard Library--Julia Language documentation. Accessed on September 24, 2014
  14. ^ Complement. Mathematica Documentation Center for version 6.0, updated in 2008. Accessed on March 7, 2008.
  15. ^ Setdiff. MATLAB Function Reference for version 7.6, updated in 2008. Accessed on May 19, 2008.
  16. ^ Set.S (OCaml).
  17. ^ [4]. GNU Octave Reference Manual
  18. ^ PARI/GP User's Manual
  19. ^ PHP: array_diff, PHP Manual
  20. ^ a b [5]. Python v2.7.3 documentation. Accessed on January 17, 2013.
  21. ^ R Reference manual p. 410.
  22. ^ [6]. The Racket Reference. Accessed on May 19, 2015.
  23. ^ Class: Array Ruby Documentation
  24. ^ a b scala.collection.Set. Scala Standard Library 2.11.7, Accessed on July 12, 2015.
  25. ^ comm(1), Unix Seventh Edition Manual, 1979.

References[edit]

External links[edit]