This article is about the associative property in mathematics. For associativity in the central processing unit memory cache, see
CPU cache § Associativity. For associativity in programming languages, see
operator associativity. For the meaning of an associated group of people in linguistics, see
Associativity (linguistics).
"Associative" and "non-associative" redirect here. For associative and non-associative learning, see
Learning § Types.
Within an expression containing two or more occurrences in a row of the same associative operator, the order in which the
operations are performed does not matter as long as the sequence of the
operands is not changed. That is (after rewriting the expression with parentheses and in infix notation if necessary), rearranging the parentheses in such an expression will not change its value. Consider the following equations:
Even though the parentheses were rearranged on each line, the values of the expressions were not altered. Since this holds true when performing addition and multiplication on any
real numbers, it can be said that "addition and multiplication of real numbers are associative operations".
Associativity is not the same as
commutativity, which addresses whether the order of two operands affects the result. For example, the order does not matter in the multiplication of real numbers, that is, a × b = b × a, so we say that the multiplication of real numbers is a commutative operation. However, operations such as
function composition and
matrix multiplication are associative, but not (generally) commutative.
Associative operations are abundant in mathematics; in fact, many
algebraic structures (such as
semigroups and
categories) explicitly require their binary operations to be associative.
However, many important and interesting operations are non-associative; some examples include
subtraction,
exponentiation, and the
vector cross product. In contrast to the theoretical properties of real numbers, the addition of
floating point numbers in computer science is not associative, and the choice of how to associate an expression can have a significant effect on rounding error.
Definition
Formally, a
binary operation∗ on a
setS is called associative if it satisfies the associative law:
(x ∗ y) ∗ z = x ∗ (y ∗ z) for all x, y, z in S.
Here, ∗ is used to replace the symbol of the operation, which may be any symbol, and even the absence of symbol (
juxtaposition) as for
multiplication.
(xy)z = x(yz) = xyz for all x, y, z in S.
The associative law can also be expressed in functional notation thus: f(f(x, y), z) = f(x, f(y, z)).
Generalized associative law
If a binary operation is associative, repeated application of the operation produces the same result regardless of how valid pairs of parentheses are inserted in the expression.^{
[2]} This is called the generalized associative law. For instance, a product of four elements may be written, without changing the order of the factors, in five possible ways:
((ab)c)d
(ab)(cd)
(a(bc))d
a((bc)d)
a(b(cd))
If the product operation is associative, the generalized associative law says that all these expressions will yield the same result. So unless the expression with omitted parentheses already has a different meaning (see below), the parentheses can be considered unnecessary and "the" product can be written unambiguously as
An example where this does not work is the
logical biconditional↔. It is associative; thus, A ↔ (B ↔ C) is equivalent to (A ↔ B) ↔ C, but A ↔ B ↔ C most commonly means (A ↔ B) and (B ↔ C), which is not equivalent.
Examples
Some examples of associative operations include the following.
The
concatenation of the three strings "hello", " ", "world" can be computed by concatenating the first two strings (giving "hello ") and appending the third string ("world"), or by joining the second and third string (giving " world") and concatenating the first string ("hello") with the result. The two methods produce the same result; string concatenation is associative (but not commutative).
Because of associativity, the grouping parentheses can be omitted without ambiguity.
The trivial operation x ∗ y = x (that is, the result is the first argument, no matter what the second argument is) is associative but not commutative. Likewise, the trivial operation x ∘ y = y (that is, the result is the second argument, no matter what the first argument is) is associative but not commutative.
Addition and multiplication of
complex numbers and
quaternions are associative. Addition of
octonions is also associative, but multiplication of octonions is non-associative.
as before. In short, composition of maps is always associative.
In
category theory, composition of morphisms is associative by definition. Associativity of functors and natural transformations follows from associativity of morphisms.
Consider a set with three elements, A, B, and C. The following operation:
×
A
B
C
A
A
A
A
B
A
B
C
C
A
A
A
is associative. Thus, for example, A(BC) = (AB)C = A. This operation is not commutative.
Because
matrices represent
linear functions, and
matrix multiplication represents function composition, one can immediately conclude that matrix multiplication is associative.^{
[3]}
where "$\Leftrightarrow$" is a
metalogicalsymbol representing "can be replaced in a
proof with".
Truth functional connectives
Associativity is a property of some
logical connectives of truth-functional
propositional logic. The following
logical equivalences demonstrate that associativity is a property of particular connectives. The following (and their converses, since ↔ is commutative) are truth-functional
tautologies.^{[
citation needed]}
In mathematics, addition and multiplication of real numbers is associative. By contrast, in computer science, the addition and multiplication of
floating point numbers is not associative, as rounding errors are introduced when dissimilar-sized values are joined together.^{
[7]}
To illustrate this, consider a floating point representation with a 4-bit
mantissa:
Even though most computers compute with 24 or 53 bits of mantissa,^{
[8]} this is an important source of rounding error, and approaches such as the
Kahan summation algorithm are ways to minimise the errors. It can be especially problematic in parallel computing.^{
[9]}^{
[10]}
In general, parentheses must be used to indicate the
order of evaluation if a non-associative operation appears more than once in an expression (unless the notation specifies the order in another way, like ${\dfrac {2}{3/4}}$). However,
mathematicians agree on a particular order of evaluation for several common non-associative operations. This is simply a notational convention to avoid parentheses.
A left-associative operation is a non-associative operation that is conventionally evaluated from left to right, i.e.,
$\left.{\begin{array}{l}a*b*c=(a*b)*c\\a*b*c*d=((a*b)*c)*d\\a*b*c*d*e=(((a*b)*c)*d)*e\quad \\{\mbox{etc.}}\end{array}}\right\}{\mbox{for all }}a,b,c,d,e\in S$
while a right-associative operation is conventionally evaluated from right to left:
$\left.{\begin{array}{l}x*y*z=x*(y*z)\\w*x*y*z=w*(x*(y*z))\quad \\v*w*x*y*z=v*(w*(x*(y*z)))\quad \\{\mbox{etc.}}\end{array}}\right\}{\mbox{for all }}z,y,x,w,v\in S$
Both left-associative and right-associative operations occur. Left-associative operations include the following:
Subtraction and division of real numbers^{
[11]}^{
[12]}^{
[13]}^{
[14]}^{
[15]}
$x-y-z=(x-y)-z$
$x/y/z=(x/y)/z$
Function application
$(f\,x\,y)=((f\,x)\,y)$
This notation can be motivated by the
currying isomorphism, which enables partial application.
Right-associative operations include the following:
Exponentiation is commonly used with brackets or right-associatively because a repeated left-associative exponentiation operation is of little use. Repeated powers would mostly be rewritten with multiplication:
$(x^{y})^{z}=x^{(yz)}$
Formatted correctly, the superscript inherently behaves as a set of parentheses; e.g. in the expression $2^{x+3}$ the addition is performed
before the exponentiation despite there being no explicit parentheses $2^{(x+3)}$ wrapped around it. Thus given an expression such as $x^{y^{z}}$, the full exponent $y^{z}$ of the base $x$ is evaluated first. However, in some contexts, especially in handwriting, the difference between ${x^{y}}^{z}=(x^{y})^{z}$, $x^{yz}=x^{(yz)}$ and $x^{y^{z}}=x^{(y^{z})}$ can be hard to see. In such a case, right-associativity is usually implied.
William Rowan Hamilton seems to have coined the term "associative property"^{
[17]} around 1844, a time when he was contemplating the non-associative algebra of the
octonions he had learned about from
John T. Graves.^{
[18]}
^
Hungerford, Thomas W. (1974). Algebra (1st ed.).
Springer. p. 24.
ISBN978-0387905181. Definition 1.1 (i) a(bc) = (ab)c for all a, b, c in G.
^Durbin, John R. (1992).
Modern Algebra: an Introduction (3rd ed.). New York: Wiley. p. 78.
ISBN978-0-471-51001-7. If $a_{1},a_{2},\dots ,a_{n}\,\,(n\geq 2)$ are elements of a set with an associative operation, then the product $a_{1}a_{2}\cdots a_{n}$ is unambiguous; this is, the same element will be obtained regardless of how parentheses are inserted in the product.