Complement (set theory)

From Wikipedia, the free encyclopedia
  (Redirected from Complement set)
Jump to navigation Jump to search
If A is the area colored red in this image...
... then the complement of A is everything else.

In set theory, the complement of a set A refers to elements 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.

The relative complement of A with respect to a set B, also termed the difference of sets A and B, written BA, is the set of elements in B but not in A.

Absolute complement[edit]

The absolute complement of A (left circle) in U: .


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 elements 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:[1]



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


  • 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 (or, in simpler terms, the integers that are not multiples of 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.


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

De Morgan's laws:[3]
Complement laws:[3]
  • (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, A} is a partition of U.

Relative complement[edit]


If A and B are sets, then the relative complement of A in B,[3] also termed the set difference of B and A,[4] 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 BA according to the ISO 31-11 standard. It is sometimes written BA, but this notation is ambiguous, as in some contexts it can be interpreted as the set of all elements ba, where b is taken from B and a from A.



  • .
  • .
  • If is the set of real numbers and is the set of rational numbers, then is the set of irrational numbers.


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.
  • .
  • .
  • .
  • .
  • .
  • .

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
set_difference(a.begin(), a.end(), b.begin(), b.end(), result.begin());
(clojure.set/difference a b)[6]
Common Lisp
set-difference, nset-difference[7]
Set.diff a b[8]
Set.difference a b[9]
a - b[10]
diff = a - b[11]
difference a b
a \\ b[12]
diff = a.clone();
SetDifference := a - b;
Perl 5
# for perl version >= 5.10
@a = grep {not $_ ~~ @b} @a;
Perl 6
$A (-) $B # texas version
array_diff($a, $b);[20]
a(X),\+ b(X).
diff = a.difference(b)[21]
diff = a - b[21]
(set-subtract a b)[23]
diff = a - b[24]
let diff = std::collections::HashSet::difference(&hashset_a, &hashset_b);[25]
a -- b[26]
Smalltalk (Pharo)
a difference: b
Unix shell
comm -23 a b[27]
grep -vFxf b a # less efficient, but works with small unsorted sets
XQuery (and XPath starting from version 2.0)
$a except $b[28]
Z Shell

See also[edit]


  1. ^ The set other than A is thus implicitly mentioned in an absolute complement, and explicitly mentioned in a relative complement.
  2. ^ Bourbaki 1970, p. E II.6.
  3. ^ a b c Halmos 1960, p. 17.
  4. ^ Devlin 1979, p. 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. ^ elm-lang/core/5.1.1/Set. Accessed on March 24, 2018.
  9. ^ Set.difference<'T> Function (F#). Accessed on July 12, 2015.
  10. ^ Set.( - )<'T> Method (F#). Accessed on July 12, 2015.
  11. ^ Array subtraction, data structures. Accessed on July 28, 2014.
  12. ^ Data.Set (Haskell) Archived 2009-05-28 at the Wayback Machine.
  13. ^ Set (Java 2 Platform SE 5.0). JavaTM 2 Platform Standard Edition 5.0 API Specification, updated in 2004. Accessed on February 13, 2008.
  14. ^ [3] Archived 2014-10-15 at the Wayback Machine.. The Standard Library--Julia Language documentation. Accessed on September 24, 2014
  15. ^ Complement. Mathematica Documentation Center for version 6.0, updated in 2008. Accessed on March 7, 2008.
  16. ^ Setdiff. MATLAB Function Reference for version 7.6, updated in 2008. Accessed on May 19, 2008.
  17. ^ Set.S (OCaml).
  18. ^ [4]. GNU Octave Reference Manual
  19. ^ PARI/GP User's Manual Archived September 11, 2015, at the Wayback Machine.
  20. ^ PHP: array_diff, PHP Manual
  21. ^ a b [5]. Python v2.7.3 documentation. Accessed on January 17, 2013.
  22. ^ R Reference manual p. 410.
  23. ^ [6]. The Racket Reference. Accessed on May 19, 2015.
  24. ^ Class: Array Ruby Documentation
  25. ^ [7] The Rust Standard Library Documentation. Accessed on March 7, 2017.
  26. ^ a b scala.collection.Set. Scala Standard Library 2.11.7, Accessed on July 12, 2015.
  27. ^ comm(1) Archived 2008-10-19 at the Wayback Machine., Unix Seventh Edition Manual, 1979.
  28. ^ "XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)". W3C. 13 April 2015.
  29. ^ Parameter Expansion, The Z Shell Manual.


External links[edit]