private static TreeRewriter<Op<Double>> compile(final String rule) {
		return TreeRewriteRule.parse(rule, MathOp::toMathOp);
	}
This rewriter implements some common arithmetic identities, in exactly
this order.
<pre> {@code
    sub($x,$x) ->  0
    sub($x,0)  ->  $x
    add($x,0)  ->  $x
    add(0,$x)  ->  $x
    add($x,$x) ->  mul(2,$x)
    div($x,$x) ->  1
    div(0,$x)  ->  0
    mul($x,0)  ->  0
    mul(0,$x)  ->  0
    mul($x,1)  ->  $x
    mul(1,$x)  ->  $x
    mul($x,$x) ->  pow($x,2)
    pow($x,0)  ->  1
    pow(0,$x)  ->  0
    pow($x,1)  ->  $x
    pow(1,$x)  ->  1
} </pre>

@since 5.0
jenetics.prog/src/main/java/io/jenetics/prog/op/MathExpr.java