Detect a Symmetric polynomial A symmetric polynomial is a polynomial which is unchanged under permutation of its variables.

In other words, a polynomial f(x,y) is symmetric if and only if f(x,y) = f(y,x); a polynomial g(x,y,z) is symmetric iff g(x,y,z) = g(x,z,y) = g(y,x,z) = etc.

For example, x^2+2xy+y^2, xy and x^3+x^2y+xy^2+y^3 are symmetric polynomials, where 2x+y and x^2+y are not.



The challenge

You will be given a polynomial, and your program should output truthy/falsy values, depending on if the given polynomial is a symmetric polynomial.

The input format is allowed in two ways. A string, and an array, like ["x^2","2xy","y^2"], where the polynomial is the sum of each elements.



Example

x^2+2xy+y^2 =&gt; true
xy =&gt; true
xy+yz+xz-3xyz =&gt; true
(x+y)(x-y) =&gt; false
2x+y =&gt; false
x^2+y =&gt; false
x+2y+3 =&gt; false




Specs

The operation has orders, just like in normal math. the order is like this:

() =&gt; ^ =&gt; * =&gt; +-


code-golf rules apply.

All the characters in the alphabet (a~z) are accepted as variables, everything else are numbers.

The given polynomial will have 2 or more variables.

Multiplication does not require the * operator, You only need to detect juxtaposition. (detecting by juxtaposition is not neccessary, use the better option)
Mathematica, 43 bytes

Last@SymmetricReduction[#,Variables@#]===0&amp;


Unnamed function taking as input a polynomial in the given format (except that juxtaposed variables must be separated by a space) and returning True or False. Variables@# detects the variables appearing in the input (and thus the input can contain all kinds of weird variable names, not just single letters). SymmetricReduction returns an ordered pair of polynomials, where the first one is symmetric and the two sum to the original polynomial; therefore we can detect whether the input is symmetric by seeing whether the second polynomial is identically 0.