### Binary function

In mathematics, a **binary function**, or **function of two variables**, is a function which takes two inputs.

Precisely stated, a function f is binary if there exists sets X, Y, Z such that

- \,f \colon X \times Y \rightarrow Z

where X \times Y is the Cartesian product of X and Y.

## Contents

## 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}, where *Z*^{Y} is the set of all functions from *Y* to *Z*, is called *currying*.

## 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 X \otimes Y to *Z*.

## Generalisations to ternary and other functions

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.