LEFT + ( SQUARE ? "^2" : RIGHT ) = \ ?
plus( (A*C)+XX, (A*D+B*C)+X, B*D )
plus( (A+C)+XX, (A*D+B*C)+X, B*D )
plus( (A*C)+XX, (A*D+B*C)+X, B+D )
plus( (A+C)+XX, (A*D+B*C)+X, B+D )
plus( (A+C)+XX, (A*D-B*C)+X, B*D )
plus( (A*C)+XX, (A*D-B*C)+X, B+D )
plus( (A+C)+XX, (A*D-B*C)+X, B+D )
plus( (A+C)+XX, (A*B+C*D)+X, B*D )
plus( (A*C)+XX, (A*B+C*D)+X, B+D )
plus( (A+C)+XX, (A*B+C*D)+X, B+D )
plus( (A+C)+XX, (A*B-C*D)+X, B*D )
plus( (A*C)+XX, (A*B-C*D)+X, B+D )
plus( (A+C)+XX, (A*B-C*D)+X, B+D )
= LEFT + RIGHT
= plus( mult( A+X, RIGHT ), mult( B, RIGHT ) )
= plus( parens( mult( A+X, C+X ) ), parens( mult( A+X, D ) ), parens( mult( B, C+X ) ), parens( mult( B, D ) ) )
= plus( (A*C)+XX, parens( mult( A+X, D ) ), parens( mult( B, C+X ) ), parens( mult( B, D ) ) )
= plus( (A*C)+XX, parens( plus( (A*D)+X, (B*C)+X ) ), parens( mult( B, D ) ) )
= plus( (A*C)+XX, (A*D+B*C)+X, parens( mult( B, D ) ) )
= plus( (A*C)+XX, (A*D+B*C)+X, B*D )