FunctionBijective[f,x]
tests whether
has exactly one solution x∈Reals for each y∈Reals.
FunctionBijective[f,x,dom]
tests whether
has exactly one solution x∈dom for each y∈dom.
FunctionBijective[{f1,f2,…},{x1,x2,…},dom]
tests whether
has exactly one solution x1,x2,…∈dom for each y1,y2,…∈dom.
FunctionBijective[{funs,xcons,ycons},xvars,yvars,dom]
tests whether
has exactly one solution with xvars∈dom restricted by the constraints xcons for each yvars∈dom restricted by the constraints ycons.
FunctionBijective
FunctionBijective[f,x]
tests whether
has exactly one solution x∈Reals for each y∈Reals.
FunctionBijective[f,x,dom]
tests whether
has exactly one solution x∈dom for each y∈dom.
FunctionBijective[{f1,f2,…},{x1,x2,…},dom]
tests whether
has exactly one solution x1,x2,…∈dom for each y1,y2,…∈dom.
FunctionBijective[{funs,xcons,ycons},xvars,yvars,dom]
tests whether
has exactly one solution with xvars∈dom restricted by the constraints xcons for each yvars∈dom restricted by the constraints ycons.
Details and Options
- A bijective function is also known as one-to-one and onto.
- A function
is bijective if for each
there is exactly one
such that
. - FunctionBijective[{funs,xcons,ycons},xvars,yvars,dom] returns True if the mapping
is bijective, where
is the solution set of xcons and
is the solution set of ycons. - If funs contains parameters other than xvars, the result is typically a ConditionalExpression.
- Possible values for dom are Reals and Complexes. If dom is Reals, then all variables, parameters, constants and function values are restricted to be real.
- The domain of funs is restricted by the condition given by FunctionDomain.
- xcons and ycons can contain equations, inequalities or logical combinations of these.
- The following options can be given:
-
Assumptions $Assumptions assumptions on parameters GenerateConditions True whether to generate conditions on parameters PerformanceGoal $PerformanceGoal whether to prioritize speed or quality - Possible settings for GenerateConditions include:
-
Automatic nongeneric conditions only True all conditions False no conditions None return unevaluated if conditions are needed - Possible settings for PerformanceGoal are "Speed" and "Quality".
Examples
open all close allBasic Examples (4)
Test bijectivity of a univariate function over the reals:
FunctionBijective[Sinh[x], x]Test bijectivity over the complexes:
FunctionBijective[Sinh[x], x, Complexes]Test bijectivity of a polynomial mapping over the reals:
FunctionBijective[{x + y ^ 3, y - x ^ 5}, {x, y}]Test bijectivity of a polynomial with symbolic coefficients:
FunctionBijective[x ^ 3 + a x + b, x]Scope (10)
FunctionBijective[x ^ 3 - x, x]Some values are attained more than once:
Plot[{x ^ 3 - x, 1 / 4}, {x, -2, 2}]Bijectivity between subsets of the reals:
FunctionBijective[{x ^ 3 - x, x > 1, y > 0}, x, y]For
, each positive value is attained exactly once:
Plot[{x ^ 3 - x, 10}, {x, 1, 3}]Bijectivity over the complexes:
FunctionBijective[Log[x], x, Complexes]Reduce[Log[x] == y, x]The logarithm is bijective onto
:
FunctionBijective[{Log[x], True, -Pi < Im[y] ≤ Pi}, x, y, Complexes]Bijectivity over a subset of complexes:
FunctionBijective[{x ^ 4, Re[x] ≥ 0 && Im[x] > 0 || x == 0}, x, Complexes]
is not bijective over the whole complex plane:
FunctionBijective[x ^ 4, x, Complexes]Some values are attained more than once:
Reduce[x ^ 4 == 1, x]Bijectivity over the integers:
FunctionBijective[{x + 1, Element[x, Integers], Element[y, Integers]}, x, y]Bijectivity of linear mappings:
A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};FunctionBijective[A.{x, y, z}, {x, y, z}]B = {{1, 2, 3}, {4, 5, 6}, {7, 8, 0}};FunctionBijective[B.{x, y, z}, {x, y, z}]A linear mapping is bijective iff its matrix is square and of the maximal rank:
{MatrixRank[A], MatrixRank[B]}Bijectivity of polynomial mappings
:
FunctionBijective[{x ^ 3 - 3x y ^ 2, 3x ^ 2y - y ^ 3}, {x, y}]The restricted mapping
, equal to the real and imaginary part of
, is bijective:
FunctionBijective[{{x ^ 3 - 3x y ^ 2, 3x ^ 2y - y ^ 3}, x ≥ 0 && y ≥ 0, u ≤ 0 || v ≥ 0}, {x, y}, {u, v}]Bijectivity of polynomial mappings
:
FunctionBijective[{x + y ^ 3, y - x ^ 5}, {x, y}, Complexes]The Jacobian determinant of a bijective complex polynomial mapping must be constant:
Det[D[{x + y ^ 3, y - x ^ 5}, {{x, y}}]]The Jacobian conjecture states that the reverse implication is true:
Det[D[{x - (x + y / 27) ^ 3, y + (3 x + y / 9) ^ 3}, {{x, y}}]]Indeed, this polynomial mapping with a constant Jacobian is bijective:
FunctionBijective[{x - (x + y / 27) ^ 3, y + (3 x + y / 9) ^ 3}, {x, y}, Complexes]Bijectivity of a real polynomial with symbolic parameters:
FunctionBijective[x ^ 3 + a x ^ 2 + b x + c, x]Bijectivity of a real polynomial mapping with symbolic parameters:
FunctionBijective[{x + a y ^ 3, y + b x ^ 3}, {x, y}]Options (4)
Assumptions (1)
FunctionBijective gives a conditional answer here:
FunctionBijective[{x + a y ^ 3, y + 2 x ^ 3}, {x, y}]This checks the bijectivity for the remaining real values of
:
FunctionBijective[{x + a y ^ 3, y + 2 x ^ 3}, {x, y}, Assumptions -> a > 0]GenerateConditions (2)
By default, FunctionBijective may generate conditions on symbolic parameters:
FunctionBijective[x ^ 3 + a x ^ 2 + b x + c, x]With GenerateConditions->None, FunctionBijective fails instead of giving a conditional result:
FunctionBijective[x ^ 3 + a x ^ 2 + b x + c, x, GenerateConditions -> None]This returns a conditionally valid result without stating the condition:
FunctionBijective[x ^ 3 + a x ^ 2 + b x + c, x, GenerateConditions -> False]By default, all conditions are reported:
FunctionBijective[a x, x, Complexes]With GenerateConditions->Automatic, conditions that are generically true are not reported:
FunctionBijective[a x, x, Complexes, GenerateConditions -> Automatic]PerformanceGoal (1)
Use PerformanceGoal to avoid potentially expensive computations:
FunctionBijective[x ^ 5 + a x ^ 4 + b x ^ 3 + c x ^ 2 + d x, x, PerformanceGoal -> "Speed"]The default setting uses all available techniques to try to produce a result:
FunctionBijective[x ^ 5 + a x ^ 4 + b x ^ 3 + c x ^ 2 + d x, x]Applications (11)
Basic Applications (8)
FunctionBijective[x ^ 3, x]Each value is attained exactly once:
Plot[{x ^ 3, -3, 3}, {x, -2, 2}]FunctionBijective[x ^ 3 - x, x]Some values, e.g.
, are attained more than once:
Plot[{x ^ 3 - x, 1 / 4}, {x, -2, 2}]FunctionBijective[ArcTan[x], x]Some values, e.g.
, are not attained:
Plot[{ArcTan[x], 2}, {x, -5, 5}]
is bijective in its real domain:
FunctionBijective[Log[x], x]Each value is attained exactly once:
Plot[{Log[x], -1, 1}, {x, 0, 5}]FunctionBijective[SinhIntegral[x], x]Plot[SinhIntegral[x], {x, -5, 5}]FunctionBijective[Hyperfactorial[x], x]Plot[Hyperfactorial[x], {x, -1, 2}]A function is bijective iff it is injective and surjective:
FunctionInjective[x ^ 3 / (x ^ 2 + 1), x]FunctionSurjective[x ^ 3 / (x ^ 2 + 1), x]FunctionBijective[x ^ 3 / (x ^ 2 + 1), x]Plot[x ^ 3 / (x ^ 2 + 1), {x, -1, 1}]
is not bijective because it is not injective:
FunctionInjective[x Sin[x], x]FunctionBijective[x Sin[x], x]Plot[x Sin[x], {x, -20, 20}]
is not bijective because it is not surjective:
FunctionSurjective[Erf[x], x]FunctionBijective[Erf[x], x]Plot[Erf[x], {x, -5, 5}]A function is bijective if any horizontal line intersects the graph exactly once:
f = (3x ^ 7 + 3x ^ 2 + x ^ 3) / (x ^ 6 + 2x ^ 2);FunctionBijective[f, x]Manipulate[Plot[{f, a}, ...], {{a, 1.5}, -5, 5}]FunctionBijective[SinIntegral[x], x]Some horizontal lines intersect the graph more than once; others do not intersect it at all:
Manipulate[Plot[{SinIntegral[x], a}, ...], {{a, 1.5}, -3, 3}]Composition of bijective functions
is bijective:
FunctionBijective[x ^ 3, x]FunctionBijective[Sinh[x], x]FunctionBijective[#, x]& /@ {Sinh[x ^ 3], Sinh[x] ^ 3}An affine mapping
given by
is bijective if the rank of
equals
:
Subscript[A, 1] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 0}};MatrixRank[Subscript[A, 1]]FunctionBijective[Subscript[A, 1].{x, y, z} + {1, 2, 3}, {x, y, z}]Subscript[A, 2] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};MatrixRank[Subscript[A, 2]]FunctionBijective[Subscript[A, 2].{x, y, z} + {1, 2, 3}, {x, y, z}]Probability (1)
CDF of a distribution with a strictly positive PDF is bijective onto
:
pdf = PDF[NormalDistribution[], x]FunctionSign[pdf, x]Plot[pdf, {x, -5, 5}]cdf = CDF[NormalDistribution[], x]FunctionBijective[{cdf, True, 0 < y < 1}, x, y]Plot[cdf, {x, -3, 3}]SurvivalFunction is bijective onto
as well:
sf = SurvivalFunction[NormalDistribution[], x]FunctionBijective[{sf, True, 0 < y < 1}, x, y]Plot[sf, {x, -5, 5}]Quantile is bijective onto the reals:
qf = Quantile[NormalDistribution[], x]FunctionBijective[qf, x]Plot[qf, {x, 0, 1}]Calculus (2)
Compute
by change of variables:
e = Exp[-(x ^ 3 + y ^ 2) ^ 2] / (y ^ 6 + 1)x ^ 2y ^ 2;If
is a bijective mapping
, then
:
f[{u_, v_}] := 1 / 9Exp[-u ^ 2] / (v ^ 2 + 1)g = {x ^ 3 + y ^ 2, y ^ 3};f[g]Det[D[g, {{x, y}}]] === eCheck that
is a bijective mapping
:
FunctionBijective[g, {x, y}]Integrate[f[{u, v}], {u, -Infinity, Infinity}, {v, -Infinity, Infinity}]Compute the original integral directly:
Integrate[e, {x, -Infinity, Infinity}, {y, -Infinity, Infinity}]Compute the surface area of a ball with radius
using a rational parametrization:
f = {(2 r (1 - t^2) u/(1 + t^2) (1 + u^2)), (4 r t u/(1 + t^2) (1 + u^2)), (r (1 - u^2)/1 + u^2)};ParametricPlot3D[Evaluate[f /. r -> 1], {t, -50, 50}, {u, 0, 50}, ...]Check that the parametrization is bijective onto the ball less a lower-dimensional set:
FunctionBijective[{f, u > 0, x ^ 2 + y ^ 2 + z ^ 2 == r ^ 2 && (y ≠ 0 || x > 0)}, {t, u}, {x, y, z}, Assumptions -> r > 0]The surface area is equal to the integral of square root of Gram determinant of
:
df = D[f, {{t, u}}];Integrate[Sqrt[Det[Transpose[df].df]], {u, 0, ∞}, {t, -∞, ∞}, Assumptions -> r > 0]Properties & Relations (3)
is bijective iff the equation
has exactly one solution for each
:
FunctionBijective[x ^ 2 + x + 1, x]FunctionBijective[x ^ 3 + x + 1, x]Use Solve to find the solutions:
Solve[x ^ 2 + x + 1 == y, x, Reals]Solve[x ^ 3 + x + 1 == y, x, Reals]A real continuous function on an interval is bijective iff it is monotonic and the limits at endpoints are
and
:
FunctionBijective[{Sec[x], -Pi / 2 < x < Pi / 2}, x]FunctionBijective[{Tan[x], -Pi / 2 < x < Pi / 2}, x]Plot[{Sec[x], Tan[x]}, {x, -Pi / 2, Pi / 2}]Use FunctionMonotonicity to determine the monotonicity of a function:
FunctionMonotonicity[{Sec[x], -Pi / 2 < x < Pi / 2}, x]FunctionMonotonicity[{Tan[x], -Pi / 2 < x < Pi / 2}, x]Use Limit to compute the limits:
Limit[{Sec[x], Tan[x]}, x -> -Pi / 2, Direction -> "FromAbove"]Limit[{Sec[x], Tan[x]}, x -> Pi / 2, Direction -> "FromBelow"]A complex polynomial mapping is bijective iff it has a polynomial inverse:
F = {x - (x + y / 27) ^ 3, y + (3 x + y / 9) ^ 3};FunctionBijective[F, {x, y}, Complexes]Use Solve to find the polynomial inverse:
G = {x, y} /. Solve[{u, v} == {x - (x + y / 27) ^ 3, y + (3 x + y / 9) ^ 3}, {x, y}][[1]]Verify that
is a two-sided inverse of
:
Expand[G /. Thread[{u, v} -> F]]Expand[F /. Thread[{x, y} -> G]]Possible Issues (2)
FunctionBijective determines the real domain of functions using FunctionDomain:
FunctionBijective[{Cosh[Sqrt[x]], True, y ≥ 1}, x, y]//Quiet
is bijective onto
in the real domain reported by FunctionDomain:
FunctionDomain[Cosh[Sqrt[x]], x]Plot[{Cosh[Sqrt[x]], 7}, {x, 0, 10}]
is real valued and not bijective onto
over the whole reals:
Plot[{Cosh[Sqrt[x]], -1 / 2}, {x, -20, 10}]All subexpressions of
need to be real valued for a point to belong to the real domain of
:
Refine[Element[Sqrt[x], Reals], x < 0]FunctionBijective restricts the domain to the inverse image of the solution set of ycons:
FunctionBijective[{x / 2, Element[x, Integers], Element[y, Integers]}, x, y]Division by two is a bijection between the even integers (the inverse image of integers) and the integers.
Related Guides
History
Text
Wolfram Research (2020), FunctionBijective, Wolfram Language function, https://reference.wolfram.com/language/ref/FunctionBijective.html.
CMS
Wolfram Language. 2020. "FunctionBijective." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FunctionBijective.html.
APA
Wolfram Language. (2020). FunctionBijective. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FunctionBijective.html
BibTeX
@misc{reference.wolfram_2026_functionbijective, author="Wolfram Research", title="{FunctionBijective}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FunctionBijective.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_functionbijective, organization={Wolfram Research}, title={FunctionBijective}, year={2020}, url={https://reference.wolfram.com/language/ref/FunctionBijective.html}, note=[Accessed: 13-June-2026]}