Simplify
Details and Options
- Simplify tries expanding, factoring, and doing many other transformations on expressions, keeping track of the simplest form obtained.
- Simplify can be used on equations, inequalities, and domain specifications.
- Quantities that appear algebraically in inequalities are always assumed to be real.
- FullSimplify does more extensive simplification than Simplify.
- You can specify default assumptions for Simplify 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 300 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.
- Simplify can be used with symbolic array expressions.
Examples
open all close allBasic Examples (3)
D[Integrate[1 / (x ^ 3 + 1), x], x]Simplify[%]Simplify a trigonometric expression:
Simplify[Sin[x] ^ 2 + Cos[x] ^ 2]Simplify can get further if assumptions are made about x:
Simplify[Sqrt[x ^ 2]]Simplify[Sqrt[x ^ 2], x > 0]Simplify[Sqrt[x ^ 2], Element[x, Reals]]Scope (5)
Simplify[(x - 1)(x + 1)(x ^ 2 + 1) + 1]Simplify a rational expression:
Simplify[3 / (x + 3) + x / (x + 3)]Simplify a trigonometric expression:
Simplify[2Tan[x] / (1 + Tan[x] ^ 2)]Simplify an exponential expression:
Simplify[(E ^ x - E ^ -x) / Sinh[x]]Simplify[2x - 4y + 6z - 10 == -8]Simplify expressions using assumptions:
Simplify[1 / Sqrt[x] - Sqrt[1 / x], x > 0]Simplify[Log[x ^ p], x > 0 && Element[p, Reals]]Simplify[Sin[n Pi], Element[n, Integers]]Use assumptions to prove inequalities:
Simplify[x ^ 2 > 3, x > 2]Simplify[Abs[x] < 2, x ^ 2 + y ^ 2 < 4]Simplify symbolic array expressions:
Simplify[a.b + 2a.c]Simplify[m.Inverse[m], Element[m, Matrices[{n, n}]]]a = MatrixSymbol["a", {n, n}];
Simplify[Tr[Transpose[KroneckerProduct[Transpose[a], a]]]]Simplify[D[(VectorSymbol["v", n] + x).(VectorSymbol["v", n] + x), x], Element[x, Complexes]]Options (10)
Assumptions (3)
Assumptions can be given both as an argument and as an option value:
Simplify[Cos[k Pi] ^ m, Element[k, Integers], Assumptions -> Mod[m, 2] == 0]The default value of the Assumptions option is $Assumptions:
Assuming[x > 0, Simplify[Sqrt[x ^ 2]]]Simplify[Sqrt[x ^ 2]]When assumptions are given as an argument, $Assumptions is used as well:
Assuming[x > 0, Simplify[Sqrt[x ^ 2 y ^ 2], y < 0]]Specifying assumptions as an option value prevents Simplify from using $Assumptions:
Assuming[x > 0, Simplify[Sqrt[x ^ 2 y ^ 2], Assumptions -> y < 0]]ComplexityFunction (2)
The default ComplexityFunction counts the subexpressions and digits of integers:
Simplify[100 Log[2]]LeafCount counts only the number of subexpressions:
Simplify[100 Log[2], ComplexityFunction -> LeafCount]With the default ComplexityFunction, Abs[x] is simpler than the FullForm of -x:
Simplify[Abs[x], x < 0]Map[FullForm, {Abs[x], -x}]This complexity function makes Abs more expensive than Times:
f[e_] := 100Count[e, _Abs, {0, Infinity}] + LeafCount[e]Simplify[Abs[x], x < 0, ComplexityFunction -> f]ExcludedForms (1)
Simplify[(x - 1)(x + 1)(x ^ 2 + 1)(x - 2) ^ 10]Excluding transformations of (x-2)^10 allows Simplify to expand the remaining terms:
Simplify[(x - 1)(x + 1)(x ^ 2 + 1)(x - 2) ^ 10, ExcludedForms -> {(_Plus) ^ _}]TimeConstraint (2)
This takes a long time, due to trigonometric expansion, but does not yield a simplification:
Simplify[2Sin[10x + 11y + 12z]Cos[10x + 10y + 10t]]//TimingUse TimeConstraint to limit the time spent on any single transformation:
Simplify[2Sin[10x + 11y + 12z]Cos[10x + 10y + 10t], TimeConstraint -> 1]//TimingA similar example, where the transformation yields a simplification:
Simplify[2Sin[10x + 11y + 12z]Cos[10x + 10y + 10z]]//TimingIn this case, setting TimeConstraint prevents some simplification:
Simplify[2Sin[10x + 11y + 12z]Cos[10x + 10y + 10z], TimeConstraint -> 1]//TimingTransformationFunctions (1)
Here Simplify uses t as the only transformation:
t[e_] := PolynomialReduce[e, {s ^ 2 + c ^ 2 - 1}, {c, s}][[2]]Simplify[(c ^ 3 - s ^ 3) ^ 2 - (s ^ 3 + c ^ 3) ^ 2, TransformationFunctions -> {t}]Here Simplify uses both t and all built-in transformations:
Simplify[(c ^ 3 - s ^ 3) ^ 2 - (s ^ 3 + c ^ 3) ^ 2, TransformationFunctions -> {Automatic, t}]Applications (4)
Prove that a solution satisfies its equations:
Solve[x ^ 2 + x + 1 == 0, x]x ^ 2 + x + 1 == 0 /. %//SimplifyDSolve[y''[x] + y[x] == Exp[x], y, x]y''[x] + y[x] == Exp[x] /. First[%]//SimplifyRSolve[y[k + 2] + y[k] == 2 ^ k, y, k]y[k + 2] + y[k] == 2 ^ k /. First[%]//SimplifyShow that the arithmetic mean is larger than the geometric one:
Simplify[(x + y) / 2 >= Sqrt[x y], x >= 0 && y >= 0]This applies Fermat's little theorem:
Simplify[Mod[a ^ p, p], a∈Integers && p∈Primes]Prove commutativity from Wolfram's minimal axiom for Boolean algebra:
Simplify[f[a, b] == f[b, a], ForAll[{p, q, r}, f[f[f[p, q], r], f[p, f[f[p, r], p]]] == r]]Properties & Relations (3)
Use Assuming to propagate assumptions:
Assuming[x > 0, Simplify[Sqrt[x ^ 2]]]Use FullSimplify to simplify expressions involving special functions:
Simplify[Gamma[x] Gamma[1 - x]]FullSimplify[%]ArraySimplify performs only array transformations:
v = VectorSymbol["v", n / 2 + m / 2];ArraySimplify[v - Transpose[v]]Simplify performs other transformations as well:
Simplify[v - Transpose[v]]Possible Issues (2)
The Wolfram Language evaluates zero times a symbolic expression to zero:
0 symbolicThis happens even if the symbolic expression is always infinite:
hiddenzero = x ^ 2 + 2x + 1 - (x + 1) ^ 2;0 / hiddenzeroBecause of this, results of simplification of expressions with singularities are uncertain:
anotherhiddenzero = Sin[x] ^ 2 + Cos[x] ^ 2 - 1;betterhiddenzero = Gamma[x + 1] - x Gamma[x];Map[Simplify, {hiddenzero / anotherhiddenzero, anotherhiddenzero / hiddenzero, hiddenzero / betterhiddenzero, betterhiddenzero / hiddenzero}]In this case, FullSimplify recognizes the zero:
FullSimplify[betterhiddenzero]Results of simplification may depend on the names of symbols:
Simplify[(1 - a ^ 2) / b ^ 2, a ^ 2 + b ^ 2 == 1]Simplify[(1 - c ^ 2) / b ^ 2, c ^ 2 + b ^ 2 == 1]Related Guides
Related Links
History
Introduced in 1988 (1.0) | Updated in 1996 (3.0) ▪ 1999 (4.0) ▪ 2000 (4.1) ▪ 2002 (4.2) ▪ 2003 (5.0) ▪ 2014 (10.0) ▪ 2025 (14.2)
Text
Wolfram Research (1988), Simplify, Wolfram Language function, https://reference.wolfram.com/language/ref/Simplify.html (updated 2025).
CMS
Wolfram Language. 1988. "Simplify." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/Simplify.html.
APA
Wolfram Language. (1988). Simplify. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Simplify.html
BibTeX
@misc{reference.wolfram_2026_simplify, author="Wolfram Research", title="{Simplify}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/Simplify.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_simplify, organization={Wolfram Research}, title={Simplify}, year={2025}, url={https://reference.wolfram.com/language/ref/Simplify.html}, note=[Accessed: 13-June-2026]}