How to write the product identity in Mathematica?

Is there anybody can help me to write and excute the following product identity in Mathematica?

Thanks a lot for your support

However, I have assume that K=2, and have got a result as follows

In[82]:= Sum[(-1)^l/l!* Sum[Product[Subscript[x, Subscript[n, t]], {t, 1, l}] Boole[ Subscript[n, 1] != Subscript[n, 2]], {Subscript[n, 1], 1, 2}, {Subscript[n, 2], 1, 2}], {l, 0, 2}]                         
Out[82]= 2 - Subscript[x, 1] - Subscript[x, 2] + Subscript[x, 1] Subscript[x, 2]

Which is not match with the fact that

In[83]:= Product[1 - Subscript[x, l], {l, 1, 2}]
Out[83]=1 - Subscript[x, 1] - Subscript[x, 2] + Subscript[x, 1] Subscript[x, 2]

I think there is something wrong with the method of putting exclusions such as Boole on the above Sum. I will be happy to get your suggestions.Thanks a lot

Regards,
Yahia

Hi Yahia,

what you have to do here on the right hand side is - given in utterly <outmost> ugly notation in the exercise - simply to sum up the symmetric functions of

{x1, x2, ..., xl}

of 1, 2, …, l arguments augmented with the right sign. So you have for K = 1

1 - x1 = 1 - x1

and for K = 2

(1 - x1) (1 - x2) == 1 - x1 - x2 + x1 x2

x1 and x2 are the both symmetric functions of 1 argument, x1 x2 is the single symmteric function of two arguments in {x1,x2}. Please note that using the SymmetricPolynomial allows you to get rid of the Factorial[] because of

x1 x2 = 1/2 (x1 x2 + x2 x1)

and in general you have an expression as simple as

In[14]:= With[{K = 19}, 
  Product[1 - x[o], {o, 1, K}] == 
   Sum[(-1)^l SymmetricPolynomial[l, Array[x, K]], {l, 0, K}]
  ] // FullSimplify

Out[14]= True

Instead of Subscript[x,1] one used x[1] with advantage, as you see.

Regards
Udo.

Thanks for your interest. In fact, the target of my question how to put condition or exclusions to Sum or product when you have such equations?..

regards,
Yahia

To put conditions on terms in Sums and Products you have many possibilities, the simplest is

In[18]:= Sum[If[o1 != o2 && o1 != o3 && o1 != o4 
             && o2 != o3 && o2 != o4 
             && o3 != o4, 1, 0] x[o1] x[o2] x[o3] x[o4], 
             {o1, 1, 2}, {o2, 1, 3}, {o3, 1, 4}, {o4, 1, 5}]

Out[18]= 8 x[1] x[2] x[3] x[4] + 4 x[1] x[2] x[3] x[5] + 
 2 x[1] x[2] x[4] x[5] + x[1] x[3] x[4] x[5] + x[2] x[3] x[4] x[5]

You must not necessarily write such an ulgy If[], there is the KroneckerDelta[], there are totally antisymmetric tensors built-in for some of the standard cases in filtered sums and/or products.

Regards
Udo.

Thanks so much Udo for your support..I really appreciate your answer.

regards,
Yahia

Hi Yahia,

if you are inclined to implement the formula as it stands, then you might type

Remove[args, cond, X, prod, iter, Y, alghoraniLHS, alghoraniRHS]
args[l_Integer] := 
 ToExpression[StringJoin["o", ToString[#]] & /@ Range[l]]
prod[l_Integer] := Times @@ Thread[x[args[l]]]
cond[l_Integer] := 
 If[And @@ (X @@@ Union[Sort /@ Permutations[args[l], {2}]]), 1, 0]
iter [m_Integer, l_Integer] := {#, 1, m} & /@ args[l] /; m >= l
alghoraniLHS[K_Integer?Positive] := Product[(1 - x[o]), {o, 1, K}]
alghoraniRHS[K_Integer?Positive] := 
 1 + Sum[(-1)^l/l! Y[cond[l] prod[l], Sequence @@ iter[K, l]], {l, 1, 
     K}] /. {Y :> Sum, X :> Unequal}

into your keyboard. The args function ensures that all functions have the same variables in use. See an example

In[94]:= alghoraniRHS[4]

Out[94]= 1 - x[1] - x[2] - x[3] - x[4] + x[1] x[2] x[3] x[4] + 
 1/2 (2 x[1] x[2] + 2 x[1] x[3] + 2 x[2] x[3] + 2 x[1] x[4] + 
    2 x[2] x[4] + 2 x[3] x[4]) + 
 1/6 (-6 x[1] x[2] x[3] - 6 x[1] x[2] x[4] - 6 x[1] x[3] x[4] - 
    6 x[2] x[3] x[4])

Check a case - it runs considerably longer than the SymmetricPolynomial[], of course - all the permutations have to be sorted out

In[100]:= Expand[alghoraniLHS[7]] - alghoraniRHS[7] // Simplify

Out[100]= 0

The multiple sums to find terms one knows in advance are computing time wasters

In[109]:= Expand[alghoraniLHS[9]] - alghoraniRHS[9] // Simplify

Out[109]= 0

Please note that even alghoraniRHS[] doesn’t go the whole nine yards of implementing the formula because it has the l = 0 term, the 1, in front of it. Can you find a solution without that?

Pleaso note also, that Union[Sort /@ Permutations[…]] is bad style, because it filters out … permutations.

Regards
Udo.

You can also take advantage of the relatively new iterator conventions:

Product[1 - x[l], {l, 1, k}] ==  Sum[(-1)^l*Product[x[t], {t, n}], {l, 0, k}, {n, Subsets[Range[k], {l}]}]

This is another way to implement index restrictions, with programming constructs, e.g.,

Product[1 - x[l], {l, 1, k}] ==
Sum[(-1)^l/l! Product[x[t], {t, n}], {l, 0, k}, {n, Select[Tuples[Range[k], l], UnsameQ @@ # &]}]

Thanks!