# Binary operation

Template:Distinguish
In mathematics, a **binary operation** on a set is a calculation that combines two elements of the set (called operands) to produce another element of the set (more formally, an operation whose arity is two, and whose two domains and one codomain are (subsets of) the same set). Examples include the familiar elementary arithmetic operations of addition, subtraction, multiplication and division. Other examples are readily found in different areas of mathematics, such as vector addition, matrix multiplication and conjugation in groups.

## Terminology

More precisely, a binary operation on a set *S* is a map which sends elements of the Cartesian product *S* × *S* to *S*:^{[1]}^{[2]}^{[3]}

Because the result of performing the operation on a pair of elements of *S* is again an element of *S*, the operation is called a **closed** binary operation on *S* (or sometimes expressed as having the property of closure).^{[4]} If *f* is not a function, but is instead a partial function, it is called a **partial binary operation**. For instance, division of real numbers is a partial binary operation, because one can't divide by zero: *a*/0 is not defined for any real *a*. Note however that both in algebra and model theory the binary operations considered are defined on all of *S* × *S*.

Sometimes, especially in computer science, the term is used for any binary function.

Binary operations are the keystone of algebraic structures studied in abstract algebra: they are essential in the definitions of groups, monoids, semigroups, rings, and more. Most generally, a *magma* is a set together with some binary operation defined on it.

## Properties and examples

Typical examples of binary operations are the addition (+) and multiplication (×) of numbers and matrices as well as composition of functions on a single set. For instance,

- On the set of real numbers
**R**, f(*a*,*b*) =*a*+*b*is a binary operation since the sum of two real numbers is a real number. - On the set of natural numbers
**N**, f(*a*,*b*) =*a*+*b*is a binary operation since the sum of two natural numbers is a natural number. This is a different binary operation than the previous one since the sets are different. - On the set M(2,2) of 2 × 2 matrices with real entries, f(
*A*,*B*) =*A*+*B*is a binary operation since the sum of two such matrices is another 2 × 2 matrix. - On the set M(2,2) of 2 × 2 matrices with real entries, f(
*A*,*B*) =*AB*is a binary operation since the product of two such matrices is another 2 × 2 matrix. - For a given set
*C*, let*S*be the set of all functions*h*:*C*→*C*. On*S*, f(*g*,*h*) =*g**h*=*g*(*h*(*c*)), the composition of the two functions*g*and*h*, is a binary operation since the composition of the two functions is another function on the set*C*(that is, a member of*S*).

Many binary operations of interest in both algebra and formal logic are commutative, satisfying f(*a*,*b*) = f(*b*,*a*) for all elements *a* and *b* in *S*, or associative, satisfying f(f(*a*,*b*), *c*) = f(*a*, f(*b*,*c*)) for all *a*, *b* and *c* in *S*. Many also have identity elements and inverse elements.

The first three examples above are commutative and all of the above examples are associative.

On the set of real numbers **R**, subtraction, that is, f(*a*,*b*) = *a* - *b*, is a binary operation which is not commutative since, in general, *a* - *b* ≠ *b* - *a*. It is also not associative, since, in general, *a* - (*b* - *c*) ≠ (*a* - *b*) - *c*; for instance, 1 - (2 - 3) = 2 but (1 - 2) - 3 = -4.

On the set of natural numbers **N**, the binary operation exponentiation, f(*a*,*b*) = *a*^{b}, is not commutative since, in general, *a*^{b} ≠ *b*^{a} and is also not associative since f(f(*a*,*b*),*c*) ≠ f(*a*, f(*b*,*c*)). For instance, with *a* = 2, *b* = 3 and *c* = 2, f(2^{3},2) = f(8,2) = 64, but f(2,3^{2}) = f(2,9) = 512. By changing the set **N** to the set of integers **Z**, this binary operation becomes a partial binary operation since it is now undefined when *a* = 0 and *b* is any negative integer. For either set, this operation has a *right identity* (which is 1) since f(*a*, 1) = *a* for all *a* in the set, which is not an *identity* (two sided identity) since f(1, *b*) ≠ *b* in general.

Division (/), a partial binary operation on the set of real or rational numbers, is not commutative or associative as well. Tetration(↑↑), as a binary operation on the natural numbers, is not commutative nor associative and has no identity element.

## Notation

Binary operations are often written using infix notation such as *a***b*, *a* + *b*, *a***·***b* or (by juxtaposition with no symbol) *ab* rather than by functional notation of the form *f*(*a*, *b*). Powers are usually also written without operator, but with the second argument as superscript.

Binary operations sometimes use prefix or (probably more often) postfix notation, both of which dispense with parentheses. They are also called, respectively, Polish notation and reverse Polish notation.

## Pair and tuple

A binary operation, *ab*, depends on the ordered pair (*a, b*) and so (*ab*)*c* (where the parentheses here mean first operate on the ordered pair (*a*, *b*) and then operate on the result of that using the ordered pair ((*ab*), *c*)) depends in general on the ordered pair ((*a*, *b*), *c*). Thus, for the general, non-associative case, binary operations can be represented with binary trees.

However:

- If the operation is associative, (
*ab*)*c*=*a*(*bc*), then the value of (*ab*)*c*depends only on the tuple (*a*,*b*,*c*). - If the operation is commutative,
*ab*=*ba*, then the value of (*ab*)*c*depends only on { {*a*,*b*},*c*}, where braces indicate multisets. - If the operation is both associative and commutative then the value of (
*ab*)*c*depends only on the multiset {*a*,*b*,*c*}. - If the operation is associative, commutative and idempotent,
*aa*=*a*, then the value of (*ab*)*c*depends only on the set {*a*,*b*,*c*}.

## Binary operations as ternary relations

A binary operation *f* on a set *S* may be viewed as a *ternary* relation on *S*, that is, the set of triples (*a*, *b*, *f(a,b)*) in *S* × *S* × *S* for all *a* and *b* in *S*.

## External binary operations

An **external binary operation** is a binary function from *K* × *S* to *S*. This differs from a binary operation in the strict sense in that *K* need not be *S*; its elements come from *outside*.

An example of an external binary operation is scalar multiplication in linear algebra. Here *K* is a field and *S* is a vector space over that field.

An external binary operation may alternatively be viewed as an action; *K* is acting on *S*.

Note that the dot product of two vectors is not a binary operation, external or otherwise, as it maps from *S*× *S* to *K*, where *K* is a field and *S* is a vector space over *K*.

## See also

## Notes

## References

- {{#invoke:citation/CS1|citation

|CitationClass=citation }}

- {{#invoke:citation/CS1|citation

|CitationClass=citation }}

- {{#invoke:citation/CS1|citation

|CitationClass=citation }}

- {{#invoke:citation/CS1|citation

|CitationClass=citation }}