code: public static Tree<? extends Op<Double>, ?>
  	simplify(final Tree<? extends Op<Double>, ?> tree) {
  		return MathExprRewriter.prune(TreeNode.ofTree(tree));
  	}
docs: Tries to simplify the given math tree.
  
  <pre>{@code
  final Tree<? extends Op<Double>, ?> tree =
  MathExpr.parseTree("4.0 + 4.0 + x*(5.0 + 13.0)");
  final Tree<? extends Op<Double>, ?> simplified = MathExpr.simplify(tree)
  System.out.println(simplified);
  }</pre>
  The simplified tree will be look like this:
  <pre> {@code
  add
  ├── 8.0
  └── mul
  ├── x
  └── 18.0
  }</pre>
  
  @see #prune(TreeNode)
  @see #simplify()
  
  @param tree the math tree to simplify
  @return the new simplified tree
  @throws NullPointerException if the given {@code tree} is {@code null}