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$Assumptionsdefault assumptions to append to assum
    ComplexityFunctionAutomatichow to assess the complexity of each form generated
    ExcludedForms{}patterns specifying forms of subexpression that should not be touched
    TimeConstraintInfinityfor how many seconds to try doing any particular transformation
    TransformationFunctionsAutomaticfunctions to try in transforming the expression
    TrigTruewhether to do trigonometric as well as algebraic transformations
  • Assumptions can consist of equations, inequalities, domain specifications such as xIntegers, 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.

Examples

open allclose all

Basic Examples  (3)

Simplify an expression involving special functions:

Simplify using assumptions:

Prove a simple theorem from the assumption of associativity:

Scope  (8)

Simplify polynomials:

Simplify a hyperbolic expression to an exponential form:

Simplify an exponential expression to a trigonometric form:

Simplify an algebraic number:

Simplify transcendental numbers:

Simplify expressions involving special functions:

Simplify expressions using assumptions:

Prove theorems based on axiom systems:

Any expression can be used as a variable:

Variables not quantified in the axioms are treated as constants:

Prove existence of right inverses assuming left identity and left inverses exist:

Options  (8)

Assumptions  (1)

Assumptions can be given both as an argument and as an option value:

The default value of the Assumptions option is $Assumptions:

When assumptions are given as an argument, $Assumptions is used as well:

Specifying assumptions as an option value prevents FullSimplify from using $Assumptions:

ComplexityFunction  (1)

By default, this expression is not simplified:

This complexity function makes ChebyshevT more expensive than other functions:

ExcludedForms  (1)

This gives a result in terms of Arg[x]:

This specifies that Log[x] should not be transformed:

TimeConstraint  (3)

This takes a long time due to expansion of trigonometric functions:

The most timeconsuming transformation is not the one that does the simplification:

With transformations restricted to 100 ms, the simplification does not happen:

TransformationFunctions  (1)

By default, FullSimplify does not use Reduce:

This makes FullSimplify use Reduce with respect to x over the real domain:

Trig  (1)

By default, FullSimplify uses trigonometric identities:

With Trig->False, FullSimplify does not use trigonometric identities:

Applications  (6)

Prove that a solution satisfies its equations:

Simplify expressions involving Mod:

Prove that an operation g with associativity, left neutral element, and left inverse defines a group:

Prove commutativity from Wolfram's minimal axiom for Boolean algebra:

Prove that a fixed-point combinator exists:

Prove a theorem about meet () and join ():

Properties & Relations  (7)

The output is generically equivalent to the input:

FullSimplify uses a wider range of transformations than Simplify:

FullSimplify uses several expansion transformations, including Expand:

TrigExpand:

PiecewiseExpand:

FunctionExpand:

LogicalExpand:

PowerExpand makes special assumptions on input and is not used by FullSimplify:

ComplexExpand assumes variables to be real and is also not used by FullSimplify:

FullSimplify uses several factoring transformations, including Factor:

FactorSquareFree:

TrigFactor:

For algebraic numbers, RootReduce and ToRadicals are used:

For rational functions, Together and Apart are used:

Possible Issues  (3)

Some of the transformations used by FullSimplify are only generically correct:

Results of simplification of singular expressions are uncertain:

This result is caused by automatic evaluation:

Results of simplification may depend on the names of symbols:

Neat Examples  (1)

FullSimplify knows about Fermat's last theorem:

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)