5
$\begingroup$

I am trying to define a tensor $T$ which is antisymmetric under pair-wise exchange of its indices:

$T = \delta_{a],[b}\,\delta_{c],[d}\,\delta_{e],[f}\,\delta_{g],[h}$

where $T$ is antisymmetric under the exchanges $b \leftrightarrow c, d \leftrightarrow e, f \leftrightarrow g ,h \leftrightarrow a$.

I guess that defining $T$ as a Table will take too much memory. Maybe defining it as a function is better. In both cases I have no clue on how to do this in a clever, short way without writing down all possible exchanges by hand. Can you help?

$\endgroup$
4
  • 2
    $\begingroup$ $Assumptions = T \[Element] Arrays[{d, d, d, d, d, d}, Reals, Antisymmetric /@ Partition[RotateLeft@Range[6], 2]];? $\endgroup$
    – kglr
    Sep 8, 2020 at 10:34
  • $\begingroup$ It looks good but I'm not skilled with Assumptions. Can you expand a bit more, including (also in a sketchy way) the definition of T with the Kronecker's Deltas? $\endgroup$
    – IgnoranteX
    Sep 8, 2020 at 10:43
  • 1
    $\begingroup$ Is it a mathematica question ? $\endgroup$
    – yarchik
    Sep 8, 2020 at 12:00
  • $\begingroup$ Yes, I would like to see a Mathematica code in which one defines $T$ as I said (with the Kronecker's Deltas) and implementing the trick given by @kgir $\endgroup$
    – IgnoranteX
    Sep 8, 2020 at 15:51

1 Answer 1

2
$\begingroup$

Expanding on a comment by @kglr above, if you want a general form of the tensor with only the independent components, you can use SymmetrizedArray as follows:

antiSymmetricTensor[dim_, symbol_ : A] := 
 SymmetrizedArray[pos_ :> symbol @@ pos, ConstantArray[dim, 8],
  {Cycles[{#}], -1} & /@ Partition[RotateLeft@Range[8], 2]]

as a demonstration, here's the $i=1,j=2,k=3,l=2$ for $d=3$: enter image description here

This is indeed in the subdomain of arrays with dimension dim and the specified symmetries:

With[{
  dim = 3,
  symbol = A,
  domain = Arrays[ConstantArray[dim, 8], Reals, 
    Antisymmetric /@ Partition[RotateLeft@Range[8], 2]]
  },
 Element[antiSymmetricTensor[dim, symbol], domain];
 Simplify[%, symbol[__] ∈ Reals]
 ]
(* True *)
$\endgroup$
1
  • $\begingroup$ Thanks a lot! @George Varnavides $\endgroup$
    – IgnoranteX
    Dec 15, 2021 at 17:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.