Recent from talks
Contribute something
Nothing was collected or created yet.
Function composition
View on Wikipedia
| Function |
|---|
| x ↦ f (x) |
| History of the function concept |
| Types by domain and codomain |
| Classes/properties |
| Constructions |
| Generalizations |
| List of specific functions |
In mathematics, the composition operator takes two functions, and , and returns a new function . Thus, the function g is applied after applying f to x. is pronounced "the composition of g and f".[1]
Reverse composition applies the operation in the opposite order, applying first and second. Intuitively, reverse composition is a chaining process in which the output of function f feeds the input of function g.
The composition of functions is a special case of the composition of relations, sometimes also denoted by . As a result, all properties of composition of relations are true of composition of functions,[2] such as associativity.
Examples
[edit]
- Composition of functions on a finite set: If f = {(1, 1), (2, 3), (3, 1), (4, 2)}, and g = {(1, 2), (2, 3), (3, 1), (4, 2)}, then g ∘ f = {(1, 2), (2, 1), (3, 2), (4, 3)}, as shown in the figure.
- Composition of functions on an infinite set: If f: R → R (where R is the set of all real numbers) is given by f(x) = 2x + 4 and g: R → R is given by g(x) = x3, then: (f ∘ g)(x) = f(g(x)) = f(x3) = 2x3 + 4, and(g ∘ f)(x) = g(f(x)) = g(2x + 4) = (2x + 4)3.
- If an airplane's altitude at time t is a(t), and the air pressure at altitude x is p(x), then (p ∘ a)(t) is the pressure around the plane at time t.
- Function defined on finite sets which change the order of their elements such as permutations can be composed on the same set, this being composition of permutations.
Properties
[edit]The composition of functions is always associative—a property inherited from the composition of relations.[2] That is, if f, g, and h are composable, then f ∘ (g ∘ h) = (f ∘ g) ∘ h.[3] Since the parentheses do not change the result, they are generally omitted.
In a strict sense, the composition g ∘ f is only meaningful if the codomain of f equals the domain of g; in a wider sense, it is sufficient that the former be an improper subset of the latter.[nb 1] Moreover, it is often convenient to tacitly restrict the domain of f, such that f produces only values in the domain of g. For example, the composition g ∘ f of the functions f : R → (−∞,+9] defined by f(x) = 9 − x2 and g : [0,+∞) → R defined by can be defined on the interval [−3,+3].

The functions g and f are said to commute with each other if g ∘ f = f ∘ g. Commutativity is a special property, attained only by particular functions, and often in special circumstances. For example, |x| + 3 = |x + 3| only when x ≥ 0. The picture shows another example.
The composition of one-to-one (injective) functions is always one-to-one. Similarly, the composition of onto (surjective) functions is always onto. It follows that the composition of two bijections is also a bijection. The inverse function of a composition (assumed invertible) has the property that (f ∘ g)−1 = g−1∘ f−1.[4]
Derivatives of compositions involving differentiable functions can be found using the chain rule. Higher derivatives of such functions are given by Faà di Bruno's formula.[3]
Composition of functions is sometimes described as a kind of multiplication on a function space, but has very different properties from pointwise multiplication of functions (e.g. composition is not commutative).[5]
Composition monoids
[edit]Suppose one has two (or more) functions f: X → X, g: X → X having the same domain and codomain; these are often called transformations. Then one can form chains of transformations composed together, such as f ∘ f ∘ g ∘ f. Such chains have the algebraic structure of a monoid, called a transformation monoid or (much more seldom) a composition monoid. In general, transformation monoids can have remarkably complicated structure. One particular notable example is the de Rham curve. The set of all functions f: X → X is called the full transformation semigroup[6] or symmetric semigroup[7] on X. (One can actually define two semigroups depending how one defines the semigroup operation as the left or right composition of functions.[8])

If the given transformations are bijective (and thus invertible), then the set of all possible combinations of these functions forms a transformation group (also known as a permutation group); and one says that the group is generated by these functions.
The set of all bijective functions f: X → X (called permutations) forms a group with respect to function composition. This is the symmetric group, also sometimes called the composition group. A fundamental result in group theory, Cayley's theorem, essentially says that any group is in fact just a subgroup of a symmetric group (up to isomorphism).[9]
In the symmetric semigroup (of all transformations) one also finds a weaker, non-unique notion of inverse (called a pseudoinverse) because the symmetric semigroup is a regular semigroup.[10]
Functional powers
[edit]If Y ⊆ X, then may compose with itself; this is sometimes denoted as . That is:
More generally, for any natural number n ≥ 2, the nth functional power can be defined inductively by f n = f ∘ f n−1 = f n−1 ∘ f, a notation introduced by Hans Heinrich Bürmann[citation needed][11][12] and John Frederick William Herschel.[13][11][14][12] Repeated composition of such a function with itself is called function iteration.
- By convention, f 0 is defined as the identity map on f 's domain, idX.
- If Y = X and f: X → X admits an inverse function f −1, negative functional powers f −n are defined for n > 0 as the negated power of the inverse function: f −n = (f −1)n.[13][11][12]
Note: If f takes its values in a ring (in particular for real or complex-valued f ), there is a risk of confusion, as f n could also stand for the n-fold product of f, e.g. f 2(x) = f(x) · f(x).[12] For trigonometric functions, usually the latter is meant, at least for positive exponents.[12] For example, in trigonometry, this superscript notation represents standard exponentiation when used with trigonometric functions:
sin2(x) = sin(x) · sin(x).
However, for negative exponents (especially −1), it nevertheless usually refers to the inverse function, e.g., tan−1 = arctan ≠ 1/tan.
In some cases, when, for a given function f, the equation g ∘ g = f has a unique solution g, that function can be defined as the functional square root of f, then written as g = f 1/2.
More generally, when gn = f has a unique solution for some natural number n > 0, then f m/n can be defined as gm.
Under additional restrictions, this idea can be generalized so that the iteration count becomes a continuous parameter; in this case, such a system is called a flow, specified through solutions of Schröder's equation. Iterated functions and flows occur naturally in the study of fractals and dynamical systems.
To avoid ambiguity, some mathematicians[citation needed] choose to use ∘ to denote the compositional meaning, writing f∘n(x) for the n-th iterate of the function f(x), as in, for example, f∘3(x) meaning f(f(f(x))). For the same purpose, f[n](x) was used by Benjamin Peirce[15][12] whereas Alfred Pringsheim and Jules Molk suggested nf(x) instead.[16][12][nb 2]
Alternative notations
[edit]Many mathematicians, particularly in group theory, omit the composition symbol, writing gf for g ∘ f.[17]
During the mid-20th century, some mathematicians adopted postfix notation, writing xf for f(x) and (xf)g for g(f(x)).[18] This can be more natural than prefix notation in many cases, such as in linear algebra when x is a row vector and f and g denote matrices and the composition is by matrix multiplication. The order is important because function composition is not necessarily commutative. Having successive transformations applying and composing to the right agrees with the left-to-right reading sequence.
Mathematicians who use postfix notation may write "fg", meaning first apply f and then apply g, in keeping with the order the symbols occur in postfix notation, thus making the notation "fg" ambiguous. Computer scientists may write "f ; g" for this,[19] thereby disambiguating the order of composition. To distinguish the left composition operator from a text semicolon, in the Z notation the ⨾ character is used for left relation composition.[20] Since all functions are binary relations, it is correct to use the [fat] semicolon for function composition as well (see the article on composition of relations for further details on this notation).
Composition operator
[edit]Given a function g, the composition operator Cg is defined as that operator which maps functions to functions as Composition operators are studied in the field of operator theory.
In programming languages
[edit]Function composition appears in one form or another in numerous programming languages.
Multivariate functions
[edit]Partial composition is possible for multivariate functions. The function resulting when some argument xi of the function f is replaced by the function g is called a composition of f and g in some computer engineering contexts, and is denoted f |xi = g
When g is a simple constant b, composition degenerates into a (partial) valuation, whose result is also known as restriction or co-factor.[21]
In general, the composition of multivariate functions may involve several other functions as arguments, as in the definition of primitive recursive function. Given f, a n-ary function, and n m-ary functions g1, ..., gn, the composition of f with g1, ..., gn, is the m-ary function
This is sometimes called the generalized composite or superposition of f with g1, ..., gn.[22] The partial composition in only one argument mentioned previously can be instantiated from this more general scheme by setting all argument functions except one to be suitably chosen projection functions. Here g1, ..., gn can be seen as a single vector/tuple-valued function in this generalized scheme, in which case this is precisely the standard definition of function composition.[23]
A set of finitary operations on some base set X is called a clone if it contains all projections and is closed under generalized composition. A clone generally contains operations of various arities.[22] The notion of commutation also finds an interesting generalization in the multivariate case; a function f of arity n is said to commute with a function g of arity m if f is a homomorphism preserving g, and vice versa, that is:[22]
A unary operation always commutes with itself, but this is not necessarily the case for a binary (or higher arity) operation. A binary (or higher arity) operation that commutes with itself is called medial or entropic.[22]
Generalizations
[edit]Composition can be generalized to arbitrary binary relations. If R ⊆ X × Y and S ⊆ Y × Z are two binary relations, then their composition amounts to
.
Considering a function as a special case of a binary relation (namely functional relations), function composition satisfies the definition for relation composition. A small circle R∘S has been used for the infix notation of composition of relations, as well as functions. When used to represent composition of functions however, the text sequence is reversed to illustrate the different operation sequences accordingly.
The composition is defined in the same way for partial functions and Cayley's theorem has its analogue called the Wagner–Preston theorem.[24]
The category of sets with functions as morphisms is the prototypical category. The axioms of a category are in fact inspired from the properties (and also the definition) of function composition.[25] The structures given by composition are axiomatized and generalized in category theory with the concept of morphism as the category-theoretical replacement of functions. The reversed order of composition in the formula (f ∘ g)−1 = (g−1 ∘ f −1) applies for composition of relations using converse relations, and thus in group theory. These structures form dagger categories.
The standard "foundation" for mathematics starts with sets and their elements. It is possible to start differently, by axiomatising not elements of sets but functions between sets. This can be done by using the language of categories and universal constructions.
. . . the membership relation for sets can often be replaced by the composition operation for functions. This leads to an alternative foundation for Mathematics upon categories -- specifically, on the category of all functions. Now much of Mathematics is dynamic, in that it deals with morphisms of an object into another object of the same kind. Such morphisms (like functions) form categories, and so the approach via categories fits well with the objective of organizing and understanding Mathematics. That, in truth, should be the goal of a proper philosophy of Mathematics.
Typography
[edit]The composition symbol ∘ is encoded as U+2218 ∘ RING OPERATOR (∘, ∘); see the Degree symbol article for similar-appearing Unicode characters. In TeX, it is written \circ.
See also
[edit]- Cobweb plot – a graphical technique for functional composition
- Combinatory logic
- Composition ring, a formal axiomatization of the composition operation
- Flow (mathematics)
- Function composition (computer science)
- Function of random variable, distribution of a function of a random variable
- Functional decomposition
- Functional square root
- Functional equation
- Higher-order function
- Infinite compositions of analytic functions
- Iterated function
- Lambda calculus
Notes
[edit]- ^ The strict sense is used, e.g., in category theory, where a subset relation is modelled explicitly by an inclusion function.
- ^ Alfred Pringsheim's and Jules Molk's (1907) notation nf(x) to denote function compositions must not be confused with Rudolf von Bitter Rucker's (1982) notation nx, introduced by Hans Maurer (1901) and Reuben Louis Goodstein (1947) for tetration, or with David Patterson Ellerman's (1995) nx pre-superscript notation for roots.
References
[edit]- ^ "Composition of Functions". nool.ontariotechu.ca. Retrieved 2025-02-07.
- ^ a b Velleman, Daniel J. (2006). How to Prove It: A Structured Approach. Cambridge University Press. p. 232. ISBN 978-1-139-45097-3.
- ^ a b Weisstein, Eric W. "Composition". mathworld.wolfram.com. Retrieved 2020-08-28.
- ^ Rodgers, Nancy (2000). Learning to Reason: An Introduction to Logic, Sets, and Relations. John Wiley & Sons. pp. 359–362. ISBN 978-0-471-37122-9.
- ^ "3.4: Composition of Functions". Mathematics LibreTexts. 2020-01-16. Retrieved 2020-08-28.
- ^ Hollings, Christopher (2014). Mathematics across the Iron Curtain: A History of the Algebraic Theory of Semigroups. American Mathematical Society. p. 334. ISBN 978-1-4704-1493-1.
- ^ Grillet, Pierre A. (1995). Semigroups: An Introduction to the Structure Theory. CRC Press. p. 2. ISBN 978-0-8247-9662-4.
- ^ Dömösi, Pál; Nehaniv, Chrystopher L. (2005). Algebraic Theory of Automata Networks: An introduction. SIAM. p. 8. ISBN 978-0-89871-569-9.
- ^ Carter, Nathan (2009-04-09). Visual Group Theory. MAA. p. 95. ISBN 978-0-88385-757-1.
- ^ Ganyushkin, Olexandr; Mazorchuk, Volodymyr (2008). Classical Finite Transformation Semigroups: An Introduction. Springer Science & Business Media. p. 24. ISBN 978-1-84800-281-4.
- ^ a b c Herschel, John Frederick William (1820). "Part III. Section I. Examples of the Direct Method of Differences". A Collection of Examples of the Applications of the Calculus of Finite Differences. Cambridge, UK: Printed by J. Smith, sold by J. Deighton & sons. pp. 1–13 [5–6]. Archived from the original on 2020-08-04. Retrieved 2020-08-04. [1] (NB. Inhere, Herschel refers to his 1813 work and mentions Hans Heinrich Bürmann's older work.)
- ^ a b c d e f g Cajori, Florian (1952) [March 1929]. "§472. The power of a logarithm / §473. Iterated logarithms / §533. John Herschel's notation for inverse functions / §535. Persistence of rival notations for inverse functions / §537. Powers of trigonometric functions". A History of Mathematical Notations. Vol. 2 (3rd corrected printing of 1929 issue, 2nd ed.). Chicago, USA: Open court publishing company. pp. 108, 176–179, 336, 346. ISBN 978-1-60206-714-1. Retrieved 2016-01-18.
[…] §473. Iterated logarithms […] We note here the symbolism used by Pringsheim and Molk in their joint Encyclopédie article: "2logb a = logb (logb a), …, k+1logb a = logb (klogb a)."[a] […] §533. John Herschel's notation for inverse functions, sin−1 x, tan−1 x, etc., was published by him in the Philosophical Transactions of London, for the year 1813. He says (p. 10): "This notation cos.−1 e must not be understood to signify 1/cos. e, but what is usually written thus, arc (cos.=e)." He admits that some authors use cos.m A for (cos. A)m, but he justifies his own notation by pointing out that since d2 x, Δ3 x, Σ2 x mean dd x, ΔΔΔ x, ΣΣ x, we ought to write sin.2 x for sin. sin. x, log.3 x for log. log. log. x. Just as we write d−n V=∫n V, we may write similarly sin.−1 x=arc (sin.=x), log.−1 x.=cx. Some years later Herschel explained that in 1813 he used fn(x), f−n(x), sin.−1 x, etc., "as he then supposed for the first time. The work of a German Analyst, Burmann, has, however, within these few months come to his knowledge, in which the same is explained at a considerably earlier date. He[Burmann], however, does not seem to have noticed the convenience of applying this idea to the inverse functions tan−1, etc., nor does he appear at all aware of the inverse calculus of functions to which it gives rise." Herschel adds, "The symmetry of this notation and above all the new and most extensive views it opens of the nature of analytical operations seem to authorize its universal adoption."[b] […] §535. Persistence of rival notations for inverse function.— […] The use of Herschel's notation underwent a slight change in Benjamin Peirce's books, to remove the chief objection to them; Peirce wrote: "cos[−1] x," "log[−1] x."[c] […] §537. Powers of trigonometric functions.—Three principal notations have been used to denote, say, the square of sin x, namely, (sin x)2, sin x2, sin2 x. The prevailing notation at present is sin2 x, though the first is least likely to be misinterpreted. In the case of sin2 x two interpretations suggest themselves; first, sin x ⋅ sin x; second,[d] sin (sin x). As functions of the last type do not ordinarily present themselves, the danger of misinterpretation is very much less than in case of log2 x, where log x ⋅ log x and log (log x) are of frequent occurrence in analysis. […] The notation sinn x for (sin x)n has been widely used and is now the prevailing one. […]
{{cite book}}: ISBN / Date incompatibility (help) (xviii+367+1 pages including 1 addenda page) (NB. ISBN and link for reprint of 2nd edition by Cosimo, Inc., New York, USA, 2013.) - ^ a b Herschel, John Frederick William (1813) [1812-11-12]. "On a Remarkable Application of Cotes's Theorem". Philosophical Transactions of the Royal Society of London. 103 (Part 1). London: Royal Society of London, printed by W. Bulmer and Co., Cleveland-Row, St. James's, sold by G. and W. Nicol, Pall-Mall: 8–26 [10]. doi:10.1098/rstl.1813.0005. JSTOR 107384. S2CID 118124706.
- ^ Peano, Giuseppe (1903). Formulaire mathématique (in French). Vol. IV. p. 229.
- ^ Peirce, Benjamin (1852). Curves, Functions and Forces. Vol. I (new ed.). Boston, USA. p. 203.
{{cite book}}: CS1 maint: location missing publisher (link) - ^ Pringsheim, Alfred; Molk, Jules (1907). Encyclopédie des sciences mathématiques pures et appliquées (in French). Vol. I. p. 195. Part I.
- ^ Ivanov, Oleg A. (2009-01-01). Making Mathematics Come to Life: A Guide for Teachers and Students. American Mathematical Society. pp. 217–. ISBN 978-0-8218-4808-1.
- ^ Gallier, Jean (2011). Discrete Mathematics. Springer. p. 118. ISBN 978-1-4419-8047-2.
- ^ Barr, Michael; Wells, Charles (1998). Category Theory for Computing Science (PDF). p. 6. Archived from the original (PDF) on 2016-03-04. Retrieved 2014-08-23. (NB. This is the updated and free version of book originally published by Prentice Hall in 1990 as ISBN 978-0-13-120486-7.)
- ^ ISO/IEC 13568:2002(E), p. 23
- ^ Bryant, R. E. (August 1986). "Logic Minimization Algorithms for VLSI Synthesis" (PDF). IEEE Transactions on Computers. C-35 (8): 677–691. doi:10.1109/tc.1986.1676819. S2CID 10385726.
- ^ a b c d Bergman, Clifford (2011). Universal Algebra: Fundamentals and Selected Topics. CRC Press. pp. 79–80, 90–91. ISBN 978-1-4398-5129-6.
- ^ Tourlakis, George (2012). Theory of Computation. John Wiley & Sons. p. 100. ISBN 978-1-118-31533-0.
- ^ Lipscomb, S. (1997). Symmetric Inverse Semigroups. AMS Mathematical Surveys and Monographs. p. xv. ISBN 0-8218-0627-0.
- ^ Hilton, Peter; Wu, Yel-Chiang (1989). A Course in Modern Algebra. John Wiley & Sons. p. 65. ISBN 978-0-471-50405-4.
- ^ "Saunders Mac Lane - Quotations". Maths History. Retrieved 2024-02-13.
External links
[edit]- "Composite function", Encyclopedia of Mathematics, EMS Press, 2001 [1994]
- "Composition of Functions" by Bruce Atwood, the Wolfram Demonstrations Project, 2007.
Function composition
View on Grokipedia. operator for .[5]
Fundamentals
Definition
In mathematics, a function is a mapping that assigns to each element in a set (the domain) a unique element in another set (the codomain).[6] For the composition of two functions to be well-defined, the codomain of the first function must match the domain of the second, ensuring that the output of the first lies within the input set of the second.[6] This prerequisite guarantees that the composition operates consistently across the entire domain of the initial function. Given functions and , their composition, denoted , is the function defined by for all .[6] This operation chains the mappings, where the result of applying to serves as the input to . In the case of partial functions, where the domain of definition is a proper subset of the intended domain, the composition is defined only on the subset of such that falls within the domain of , resulting in a potentially non-total function.[7] This restriction ensures the operation remains meaningful, though it may exclude some elements from the original domain. The concept of function composition originated in 18th-century mathematical analysis, with Johann Bernoulli providing an early description in 1718 as a quantity formed by combining a variable with constants in any manner.[8] Leonhard Euler further developed it in his 1748 work Introductio in analysin infinitorum, solidifying its role in analytic expressions by defining functions in terms of analytic expressions composed from variables and constants.[8]Notation
The standard notation for the composition of two functions and is the circle operator (Unicode U+2218), defined such that . This symbol, denoting the application of followed by , was introduced by the Nicolas Bourbaki collective in their seminal series Éléments de mathématique, with early documented usage appearing in a 1944 seminar report and formalized in the 1949 volume Fonctions d'une variable réelle.[9] In certain mathematical contexts, particularly within abstract algebra and category theory, function composition is instead denoted by simple juxtaposition, where . This convention treats functions as elements of a monoid under composition and is widely adopted in treatments of transformation groups and morphisms, emphasizing the operator-like nature of functions without an explicit symbol. The circle operator has higher precedence than function application in standard mathematical conventions, meaning expressions like are parsed as rather than , avoiding the need for additional parentheses in chained compositions. Historically, the notation for function composition evolved from verbal descriptions in the 18th century—such as Euler's explicit writings of composite expressions like —to more symbolic representations in the 19th century, as the concept of functions became increasingly abstract and algebraic. This shift, driven by the rigorous development of analysis by figures like Dirichlet and Weierstrass, paved the way for modern operator symbols, though no unified notation like emerged until the structuralist approach of Bourbaki in the 20th century.[8]Examples
Unary Function Examples
A fundamental illustration of function composition involves basic arithmetic operations. Consider the unary functions and , both defined on the real numbers. The composition applies first, yielding , and then to that result, giving . Another example combines transcendental functions: let and , with domains and ranges ensuring the composition is well-defined for real . Then . To evaluate step-by-step at , first compute , then . Composition also demonstrates the effect of inverse functions, which undo each other to produce the identity. For instance, with (defined for all real , range positive reals) and (natural logarithm, domain positive reals), the composition for all real , recovering the input unchanged.[10] In geometric contexts, function composition chains linear transformations on the plane, such as scaling followed by shifting. For example, a scaling function stretches distances from the origin by a factor of 2, while a shifting function translates horizontally by 3 units; their composition first doubles the input and then shifts it, resulting in a combined affine transformation that alters both scale and position.Multivariate Examples
In multivariate function composition, functions map from and to spaces of higher dimensions, such as to , requiring the output of the inner function to match the input domain of the outer function for the composition to be well-defined.[11] This extends the univariate case by handling vector inputs and outputs, often arising in vector calculus and linear algebra applications.[12] Consider the functions defined by and defined by . The composition is given by illustrating how the scalar output of feeds into the vector-producing .[13] Linear transformations, represented by matrices, provide another key example of multivariate composition. For instance, let be the rotation matrix by degrees in , and be the scaling matrix by factors and , The composition first rotates a vector and then scales it, with matrix , yielding This matrix product corresponds to applying the transformations sequentially.[14] In the context of differentiable multivariate functions, composition appears in the chain rule for partial derivatives. Suppose is the outer function , and is the inner function . The composite is . The partial derivatives satisfy demonstrating how gradients of the outer function apply to the Jacobian of the inner.[15] A real-world application occurs in signal processing pipelines, where vector-valued signals undergo sequential transformations. For example, consider a filtering function that applies a low-pass filter to an -channel audio signal , producing , followed by an amplification with for gain . The composition processes the raw signal through denoising before boosting, common in modular filter designs for audio or image data.[16]Properties
Associativity
Function composition exhibits the property of associativity. For functions , , and with compatible domains and codomains, the composition satisfies .[17] This equality holds because both sides define the same mapping from the domain of to the codomain of . To verify, let be in the domain of . Then, and Since the outputs match for every , the composed functions are identical.[18] The associativity of function composition implies that multiple compositions can be written without parentheses, such as , as the result is independent of grouping.[19] This property is inherited from the more general composition of binary relations in set theory, which is also associative but differs slightly in that relations permit multiple outputs while functions do not.[20] For a concrete verification, consider the arithmetic functions , , and over the reals. At , and The equality confirms associativity at this point, and it holds generally by the proof above.Invertibility and Other Properties
A function composition is invertible if and only if both and are invertible, provided the range of lies within the domain of .[21] In this case, the inverse is given by .[22] To verify this, substitute into the definition of the inverse: compute . First, the inner composition yields , where is the identity on the codomain of . Then, , the identity on the codomain of . Similarly, . Thus, serves as the two-sided inverse.[21] Function composition is generally non-commutative, meaning in most cases. For example, consider and over the real numbers. Then , while , which differ for all .[23] A function is idempotent under composition if . Projection functions provide classic examples; for instance, in linear algebra, an orthogonal projection operator onto a subspace satisfies , as applying the projection twice yields the same result as once.[24] Composition preserves continuity: if is continuous at a point and the range of lies in the domain of , where is continuous at , then is continuous at .[25] Similarly, composition preserves differentiability: if is differentiable at and is differentiable at , with the range of in the domain of , then is differentiable at .[26]Iteration and Powers
Functional Iteration
Functional iteration refers to the repeated composition of a single function with itself. For a function where is a set, the -th iterate is defined recursively as (the identity function) and for nonnegative integers , with .[27] This notation captures the process of applying exactly times to an input . A fixed point of is an element satisfying , meaning the iterate for all .[28] More generally, a periodic point of period is a point such that but for all , forming a cycle under iteration.[29] These points are fundamental in analyzing the long-term behavior of iterates, as orbits under may converge to fixed points, enter periodic cycles, or exhibit other dynamics. A classic example arises in chaos theory with the logistic map for and parameter . For , iterations from most initial converge to the stable fixed point . As increases beyond 3, the fixed point destabilizes, leading to period-doubling bifurcations where stable cycles of period 2, 4, 8, and higher emerge; at an accumulation point , chaotic behavior begins, with dense orbits and sensitive dependence on initial conditions, though periodic points persist densely in the interval. Convergence of the sequence of iterates to a fixed point occurs under certain conditions, such as when is a contraction mapping on a complete metric space. The Banach fixed-point theorem states that if there exists such that for all in the space (where is the metric), then has a unique fixed point , and iterations from any initial converge to with rate . This guarantees global convergence for contractions, providing a foundational result for iterative methods in analysis.Functional Powers
In the context of function composition, the integer powers of a function, known as functional powers, are defined through repeated self-composition. For a function where , the -th functional power for a positive integer is the -fold composition (applied times), so . This extends the base case of functional iteration to exponentiation within the semigroup of compositions, with and as the identity function. For functions that commute under composition (), more general exponentiation can be approached using exponential or logarithmic mappings, though integer powers remain the primary focus as they directly correspond to iterated application.[1] A significant extension of functional powers arises in the algebra of formal power series, where composition defines a ring structure under suitable conditions. Consider formal power series over a ring , such as (with no constant term) and ; their composition yields another formal power series , with coefficients determined recursively. When includes a nonzero constant term, composition may not always exist as a formal power series, but necessary and sufficient conditions ensure it does, such as the series being invertible or satisfying specific valuation properties. A classic example is the composition , which converges formally and illustrates how transcendental functions generate new series via powering and composition. This framework is foundational in algebraic analysis and generating function theory.[30] Fractional functional powers generalize integer powers to non-integer exponents by solving associated functional equations. For a square root, one seeks a function such that , denoted ; more broadly, for rational , . Real or fractional iterates satisfy and , often constructed via Abel's functional equation or Schröder's equation for linearization near fixed points. These solutions, typically real-analytic for suitable , enable exponentiation in continuous iteration settings, as explored for exponentially growing functions like .[31] An application of integer functional powers appears in quantum mechanics through the time evolution operator. For a time-independent Hamiltonian , the unitary operator evolves states via . For integer , this decomposes as , where the power signifies -fold composition of the operator, analogous to functional powering in the group of unitary transformations on Hilbert space. This structure underpins Trotter-Suzuki approximations for simulating evolution.[32]Algebraic Structures
Composition Monoids
In abstract algebra, the set of all functions from a nonempty set to itself, denoted , forms a monoid under the operation of function composition. The binary operation is defined by for all , which is associative, and the identity function , where for all , serves as the unit element satisfying for any . This structure is known as the full transformation monoid on , and when is finite with , it contains exactly elements.[33] Within this monoid, the subset of all bijective functions from to itself forms a submonoid consisting solely of invertible elements; this is the symmetric group on , often denoted or when .[34] For instance, when , the symmetric group comprises the six permutations of these elements and is itself a monoid under composition, with the identity permutation as the unit.[35] More generally, any submonoid of the full transformation monoid arises from a subset of transformations closed under composition and containing the identity. Transformation monoids find significant applications in automata theory, where the set represents the state space of a finite automaton, and elements of the monoid model transitions between states induced by input symbols, with composition corresponding to the sequential application of inputs.[36] This perspective allows algebraic techniques to analyze automaton behavior.[37]Semigroups and Related Structures
In abstract algebra, a semigroup is defined as a nonempty set equipped with an associative binary operation, forming an associative magma without necessarily requiring an identity element. Under function composition, the set of all functions from a finite set to itself constitutes the full transformation semigroup , where composition serves as the operation; this structure is associative by the properties of function composition.[38] Similarly, the set of all endomorphisms of a vector space over a field forms the endomorphism semigroup , consisting of linear maps closed under composition, which is associative.[39] In transformation semigroups like , Green's relations provide a classification of elements based on the principal ideals they generate. These include the left relation , where if for the semigroup with adjoined identity ; the right relation , where if ; the two-sided relation , where if ; the intersection ; and the relation .[40] In the context of finite transformation semigroups, the -relation particularly distinguishes elements by the size of their images (rank), linking transformations with equivalent domain-codomain behaviors through shared principal ideals generated by compositions.[40] For instance, two transformations are -related if they produce isomorphic structures in terms of image sets and relational restrictions.[40] Semigroup theory under function composition connects to combinatorics on words through functional graphs, where a function induces a directed graph with out-degree one at each vertex, and iterated compositions correspond to paths in this graph.[41] Words over an alphabet can encode such paths, while the Cayley graph of a semigroup encodes words as paths, facilitating the study of free semigroups generated by alphabets under concatenation, akin to composition in transformation settings.[41] This interplay appears in analyses of word avoidability and growth rates in subsemigroups of transformations.Multivariate and Higher-Dimensional Composition
Composition of Multivariate Functions
In multivariable calculus, the composition of functions extends the unary case to mappings between Euclidean spaces of arbitrary dimensions. Consider functions where and , and where . The composite function is defined by for , provided the composition is well-defined on the relevant domains.[12][42] For the composition to be defined pointwise, the image of must be contained in the domain of , ensuring that lies within the domain of for all ; however, need not be surjective onto the domain of , as the image of only requires inclusion in that domain.[42] This compatibility condition generalizes the domain restrictions in single-variable composition while accommodating vector inputs and outputs. The differentiability of composite multivariate functions is governed by an adaptation of the chain rule, expressed via Jacobian matrices. If is differentiable at and is differentiable at , then is differentiable at , with the Jacobian matrix satisfying where is the Jacobian of and is the Jacobian of , and the product is matrix multiplication.[42][15] A representative example arises in parametric representations, such as composing a map that distorts coordinates with an embedding that lifts to a surface; for instance, let and , yielding that parametrizes a parabolic surface from planar inputs.[43]Vector-Valued and Matrix Composition
Vector-valued functions map from a domain such as or to a vector space like . Consider a function that produces a vector output for each scalar input, and that takes a vector input and yields another vector. The composition is defined by , where the output vector of serves as the input vector to , provided the dimensions align such that the codomain of matches the domain of .[12] This process applies component-wise, as each component of the output vector from feeds into the corresponding input components of . In the linear case, vector-valued functions correspond to linear transformations between Euclidean spaces, represented by matrices. For linear maps and with standard matrices (an matrix) and (an matrix), the composition has standard matrix , the matrix product. This satisfies for any vector , confirming that matrix multiplication encodes the sequential application of transformations.[14][44] Key properties of such compositions include those of the trace and determinant. The trace of the composite matrix equals the trace of (when both products are defined), reflecting the cyclic invariance under composition. For square matrices , the determinant satisfies , which geometrically indicates that the composition scales volumes (or areas in 2D) by the product of the individual scaling factors and preserves or reverses orientation based on the signs.[45] In computer graphics, matrix compositions form transformation pipelines to manipulate 3D objects efficiently. A sequence of operations—such as scaling, rotation, and translation—is represented by multiplying corresponding 4×4 matrices (using homogeneous coordinates), with the rightmost matrix applied first; the resulting single matrix applies the full pipeline in one step, optimizing rendering in systems like OpenGL.[46]Generalizations
Category Theory Perspective
In category theory, function composition is abstracted and generalized through the framework of categories, where the category of sets, denoted , serves as a foundational example. In , the objects are sets and the morphisms are functions between those sets, with composition of morphisms defined precisely as the standard function composition: for functions and , the composite is given by for all .[47][48] This composition operation satisfies the axioms of associativity and the existence of identity morphisms (identity functions), making a category in the sense introduced by Samuel Eilenberg and Saunders Mac Lane.[47] Functoriality arises from the preservation of this composition under mappings between categories, known as functors. A functor between categories maps objects and morphisms while ensuring , thus respecting the compositional structure. In diagrammatic terms, this manifests as horizontal composition, where sequences of morphisms in commutative diagrams represent paths of composition; for instance, in a diagram with parallel paths from an object to via intermediate objects, the equality of composites along each path enforces the functorial preservation of function composition.[47][49] Such diagrams are central to verifying properties like commutativity, where horizontal juxtaposition of arrows denotes the sequential application akin to function chaining in .[47] At a higher level, natural transformations provide a notion of composition between functors themselves, treating them as "morphisms of morphisms." A natural transformation between functors assigns to each object in a morphism in , such that for any morphism in , the diagram commutes, i.e., . This ensures a coherent, component-wise composition that generalizes pointwise function application across structures.[50][47] Natural transformations compose vertically (stacking between the same pair of functors) or horizontally (via the Godement product, combining transformations between composed functors), extending the compositional paradigm beyond single morphisms.[49][50] Universal properties further illuminate composition in categories like , defining objects up to isomorphism via their morphisms. For example, the categorical product of objects and is an object equipped with projection morphisms and , satisfying the universal property: for any object with morphisms and , there exists a unique morphism such that and . In , with the standard projections, and the pairing composes the functions to embed into the Cartesian product, showcasing how composition mediates the "universal" mediating morphism.[47] This property underscores composition's role in constructing limits and colimits, where projections or inclusions form the compositional backbone of generalized products.Other Generalizations
Relation composition generalizes function composition to binary relations. Given binary relations and , their composition is defined as the set .[51] This operation is associative, meaning for compatible relations , but generally not commutative, as need not equal .[51] For multivalued functions, also known as multifunctions, composition extends the single-valued case by operating on sets of outputs. If and are multivalued functions, where denotes the power set of , their composition is given by .[52] This set-theoretic union captures all possible outputs by applying to each element in the image of , preserving the multivalued nature.[52] In partially ordered sets (posets), composition applies to the order relation itself, which is reflexive, antisymmetric, and transitive. The transitivity axiom ensures that the order relation satisfies , meaning repeated composition does not introduce new pairs beyond the original order.[53] Lattices, as special posets where every pair of elements has a least upper bound (join) and greatest lower bound (meet), inherit this property, allowing relation composition to model algebraic structures like semilattices through iterative joins or meets.[53] An practical application appears in database systems, where composing queries via relational joins mirrors relation composition. In relational algebra, the natural join of two relations and on a common attribute produces a new relation equivalent to the composition projected onto the desired attributes, enabling chained queries to combine data across multiple tables.[54] For instance, joining an "Employees" relation with a "Departments" relation on department ID composes employee-department mappings to yield a unified view of departmental staff.[54]Applications in Computing
In Programming Languages
In functional programming languages, function composition is a core feature that allows developers to combine functions declaratively, often using dedicated operators to create pipelines of transformations. Haskell provides the built-in composition operator(.) defined in the Prelude, with type (.) :: (b -> c) -> (a -> b) -> a -> c, where (f . g) x = f (g x), enabling the creation of new functions by chaining existing ones without explicit nesting.[55] For instance, composing double and square as double . square yields a function that first squares its input and then doubles the result, promoting concise and readable code in pure functional contexts.[55]
F#, another functional-first language, supports composition through the forward composition operator >>, which combines functions such that (f >> g) x applies f to x and then g to the result, facilitating the building of complex transformations from simpler components.[56] Complementing this, F# includes the pipe-forward operator |>, which applies a value to a function on its right, as in x |> f |> g, effectively simulating composition at the value level for enhanced expressiveness in data processing workflows.[56]
In imperative languages, function composition is typically achieved through libraries or manual techniques rather than native operators. JavaScript lacks a standard composition operator but supports it via utility functions in libraries like Ramda or Lodash, or through the proposed pipeline operator |>, which would enable syntax like value |> f |> g to pass outputs sequentially, improving readability over nested calls.[57] Python's functools.reduce from the standard library can implement composition by cumulatively applying functions to an initial value, such as using a lambda to chain transformations over a list of functions, though it is more general-purpose for folding operations.[58]
Lambda calculus, the foundational model for functional programming, treats function composition implicitly through β-reduction, the primary reduction rule that applies a function by substituting its argument into the body, as in (λx. e₂) e₁ → [e₁/x] e₂, effectively composing abstractions during evaluation.[59] This mechanism underpins computation in languages like Haskell, where repeated β-reductions simulate the chaining of functions without explicit composition operators.[59]
Across programming paradigms, function composition manifests in object-oriented programming through method chaining, a form of fluent interface where methods return the object itself to allow sequential calls, as in obj.method1().method2(), composing operations on the same instance for builder-like patterns.[60] In reactive programming, libraries like ReactiveX enable composition of observables via operators such as map, filter, and merge, where each operator returns a new observable that processes emissions from the previous one, allowing declarative assembly of asynchronous data flows.[61]
Algorithmic Implementations
In the direct evaluation of a function composition such as , the naive approach computes the inner function first and then applies the outer function to the result, which is straightforward for shallow compositions but incurs redundant computations if intermediate values from or prior functions are reused across multiple evaluations or branches.[62] This method scales linearly with the depth of the composition for a single input but becomes inefficient for complex pipelines where inner functions are expensive, as each evaluation restarts from the innermost layer without retaining intermediates.[63] Memoization addresses this by caching the outputs of inner functions, such as storing in a key-value structure indexed by , to enable constant-time retrieval for subsequent calls within the same or extended compositions like . This technique transforms potentially quadratic or worse recomputation costs into linear or sublinear time in practice, especially for compositions with overlapping subproblems, by avoiding repeated execution of deterministic inner functions.[64] Selective memoization variants further optimize by applying caching only to high-cost subfunctions, preserving efficiency in memory-constrained environments while ensuring correctness for pure functions.[65] In parallel computing contexts, such as GPU shader pipelines, function composition facilitates the application of transformation sequences—like matrix multiplications for vertex processing—to vast arrays of data elements simultaneously, with each GPU thread independently evaluating the composed function on its assigned input. This leverages the massively parallel architecture of GPUs, where compositions of affine transformations or pixel operations are pipelined across shader stages, achieving high throughput by distributing the workload without inter-thread dependencies for independent inputs. For instance, in rendering pipelines, sequential compositions of shading functions are executed in parallel across pixels, reducing latency through hardware-accelerated dataflow networks. The computational complexity of evaluating function compositions varies by structure: linear chains of constant-time functions can be precomposed into a single O(1)-time evaluator per input, enabling efficient batch processing, whereas naive evaluation of deep tree-like compositions without sharing can lead to exponential time due to duplicative inner computations across branches. Optimized parallel algorithms, such as those using state machine reductions or prefix computations, achieve O(n) total work and O(\log n) depth for composing sequences of n functions, making them suitable for scalable implementations on parallel hardware.[63]Notation and Typography
Alternative Notations
Point-free notation, also known as tacit programming, is a style in which functions are composed without explicitly referencing their arguments, relying instead on combinators and composition operators to define behavior. This approach originates from combinatory logic and is prominently featured in functional programming languages like Haskell, where the composition operator (.) allows expressions such as f . g to denote the function that applies g first and then f, eliminating the need to name input points. In libraries such as Ramda for JavaScript or the compose recipe in Python's documentation using functools.reduce, point-free definitions are facilitated by utilities like compose(f, g), which returns a new function equivalent to f ∘ g (applying g then f).[66] The arrow notation, common in type theory and category theory, specifies function domains and codomains while implying composition through chaining. For morphisms f: X → Y and g: Y → Z, the composite is denoted g ∘ f: X → Z, visually aligning the arrows to illustrate the flow from domain to codomain without additional symbols. This convention underscores the diagrammatic nature of categories, where arrow diagrams directly represent compositions.[67][68] Historical variants of composition notation in the 19th century include the semicolon, used by Dirichlet in works on analytic functions and residues to separate variables from parameters in expressions like f(x; a), though extended in relational contexts to denote sequential application. Other early forms, such as Jordan's juxtaposition AB for substitution sequences (1870) or Lie's TU for transformation products (1888), prefigured modern composition by representing chained operations on groups or manifolds. These notations evolved amid developments in analysis and algebra, prioritizing clarity in iterative applications over standardized symbols.[69]Typographical Conventions
In mathematical typography, the symbol for function composition is the ring operator ∘, encoded as U+2218 in Unicode, which is specifically noted for representing composite functions.[70] This symbol is rendered with thin spaces on either side when separating function names, as in the expression , to ensure clarity and prevent visual crowding in printed or digital formats.[71] Spacing conventions distinguish composition from function application: juxtaposition of function symbols, such as to denote , requires no intervening space, reflecting their direct association, whereas the composition operator ∘ is treated as a binary relation or operator, warranting medium or thick mathematical spacing around it in typesetting systems like LaTeX, where the command\circ automatically inserts appropriate gaps via \medmuskip or \thickmuskip.[71] In contrast, multi-letter function names like or are often set without spaces in application but spaced around ∘ for composition.[72]
Font selection emphasizes distinction between elements: function names and variables are typically set in mathematical italic (sloping) font to indicate they are quantities or identifiers, while the composition operator ∘ itself is rendered in upright (roman) font as a fixed mathematical symbol, aligning with standards for operators to avoid confusion with italicized variables.[73] Mathematical italics require a dedicated design—wider than text italics by 5–10% with adjusted kerning—to ensure letters like or remain legible and separable when composed.[72]
In digital media, rendering challenges arise without full Unicode support; plain text environments often fallback to a lowercase 'o' or an asterisk '*' as approximations for ∘, though this can lead to ambiguity, as 'o' may resemble the letter rather than the operator.[74] For accessibility, screen readers handling mathematical content via MathML or similar markup pronounce ∘ as "ring operator" or "composition" when supported by extensions like MathCAT, enabling navigation of expressions like as structured sequences rather than flat text.[75][76]