**News**

**Working with MUMIE as author**

- Initial steps:
- Articles:
- Problems:
- Programming with Python
- New Visualizations with JSXGraph
- Old Visualizations:
- Media Documents:

**Working with MUMIE as teacher**

**Using MUMIE via plugin in local LMS**

**FAQ**

Mumie Wiki

You're not logged in

**Working with MUMIE as author**

- Initial steps:
- Articles:
- Problems:
- Programming with Python
- New Visualizations with JSXGraph
- Old Visualizations:
- Media Documents:

**Working with MUMIE as teacher**

**Using MUMIE via plugin in local LMS**

**FAQ**

We revise and update this wiki. We apologize for the inconvenience this may cause you.

- Normalize and expand rules
- Rules for normalizing functions
- Collapse factors of a variable (NormalizeMultRule)
- Collapse multiplications and additions (CollapseEqualOpsRule)
- Collapse powers of i (CollapsePowerOfIRule)
- Evaluate expressions involving only numbers (PropagateConstantsRule)
- Evaluate expressions having zero as a factor (RemoveZeroMultRule)
- Evaluate powers with zero as exponent (RemoveZeroExponentRule)
- Collapse equal children belonging to addition operations (SummarizeEqualAddChildrenRule)
- Collapse equal children belonging to multiplication operations (SummarizeEqualMultChildrenRule)
- Remove neutral elements (RemoveNeutralElementRule)
- Collapse powers (CollapsePowerRule)
- Collapse powers when rational (CollapseRationalPowerRule)
- Simplify constants of single nodes (NormalizeConstantRule)
- Collapse function nodes that have their inverse function as child (CollapseInverseFunctionRule)
- Collapse function nodes for powers and n-roots (CollapseNrtRule)
- Symmetry of elementary functions (HandleFunctionSymmetryRule)
- Distributive law (NormalizeAddRule)

- Rules for expanding functions

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:

- factor
- exponent

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 Java-code in brackets), along with several examples for each rule.

$$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$$ |

For addition:

$$4+(3-4)$$ | $$\Rightarrow$$ | $$4+3-4$$ |

$$3-(-4+x)$$ | $$\Rightarrow$$ | $$3+4-x$$ |

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}$$ |

$$i^2$$ | $$\Rightarrow$$ | $$-1$$ |

$$i^8$$ | $$\Rightarrow$$ | $$1$$ |

$$i^{-7}$$ | $$\Rightarrow$$ | $$i$$ |

$$12.0+2.0^{3.0} \cdot 3$$ | $$\Rightarrow$$ | $$36$$ |

$$0 \cdot 3$$ | $$\Rightarrow$$ | $$0$$ |

$$0 \cdot x$$ | $$\Rightarrow$$ | $$0$$ |

$$2x^{0}$$ | $$\Rightarrow$$ | $$2 \cdot 1$$ |

$$y+2x + z - x$$ | $$\Rightarrow$$ | $$y+x+z$$ |

$$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$$ |

Only handles the following three cases

$$x \cdot 1$$ | $$\Rightarrow$$ | $$x$$ |

$$x \cdot -1$$ | $$\Rightarrow$$ | $$-x$$ |

$$x + 0$$ | $$\Rightarrow$$ | $$x$$ |

Implements the following two rules:

$$(a^b)^c$$ | $$\Rightarrow$$ | $$a^{bc}$$ |

$$e^x$$ | $$\Rightarrow$$ | $$\exp(x)$$ |

If the node is a PowerOp with a rational exponent and the denominator of the exponent is n != 1 a n-th root node will be added as parent and the child will get the numerator as exponent.

$$x^{\frac{3}{2}}$$ | $$\Rightarrow$$ | $$\sqrt{x^3}$$ |

Sets exponent to $$1$$ and factor to $$+/- 1$$ and calculates its base.

$$(-2)^3$$ | $$\Rightarrow$$ | $$-8$$ |

This rule only works on functions with a definded inverse function.

$$\cos(\arccos(x))$$ | $$\Rightarrow$$ | $$x$$ |

$$\ln(\exp(x))$$ | $$\Rightarrow$$ | $$x$$ |

This is a special case of the rule above.

$$\sqrt{x^2}$$ | $$\Rightarrow$$ | $$\vert x \vert$$ |

Currently only applies to the following functions: @abs, acos, asin, atan, cos, cosh, n-root (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$$ |

$$3 \cdot (-x + 4)$$ | $$\Rightarrow$$ | $$-3x + 12$$ |

$$4 \cdot (-b-3)$$ | $$\Rightarrow$$ | $$4 \cdot (-b) + 4 \cdot (-3)$$ |

$$-x^6$$ | $$\Rightarrow$$ | $$-1 \cdot x^6$$ |

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

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

Updated by **Tim Konopka**, **4 years, 9 months ago **– 8a7f691