Normalize applies the following rules
Normalize and expand rules
This section will cover the rules that are applied when normalizing and/or expanding functions. But before we start on
that, take a look at the example below which explains shortly how functions are handled internally within MUMIE.
Example:
Take the following function: $$x^4 \cdot (3 + 2)$$. To enter this function into MUMIE, you would type the following:
x^4*(3+2)
, which in turn could be graphically displayed as the image below.
MUMIE uses the following terminology regarding the tree you see above.
 node referring to a box in the tree
 operation every node, together with its children, can be referred to as an operation.
The example above consists of the following operations
 Multiplication Operation (or simply MultiplicationOp)
 PowerOp,
 AddOp
 VariableOp and
 NumberOp.
Operations can be combined together to make more complex operations. The formula used above can therefor also be referred to as an operation.
Every node has the following properties:
and based on the type, possibly a:
 base (if it is a NumberOp)
 identifier (if it is a VariableOp)
Keeping this in our mind, we can take a look at the rules being applied when normalizing and/or expanding functions.
When normalizing/expanding, all rules will be applied until a stable state of the function has been reached, resulting in a normalized/expanded function. The rules for
normalization and expanding are shown below (showing the Class name of the Javacode in brackets), along with several examples for each rule.
Rules for normalizing functions
Collapse factors of a variable (NormalizeMultRule)



$$3 \cdot 5 \cdot x$$ 
$$\Rightarrow$$ 
$$15x$$ 
$$3 \cdot 5 \cdot x + 2 \cdot 4 \cdot y + 2 \cdot 3$$ 
$$\Rightarrow$$ 
$$15x+8y+2 \cdot 3$$ 
Collapse multiplications and additions (CollapseEqualOpsRule)
For addition:



$$4+(34)$$ 
$$\Rightarrow$$ 
$$4+34$$ 
$$3(4+x)$$ 
$$\Rightarrow$$ 
$$3+4x$$ 
For multiplication:



$$3 \cdot (4 \cdot 9 \cdot x)$$ 
$$\Rightarrow$$ 
$$3 \cdot 4 \cdot 9 \cdot x$$ 
$$\frac{3}{\frac{1}{4} \cdot x}$$ 
$$\Rightarrow$$ 
$$\frac{3 \cdot 4}{x \cdot 1}$$ 
Collapse powers of i (CollapsePowerOfIRule)



$$i^2$$ 
$$\Rightarrow$$ 
$$1$$ 
$$i^8$$ 
$$\Rightarrow$$ 
$$1$$ 
$$i^{7}$$ 
$$\Rightarrow$$ 
$$i$$ 
Evaluate expressions involving only numbers (PropagateConstantsRule)



$$12.0+2.0^{3.0} \cdot 3$$ 
$$\Rightarrow$$ 
$$36$$ 
Evaluate expressions having zero as a factor (RemoveZeroMultRule)



$$0 \cdot 3$$ 
$$\Rightarrow$$ 
$$0$$ 
$$0 \cdot x$$ 
$$\Rightarrow$$ 
$$0$$ 
Evaluate powers with zero as exponent (RemoveZeroExponentRule)



$$2x^{0}$$ 
$$\Rightarrow$$ 
$$2 \cdot 1$$ 
Collapse equal children belonging to addition operations (SummarizeEqualAddChildrenRule)



$$y+2x + z  x$$ 
$$\Rightarrow$$ 
$$y+x+z$$ 
Collapse equal children belonging to multiplication operations (SummarizeEqualMultChildrenRule)



$$x \cdot y \cdot x$$ 
$$\Rightarrow$$ 
$$x^2 \cdot y$$ 
$$y \cdot x^2 \cdot z \cdot x^{1}$$ 
$$\Rightarrow$$ 
$$y \cdot x \cdot z$$ 
Remove neutral elements (RemoveNeutralElementRule)
Only handles the following three cases



$$x \cdot 1$$ 
$$\Rightarrow$$ 
$$x$$ 
$$x \cdot 1$$ 
$$\Rightarrow$$ 
$$x$$ 
$$x + 0$$ 
$$\Rightarrow$$ 
$$x$$ 
Collapse powers (CollapsePowerRule)
Implements the following two rules:



$$(a^b)^c$$ 
$$\Rightarrow$$ 
$$a^{bc}$$ 
$$e^x$$ 
$$\Rightarrow$$ 
$$\exp(x)$$ 
Collapse powers when rational (CollapseRationalPowerRule)
If the node is a PowerOp with a rational exponent and the denominator of the exponent is n != 1 a nth root node will be added as parent and the child will get the numerator as exponent.



$$x^{\frac{3}{2}}$$ 
$$\Rightarrow$$ 
$$\sqrt{x^3}$$ 
Simplify constants of single nodes (NormalizeConstantRule)
Sets exponent to $$1$$ and factor to $$+/ 1$$ and calculates its base.



$$(2)^3$$ 
$$\Rightarrow$$ 
$$8$$ 
Collapse function nodes that have their inverse function as child (CollapseInverseFunctionRule)
This rule only works on functions with a definded inverse function.



$$\cos(\arccos(x))$$ 
$$\Rightarrow$$ 
$$x$$ 
$$\ln(\exp(x))$$ 
$$\Rightarrow$$ 
$$x$$ 
Collapse function nodes for powers and nroots (CollapseNrtRule)
This is a special case of the rule above.



$$\sqrt{x^2}$$ 
$$\Rightarrow$$ 
$$\vert x \vert$$ 
Symmetry of elementary functions (HandleFunctionSymmetryRule)
Currently only applies to the following functions: @abs, acos, asin, atan, cos, cosh, nroot (for uneven n), sinh, sin and tan@. The rule is dependent on whether the function is symmetric or antisymmetric.



$$\sin(x)$$ 
$$\Rightarrow$$ 
$$\sin(x)$$ 
$$\vert x \vert$$ 
$$\Rightarrow$$ 
$$\vert x \vert$$ 
Distributive law (NormalizeAddRule)



$$3 \cdot (x + 4)$$ 
$$\Rightarrow$$ 
$$3x + 12$$ 
Rules for expanding functions
Distributive law (ExpandProductRule)



$$4 \cdot (b3)$$ 
$$\Rightarrow$$ 
$$4 \cdot (b) + 4 \cdot (3)$$ 
Expand data in single node (ExpandInternalDataRule)



$$x^6$$ 
$$\Rightarrow$$ 
$$1 \cdot x^6$$ 
Expands a power of products (ExpandPowerRule)



$$(2 \cdot x)^4$$ 
$$\Rightarrow$$ 
$$2^4 \cdot x^4$$ 
Expands a power of sums (ExpandPowerOfSumRule)



$$(2+x)^4$$ 
$$\Rightarrow$$ 
$$(2+x) \cdot (2+x) \cdot (2+x) \cdot (2+x)$$ 