# Binary function

Template:Distinguish
{{ safesubst:#invoke:Unsubst||$N=Unreferenced |date=__DATE__ |$B=
{{#invoke:Message box|ambox}}
}}
In mathematics, a **binary function**, or **function of two variables**, is a function which takes two inputs.

Precisely stated, a function is binary if there exists sets such that

where is the Cartesian product of and

## Alternative Definitions

Set-theoretically, one may represent a binary function as a subset of the Cartesian product *X* × *Y* × *Z*, where (*x*,*y*,*z*) belongs to the subset if and only if *f*(*x*,*y*) = *z*.
Conversely, a subset *R* defines a binary function if and only if, for any *x* in *X* and *y* in *Y*, there exists a unique *z* in *Z* such that (*x*,*y*,*z*) belongs to *R*.
We then define *f* (*x*,*y*) to be this *z*.

Alternatively, a binary function may be interpreted as simply a function from *X* × *Y* to *Z*.
Even when thought of this way, however, one generally writes *f* (*x*,*y*) instead of *f*((*x*,*y*)).
(That is, the same pair of parentheses is used to indicate both function application and the formation of an ordered pair.)

## Example - Division

Division of whole numbers can be thought of as a function; if **Z** is the set of integers, **N**^{+} is the set of natural numbers (except for zero), and **Q** is the set of rational numbers, then division is a binary function from **Z** and **N**^{+} to **Q**.

## Restrictions to ordinary functions

In turn, one can also derive ordinary functions of one variable from a binary function.
Given any element *x* of *X*, there is a function *f* ^{x}, or *f* (*x*,·), from *Y* to *Z*, given by *f* ^{x}(*y*) := *f* (*x*,*y*).
Similarly, given any element *y* of *Y*, there is a function *f* _{y}, or *f* (·,*y*), from *X* to *Z*, given by *f* _{y}(*x*) := *f* (*x*,*y*). (In computer science, this identification between a function from *X* × *Y* to *Z* and a function from *X* to *Z*^{Y} is called Currying.)
NB: *Z*^{Y} is the set of all functions from *Y* to *Z*

## Generalisations

The various concepts relating to functions can also be generalised to binary functions.
For example, the division example above is *surjective* (or *onto*) because every rational number may be expressed as a quotient of an integer and a natural number.
This example is *injective* in each input separately, because the functions *f* ^{x} and *f* _{y} are always injective.
However, it's not injective in both variables simultaneously, because (for example) *f* (2,4) = *f* (1,2).

One can also consider *partial* binary functions, which may be defined only for certain values of the inputs.
For example, the division example above may also be interpreted as a partial binary function from **Z** and **N** to **Q**, where **N** is the set of all natural numbers, including zero.
But this function is undefined when the second input is zero.

A binary operation is a binary function where the sets *X*, *Y*, and *Z* are all equal; binary operations are often used to define algebraic structures.

In linear algebra, a bilinear transformation is a binary function where the sets *X*, *Y*, and *Z* are all vector spaces and the derived functions *f* ^{x} and *f*_{y} are all linear transformations.
A bilinear transformation, like any binary function, can be interpreted as a function from *X* × *Y* to *Z*, but this function in general won't be linear.
However, the bilinear transformation can also be interpreted as a single linear transformation from the tensor product to *Z*.

## Generalisations to ternary and other functions

{{#invoke:see also|seealso}}
The concept of binary function generalises to *ternary* (or *3-ary*) *function*, *quaternary* (or *4-ary*) *function*, or more generally to *n-ary function* for any natural number *n*.
A *0-ary function* to *Z* is simply given by an element of *Z*.
One can also define an *A-ary function* where *A* is any set; there is one input for each element of *A*.

## Category theory

In category theory, *n*-ary functions generalise to *n*-ary morphisms in a multicategory.
The interpretation of an *n*-ary morphism as an ordinary morphisms whose domain is some sort of product of the domains of the original *n*-ary morphism will work in a monoidal category.
The construction of the derived morphisms of one variable will work in a closed monoidal category.
The category of sets is closed monoidal, but so is the category of vector spaces, giving the notion of bilinear transformation above.