Complement (set theory)
In set theory, a complement of a set A refers to things not in (that is, things outside of), 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 all elements in U but not in A.
Relative complement
If A and B are sets, then the relative complement of A in B, also termed the settheoretic difference of B and A, is the set of elements in B, but not in A.
The relative complement of A in B is denoted B ∖ A according to the ISO 3111 standard (sometimes written B − A, but this notation is ambiguous, as in some contexts it can be interpreted as the set of all b − a, where b is taken from B and a from A).
Formally
Examples:
 {1,2,3} ∖ {2,3,4} = {1}
 {2,3,4} ∖ {1,2,3} = {4}
 If is the set of real numbers and is the set of rational numbers, then is the set of irrational numbers.
The following lists some notable properties of relative complements in relation to the settheoretic operations of union and intersection.
If A, B, and C are sets, then the following identities hold:
 C ∖ (A ∩ B) = (C ∖ A)∪(C ∖ B)
 C ∖ (A ∪ B) = (C ∖ A)∩(C ∖ B)
 C ∖ (B ∖ A) = (A ∩ C)∪(C ∖ B)
 (B ∖ A) ∩ C = (B ∩ C) ∖ A = B∩(C ∖ A)
 (B ∖ A) ∪ C = (B ∪ C) ∖ (A ∖ C)
 A ∖ A = Ø
 Ø ∖ A = Ø
 A ∖ Ø = A
Absolute complement
If a universe U is defined, then the relative complement of A in U is called the absolute complement (or simply complement) of A, and is denoted by A^{c} or sometimes A′, also the same set often{{ safesubst:#invoke:Unsubstdate=__DATE__ $B= {{#invoke:Category handlermain}}{{#invoke:Category handlermain}}^{[citation needed]} }} is denoted by or if U is fixed, that is:
 A^{c} = U ∖ A.
For example, if the universe is the set of integers, then the complement of the set of odd numbers is the set of even numbers.
The following lists some important properties of absolute complements in relation to the settheoretic operations of union and intersection.
If A and B are subsets of a universe U, then the following identities hold:
 De Morgan's laws:
 Complement laws:

 (this follows from the equivalence of a conditional with its contrapositive)
 Involution or double complement law:
 Relationships between relative and absolute complements:
 A ∖ B = A ∩ B^{c}
 (A ∖ B)^{c} = A^{c} ∪ B
The first two complement laws above shows that if A is a nonempty, proper subset of U, then {A, A^{c}} is a partition of U.
Notation
In the LaTeX typesetting language, the command \setminus
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
:
 SQL
SELECT * FROM A
MINUS
SELECT * FROM B
 Mathematica
Complement
^{[1]}
 MATLAB
setdiff
^{[2]}
 MathML
<apply xmlns="http://www.w3.org/1998/Math/MathML"> <setdiff/> <ci type="set">A</ci> <ci type="set">B</ci></apply>
 Pascal
SetDifference := a  b;
 Python
diff = a.difference(b)
^{[3]}diff = a  b
^{[3]}
 Java
diff = a.clone();
diff.removeAll(b);
^{[4]}
 Scala
diff = a  b
^{[5]}
 C++
set_difference(a.begin(), a.end(), b.begin(), b.end(), result.begin());
 .NET Framework
a.Except(b);
 Haskell
a \\ b
^{[6]}
 Common Lisp
setdifference, nsetdifference
^{[7]}
 OCaml
Set.S.diff
^{[8]}
 Unix shell
comm 23 a b
^{[9]}grep vf b a
# less efficient, but works with small unsorted sets
 PHP
array_diff($a, $b);
^{[10]}
 R
setdiff
^{[11]}
 Ruby
diff = a  b
^{[12]}
 Perl
#for perl version >= 5.10
@a = grep {not $_ ~~ @b} @a;
 Prolog
a(X),\+ b(X).
See also
References
 ↑ Complement. Mathematica Documentation Center for version 6.0, updated in 2008. Accessed on March 7, 2008.
 ↑ Setdiff. MATLAB Function Reference for version 7.6, updated in 2008. Accessed on May 19, 2008.
 ↑ ^{3.0} ^{3.1} Set Types  set, frozenset. Python Library Reference release 2.5, updated on September 19, 2006. Accessed on February 13, 2008.
 ↑ Set (Java 2 Platform SE 5.0). JavaTM 2 Platform Standard Edition 5.0 API Specification, updated in 2004. Accessed on February 13, 2008.
 ↑ scala.collection.Set. Scala Standard Library release 2.8.1, Accessed on December 09, 2010.
 ↑ Data.Set (Haskell)
 ↑ Common Lisp HyperSpec, Function setdifference, nsetdifference. Accessed on September 8, 2009.
 ↑ Set.S (OCaml).
 ↑ comm(1), Unix Seventh Edition Manual, 1979.
 ↑ PHP: array_diff, PHP Manual
 ↑ R Reference manual p. 410.
 ↑ Class: Array Ruby Documentation
am:የውጭ ስብስብ ar:مجموعة مكملة be:Дапаўненне мностваў bg:Разлика (теория на множествата) ca:Complementari cs:Doplněk množiny de:Komplement (Mengenlehre) es:Complemento de un conjunto eo:Komplemento (aroteorio) eu:Osagarri (multzoteoria) fr:Complémentaire (théorie des ensembles) xal:Немгн ko:여집합 is:Fyllimengi it:Insieme complemento he:משלים (מתמטיקה) nl:Complement (verzamelingenleer) ja:差集合 oc:Ensemble complementari pl:Dopełnienie zbioru pt:Complementar ru:Разность множеств sk:Rozdiel množín fi:Joukkoerotus sv:Komplement th:ส่วนเติมเต็ม uk:Доповнення множин vi:Phần bù zhclassical:補集 zh:补集