# Complement (set theory)

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, also termed the difference of sets A and B, written B \ A, 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

### Definition

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): ${\displaystyle B\cap A^{c}=B\setminus A}$

The relative complement of A in B is denoted B \ A 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.

Formally:

${\displaystyle B\setminus A=\{x\in B\mid x\notin A\}.}$

### Examples

• ${\displaystyle \{1,2,3\}\setminus \{2,3,4\}=\{1\}}$.
• ${\displaystyle \{2,3,4\}\setminus \{1,2,3\}=\{4\}}$.
• If ${\displaystyle \mathbb {R} }$ is the set of real numbers and ${\displaystyle \mathbb {Q} }$ is the set of rational numbers, then ${\displaystyle \mathbb {R} \setminus \mathbb {Q} }$ is the set of irrational numbers.

### Properties

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

• ${\displaystyle C\setminus (A\cap B)=(C\setminus A)\cup (C\setminus B)}$.
• ${\displaystyle C\setminus (A\cup B)=(C\setminus A)\cap (C\setminus B)}$.
• ${\displaystyle C\setminus (B\setminus A)=(C\cap A)\cup (C\setminus B)}$,
with the important special case ${\displaystyle C\setminus (C\setminus A)=(C\cap A)}$ demonstrating that intersection can be expressed using only the relative complement operation.
• ${\displaystyle (B\setminus A)\cap C=(B\cap C)\setminus A=B\cap (C\setminus A)}$.
• ${\displaystyle (B\setminus A)\cup C=(B\cup C)\setminus (A\setminus C)}$.
• ${\displaystyle A\setminus A=\emptyset }$.
• ${\displaystyle \emptyset \setminus A=\emptyset }$.
• ${\displaystyle A\setminus \emptyset =A}$.

## Absolute complement

The absolute complement of A in U: ${\displaystyle A^{\complement }=U\setminus A}$

### Definition

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]

${\displaystyle A^{\complement }=U\setminus A}$.

Formally:

${\displaystyle A^{\complement }=\{x\in U\mid x\notin A\}.}$

The absolute complement of A is usually denoted by ${\displaystyle A^{\complement }}$. Other notations include ${\displaystyle A^{c}}$, ${\displaystyle {\overline {A}}}$, ${\displaystyle A'}$, ${\displaystyle \complement _{U}A}$, and ${\displaystyle \complement A}$.[4]

### Examples

• 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

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]
• ${\displaystyle \left(A\cup B\right)^{\complement }=A^{\complement }\cap B^{\complement }.}$
• ${\displaystyle \left(A\cap B\right)^{\complement }=A^{\complement }\cup B^{\complement }.}$
Complement laws:[1]
• ${\displaystyle A\cup A^{\complement }=U.}$
• ${\displaystyle A\cap A^{\complement }=\varnothing .}$
• ${\displaystyle \varnothing ^{\complement }=U.}$
• ${\displaystyle U^{\complement }=\varnothing .}$
• ${\displaystyle {\text{If }}A\subset B{\text{, then }}B^{\complement }\subset A^{\complement }.}$
(this follows from the equivalence of a conditional with its contrapositive).
Involution or double complement law:
• ${\displaystyle \left(A^{\complement }\right)^{\complement }=A.}$
Relationships between relative and absolute complements:
• ${\displaystyle A\setminus B=A\cap B^{\complement }.}$
• ${\displaystyle (A\setminus B)^{\complement }=A^{\complement }\cup B.}$
Relationship with set difference:
• ${\displaystyle A^{\complement }\setminus B^{\complement }=B\setminus A.}$

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

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

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
b.Except(a);
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]
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

## Notes

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.
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. ^
17. ^ [4]. GNU Octave Reference Manual
18. ^ PARI/GP User's Manual Archived September 11, 2015, at the Wayback Machine.
19. ^ PHP: array_diff, PHP Manual
20. ^ a b [5]. Python v2.7.3 documentation. Accessed on January 17, 2013.
21. ^
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.