FullSimplify[expr]
tries a wide range of transformations on expr involving elementary and special functions and returns the simplest form it finds.
FullSimplify[expr,assum]
does simplification using assumptions.
FullSimplify
FullSimplify[expr]
tries a wide range of transformations on expr involving elementary and special functions and returns the simplest form it finds.
FullSimplify[expr,assum]
does simplification using assumptions.
Details and Options
- FullSimplify will always yield at least as simple a form as Simplify, but may take substantially longer.
- FullSimplify uses RootReduce on expressions that involve Root objects.
- FullSimplify does transformations on most kinds of special functions.
- With assumptions of the form ForAll[vars,axioms], FullSimplify can simplify expressions and equations involving symbolic functions. »
- You can specify default assumptions for FullSimplify using Assuming.
- The following options can be given:
-
Assumptions $Assumptions default assumptions to append to assum ComplexityFunction Automatic how to assess the complexity of each form generated ExcludedForms {} patterns specifying forms of subexpression that should not be touched TimeConstraint Infinity for how many seconds to try doing any particular transformation TransformationFunctions Automatic functions to try in transforming the expression Trig True whether to do trigonometric as well as algebraic transformations - Assumptions can consist of equations, inequalities, domain specifications such as x∈Integers, and logical combinations of these.
- With the setting TimeConstraint->{tloc,ttot}, at most tloc seconds are spent for any particular transformation, and at most ttot seconds are spent for all transformations before the best result is returned.
- FullSimplify can be used with symbolic array expressions.
Examples
open all close allBasic Examples (3)
Simplify an expression involving special functions:
FullSimplify[x Gamma[x]]FullSimplify[ProductLog[x Log[x]], x > 1 / E]Prove a simple theorem from the assumption of associativity:
FullSimplify[f[f[u, f[v, w]], u] == f[u, f[f[v, w], u]],
ForAll[{a, b, c}, f[a, f[b, c]] == f[f[a, b], c]]]Scope (9)
FullSimplify[x ^ 3 - 6x ^ 2 + 11x - 6]FullSimplify[(x ^ 10 - 1)(x ^ 10 + 1)]Simplify a hyperbolic expression to an exponential form:
FullSimplify[Cosh[x] - Sinh[x]]Simplify an exponential expression to a trigonometric form:
FullSimplify[(1 + I)E ^ (-I x) + (1 - I)E ^ (I x)]FullSimplify[Sqrt[2] + Sqrt[3] - Sqrt[5 + 2Sqrt[6]]]Simplify transcendental numbers:
FullSimplify[-I Log[(1 + 2I) / Sqrt[5]]]FullSimplify[16 ArcTan[1 / 5] - 4 ArcTan[1 / 239]]Simplify expressions involving special functions:
FullSimplify[ExpIntegralE[1 - n, x]x ^ n]FullSimplify[Csc[Pi v](BesselI[-v, z] - BesselI[v, z]) / 2]Simplify expressions using assumptions:
FullSimplify[ProductLog[x E ^ x], x ≥ -1]FullSimplify[E ^ (EllipticF[x, 1]), -Pi / 2 < x < Pi / 2]FullSimplify[EulerPhi[p ^ 2] + p, Element[p, Primes]]Prove theorems based on axiom systems:
FullSimplify[f[f[b, a], a] == f[a, f[b, a]], ForAll[{a, b}, f[a, b] == f[b, a]]]FullSimplify[f[a, a] == f[a, b], ForAll[{a, b}, f[f[a, a], b] == a]]Any expression can be used as a variable:
FullSimplify[Subscript[a, 1]⊕Subscript[a, 1] == Subscript[a, 1]⊕Subscript[a, 2], ForAll[{a, b}, (a⊕a)⊕b == a]]Variables not quantified in the axioms are treated as constants:
FullSimplify[f[f[e, e], e] == e, ForAll[a, f[a, e] == a]]Prove existence of right inverses assuming left identity and left inverses exist:
FullSimplify[ForAll[x, Exists[y, g[x, y] == e]], ForAll[{x, y, z}, g[x, g[y, z]] == g[g[x, y], z] && g[e, x] == x && g[inv[x], x] == e]]Simplify symbolic arrays expressions:
FullSimplify[Transpose[ArraySymbol["a", {n, n, m}, Symmetric[{1, 2}]]]]Options (6)
Assumptions (1)
Assumptions can be given both as an argument and as an option value:
FullSimplify[Mod[a ^ EulerPhi[m], m], Element[a | m, Integers] && m > 1, Assumptions -> GCD[a, m] == 1]The default value of the Assumptions option is $Assumptions:
Assuming[Re[x] > 0, FullSimplify[E ^ LogGamma[x]]]When assumptions are given as an argument, $Assumptions is used as well:
Assuming[x > 0, FullSimplify[E ^ (LogGamma[x] + LogGamma[y]), y > 0]]Specifying assumptions as an option value prevents FullSimplify from using $Assumptions:
Assuming[x > 0, FullSimplify[E ^ (LogGamma[x] + LogGamma[y]), Assumptions -> y > 0]]ComplexityFunction (1)
By default, this expression is not simplified:
FullSimplify[ChebyshevT[n, x]]This complexity function makes ChebyshevT more expensive than other functions:
f[e_] := 100Count[e, _ChebyshevT, {0, Infinity}] + LeafCount[e]FullSimplify[ChebyshevT[n, x], ComplexityFunction -> f]ExcludedForms (1)
TimeConstraint (1)
This takes a long time due to expansion of trigonometric functions:
FullSimplify[2Sin[12x + 15y]Cos[12x + 21y]]//AbsoluteTimingThe most time‐consuming transformation is not the one that does the simplification:
ClearSystemCache[];
FullSimplify[2Sin[12x + 15y]Cos[12x + 21y], TimeConstraint -> 1]//AbsoluteTimingWith transformations restricted to 100 ms, the simplification does not happen:
ClearSystemCache[];
FullSimplify[2Sin[12x + 15y]Cos[12x + 21y], TimeConstraint -> 0.1]//AbsoluteTimingTransformationFunctions (1)
By default, FullSimplify does not use Reduce:
FullSimplify[Boole[E ^ x < 7], x < 3 / 2]This makes FullSimplify use Reduce with respect to x over the real domain:
t[e_] := Reduce[e, x, Reals]FullSimplify[Boole[E ^ x < 7], x < 3 / 2, TransformationFunctions -> {Automatic, t}]Trig (1)
By default, FullSimplify uses trigonometric identities:
FullSimplify[4Sin[x] ^ 2Cos[x] ^ 2 + 4Sin[x]Cos[x] + 1]With Trig->False, FullSimplify does not use trigonometric identities:
FullSimplify[4Sin[x] ^ 2Cos[x] ^ 2 + 4Sin[x]Cos[x] + 1, Trig -> False]Applications (6)
Prove that a solution satisfies its equations:
Solve[x + 2Exp[x] == 1, x]//Quietx + 2Exp[x] == 1 /. First[%]//FullSimplifyDSolve[y''[x] - Exp[x]y[x] == 0, y, x]y''[x] - Exp[x]y[x] == 0 /. First[%]//FullSimplifyRSolve[y[k + 1] == k y[k], y, k]y[k + 1] == k y[k] /. First[%]//FullSimplifySimplify expressions involving Mod:
FullSimplify[CellularAutomaton[{Mod[Total[#], 2] &, {}, 1}, {{a}, 0}, 4], 0 <= a <= 1 && a ∈ Integers]Prove that an operation g with associativity, left neutral element, and left inverse defines a group:
FullSimplify[ForAll[x, g[x, e] == x && g[a, inv[a]] == e], ForAll[{x, y, z}, g[x, g[y, z]] == g[g[x, y], z] && g[e, x] == x && g[inv[x], x] == e]]Prove commutativity from Wolfram's minimal axiom for Boolean algebra:
FullSimplify[f[a, b] == f[b, a], ForAll[{p, q, r}, f[f[f[p, q], r], f[p, f[f[p, r], p]]] == r]]Prove that a fixed-point combinator exists:
FullSimplify[Exists[{Y}, Y == apply[combinator, Y]], ForAll[{x, y}, apply[apply[l, x], y] == apply[x, apply[y, y]]]]Prove a theorem about meet (⋁) and join (⋀):
FullSimplify[a⋁(a⋀b) == a, Subscript[∀, {x, y, z}](x⋀(y⋁(x⋁z)) == x && x⋁y⋀(x⋀z) == x && ((x⋁y)⋀(y⋁z))⋀y == y && (x⋀y⋁y⋀z)⋁y == y)]Properties & Relations (7)
The output is generically equivalent to the input:
e = 2Log[2 + 2I] - Log[16I];f = FullSimplify[e]e == f//NFullSimplify uses a wider range of transformations than Simplify:
Simplify[Gamma[x] Gamma[1 - x]]FullSimplify[%]FullSimplify uses several expansion transformations, including Expand:
Expand[(x + y) ^ 5]TrigExpand[Sin[x + y]Cosh[x - y]]PiecewiseExpand[Min[x, y, z]]FunctionExpand[Beta[x, z]]FunctionExpand[HypergeometricPFQ[{1, 1, 1 / 2}, {2, 2}, x]]LogicalExpand[Xor[x, y, z]]PowerExpand makes special assumptions on input and is not used by FullSimplify:
PowerExpand[(x y) ^ z]ComplexExpand assumes variables to be real and is also not used by FullSimplify:
ComplexExpand[Sin[x + I y]]FullSimplify uses several factoring transformations, including Factor:
p = Expand[(x + 1) ^ 2(x + 2) ^ 2(x + 3) ^ 3]Factor[p]FactorSquareFree[p]TrigFactor[Cos[y] Sin[x] + Cos[x] Sin[y]]For algebraic numbers, RootReduce and ToRadicals are used:
RootReduce[Sqrt[2] + Sqrt[3]]ToRadicals[%]For rational functions, Together and Apart are used:
Apart[1 / ((x + 1)(x + 2) ^ 2(x + 3) ^ 3)]Together[%]Possible Issues (3)
Some of the transformations used by FullSimplify are only generically correct:
FullSimplify[Gamma[1 - x]Gamma[x]Sin[Pi x]]Gamma[1 - x]Gamma[x]Sin[Pi x] /. Table[{x -> i}, {i, -3, 3}]Results of simplification of singular expressions are uncertain:
FullSimplify[Gamma[1 - x]Gamma[x]Sin[Pi x], Element[x, Integers]]This result is caused by automatic evaluation:
Gamma[1 - x]Gamma[x]0Results of simplification may depend on the names of symbols:
FullSimplify[(1 - a ^ 2) / b ^ 2, a ^ 2 + b ^ 2 == 1]FullSimplify[(1 - c ^ 2) / b ^ 2, c ^ 2 + b ^ 2 == 1]Neat Examples (1)
FullSimplify knows about Fermat's last theorem:
FullSimplify[x ^ n + y ^ n == z ^ n, Element[x | y | z | n, Integers] && n > 2 && x y z ≠ 0]Related Links
History
Introduced in 1996 (3.0) | Updated in 1999 (4.0) ▪ 2000 (4.1) ▪ 2002 (4.2) ▪ 2003 (5.0) ▪ 2007 (6.0) ▪ 2014 (10.0) ▪ 2025 (14.2)
Text
Wolfram Research (1996), FullSimplify, Wolfram Language function, https://reference.wolfram.com/language/ref/FullSimplify.html (updated 2025).
CMS
Wolfram Language. 1996. "FullSimplify." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/FullSimplify.html.
APA
Wolfram Language. (1996). FullSimplify. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FullSimplify.html
BibTeX
@misc{reference.wolfram_2026_fullsimplify, author="Wolfram Research", title="{FullSimplify}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/FullSimplify.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_fullsimplify, organization={Wolfram Research}, title={FullSimplify}, year={2025}, url={https://reference.wolfram.com/language/ref/FullSimplify.html}, note=[Accessed: 12-June-2026]}