How does TensorReduce use assumptions?

*To*: mathgroup at smc.vnet.net*Subject*: [mg132252] How does TensorReduce use assumptions?*From*: Yi Wang <tririverwangyi at gmail.com>*Date*: Thu, 23 Jan 2014 03:35:25 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-outx@smc.vnet.net*Delivered-to*: mathgroup-newsendx@smc.vnet.net

I would like to use TensorReduce by assuming that certain patterns of functions are tensors. From documentation of TensorReduce: "If TensorDimensions[ten] does not return a list of dimensions, then the expression ten is returned unchanged." I would have inferred from above that if I modify TensorDimensions[ten], TensorReduce should work. Thus I did Unprotect[TensorDimensions]; TensorDimensions[f_[g__]] := d & /@ {g}; Protect[TensorDimensions]; Assuming[ t \[Element] Arrays[{d, d}, Antisymmetric[All]] , TensorReduce @ TensorContract[ t\[TensorProduct]f[DN, DN], {1, 4}]] However, this doesn't work. i.e. TensorReduce does nothing, and the result is TensorContract[ t\[TensorProduct]f[DN, DN], {{1, 4}}] To compare, having defined Assuming[ t \[Element] Arrays[{d, d}, Antisymmetric[All]] && f[DN, DN] \[Element] Arrays[{d, d}], TensorReduce @ TensorContract[ t\[TensorProduct]f[DN, DN], {1, 4}]] - TensorContract[ t\[TensorProduct]f[DN, DN], {{2, 4}}] the result is indeed simplified as desired: I also tried to modify TensorSymmetry, but without luck either. I'd like to understand what are the assumptions that TensorReduce really uses. Is there a way that I can work with TensorReduce as above, with pattern like declaration of tensors? PS: Currently I generate a list of assumptions of f_[g__] using Cases, and put those assumptions together in Assuming. This makes the code slow and ugly.

**Follow-Ups**:**Re: How does TensorReduce use assumptions?***From:*Jose Martin-Garcia <jose@wolfram.com>

**Re: How does TensorReduce use assumptions?***From:*Yi Wang <tririverwangyi@gmail.com>