({{, (RefLink[TensorWedge, paclet:ref/TensorWedge])[(Subscript[tensor, 1]),(Subscript[tensor, 2]),…] 
represents the antisymmetrized tensor product of the (Subscript[tensor, i]).}})

OpenersNotesSection(Spacer1)Details

(RefLink[TensorWedge, paclet:ref/TensorWedge])[a,b] can be input as a\[TensorWedge]b. The character \[TensorWedge] is entered as (Key0[esc]) t^ (Key0[esc]) or (RefLink[\[TensorWedge], paclet:ref/character/TensorWedge]).

In a tensor wedge product of explicit or symbolic arrays, all slots must have the same dimension d, though different arrays may have different ranks. (RefLink[TensorWedge, paclet:ref/TensorWedge]) generalizes (RefLink[Cross, paclet:ref/Cross]), which requires d-1 vectors of length d.

The (RefLink[TensorWedge, paclet:ref/TensorWedge]) product of several arrays is an antisymmetric array, always given in (RefLink[SymmetrizedArray, paclet:ref/SymmetrizedArray]) form.

If the tensors (Subscript[tensor, i]) are not antisymmetric, then they are effectively antisymmetrized before performing the product. Vectors are considered antisymmetric tensors of rank 1. Scalars are considered antisymmetric tensors of rank 0.

The wedge product (RefLink[TensorWedge, paclet:ref/TensorWedge])[(Subscript[t, 1]),…,(Subscript[t, k])] of the antisymmetric tensors (Subscript[t, i]) is equivalent to (RefLink[Multinomial, paclet:ref/Multinomial])[(Subscript[r, 1]),…,(Subscript[r, k])]*(RefLink[Symmetrize, paclet:ref/Symmetrize])[(RefLink[TensorProduct, paclet:ref/TensorProduct])[(Subscript[t, 1]),…,(Subscript[t, k])],(RefLink[Antisymmetric, paclet:ref/Antisymmetric])[(RefLink[All, paclet:ref/All])]], where (Subscript[r, i]) is the tensor rank of (Subscript[t, i]).

OpenersPrimaryExamplesSection(Spacer1)Examples  (16)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

Antisymmetrized tensor product of explicit vectors:

{a,b,c}\[TensorWedge]{x,y,z}

In normal form:

Normal[%]

OpenersExampleSection1(Spacer1)Scope  (3)

Wedge product of vectors:

v={a,b,c,d};
w={x,y,z,t};

v\[TensorWedge]w

%//SymmetrizedArrayRules

Wedge product of antisymmetric arrays:

SeedRandom[0];
A=SymmetrizedArray[_:>RandomInteger[100],{5,5},Antisymmetric[All]];
B=SymmetrizedArray[_:>RandomInteger[100],{5,5},Antisymmetric[All]];

A\[TensorWedge]B

%//SymmetrizedArrayRules

Wedge product of symbolic arrays:

$Assumptions={
A∈Arrays[{5,5,5},Reals,Antisymmetric[{1,2,3}]],
B∈Arrays[{5,5},Reals,Antisymmetric[{1,2}]]
};

A\[TensorWedge]B+B\[TensorWedge]A//TensorReduce

OpenersExampleSection3(Spacer1)Properties & Relations  (11)

The wedge product is anticommutative for vectors:

V=Array[v,5]
W=Array[w,5]

V\[TensorWedge]W===-W\[TensorWedge]V

The wedge product is commutative for matrices:

M=Array[m,{5,5}];
Q=Array[q,{5,5}];

M\[TensorWedge]Q===Q\[TensorWedge]M

The result is always antisymmetric:

TensorSymmetry[M\[TensorWedge]Q]

The wedge product is associative:

A1=SymmetrizedArray[_:>RandomInteger[100],{8,8},Antisymmetric[All]];
A2=SymmetrizedArray[_:>RandomInteger[100],{8},Antisymmetric[All]];
A3=SymmetrizedArray[_:>RandomInteger[100],{8,8,8},Antisymmetric[All]];

(A1\[TensorWedge]A2)\[TensorWedge]A3===A1\[TensorWedge](A2\[TensorWedge]A3)===A1\[TensorWedge]A2\[TensorWedge]A3

The tensor wedge product of a single array is equivalent to its antisymmetrization:

A=Array[(Subscript[a, ##])&,{3,3}]

TensorWedge[A]

%===Symmetrize[A,Antisymmetric[All]]

The Hodge dual of the wedge product of n-1 vectors in dimension n coincides with the cross product of those vectors:

v1={a,b,c};
v2={x,y,z};

Normal@HodgeDual[v1\[TensorWedge]v2]===Cross[v1,v2]

v1={a,b,c,d};
v2={x,y,z,t};
v3={p,q,r,s};

Normal@HodgeDual[v1\[TensorWedge]v2\[TensorWedge]v3]===Cross[v1,v2,v3]

The wedge product requires all arguments to have slots of the same dimension, but ranks can be arbitrary:

a1=Array[x,{5,5}];
a2=Array[y,{5,5}];
result=a1\[TensorWedge]a2;

TensorDimensions[result]

The result is always antisymmetric:

TensorSymmetry[result]

Take two arrays in dimension n, say n==3:

a1=Array[x,{3,3}];
a2=Array[y,{3,3}];

If the total rank of the wedge product is larger than the dimension n, then that product is 0:

a1\[TensorWedge]a2

SparseArray[%]

The wedge product of an array of odd rank with itself is zero:

a=Array[(Subscript[x, ##])&,{7,7,7}];

a\[TensorWedge]a//SparseArray

But if the rank is even, then the result is not a zero array:

a=Array[(Subscript[x, ##])&,{5,5}];

a\[TensorWedge]a

SymmetrizedArrayRules[%]

With symbolic arrays:

$Assumptions={
A∈Arrays[{7,7,7},Reals,Antisymmetric[All]],
B∈Arrays[{7,7},Reals,Antisymmetric[All]]
};

A\[TensorWedge]A

B\[TensorWedge]B

The wedge product is proportional to antisymmetrization of the tensor product:

V=Array[(Subscript[v, #])&,{4}]
M=Array[(Subscript[m, ##])&,{4,4}]

V\[TensorWedge]M-3Symmetrize[V⊗M,Antisymmetric[All]]//Simplify

SparseArray[%]

The proportionality factor is the (RefLink[Multinomial, paclet:ref/Multinomial]) of the ranks:

Multinomial[1,2]

For n vectors of length n, the only independent component of their (RefLink[TensorWedge, paclet:ref/TensorWedge]) equals the determinant of the list of those vectors:

v1={v11,v12,v13};
v2={v21,v22,v23};
v3={v31,v32,v33};

TensorWedge[v1,v2,v3][[1,2,3]]

%===Det[{v1,v2,v3}]

The tensor wedge product is linear in all its arguments:

$Assumptions=
(A|B)∈Arrays[{8,8,8},Reals,Antisymmetric[All]];

(a A+b B)\[TensorWedge](c A+d B)//TensorExpand

OpenersExampleSection4(Spacer1)Possible Issues  (1)

(RefLink[TensorWedge, paclet:ref/TensorWedge]) has attribute (RefLink[OneIdentity, paclet:ref/OneIdentity]). However (RefLink[TensorWedge, paclet:ref/TensorWedge])[t] is equivalent to t only for an antisymmetric tensor t:

TensorWedge[t]

Assuming[t∈Arrays[{d,d,d,d},Reals,Antisymmetric[{1,2,3,4}]],TensorWedge[t]]

Antisymmetry in only some slots is not enough:

Assuming[t∈Arrays[{d,d,d,d},Reals,Antisymmetric[{1,2}]],TensorWedge[t]]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[Cross, paclet:ref/Cross])  ▪  (RefLink[TensorProduct, paclet:ref/TensorProduct])  ▪  (RefLink[Symmetrize, paclet:ref/Symmetrize])  ▪  (RefLink[Det, paclet:ref/Det])  ▪  (RefLink[SymmetrizedArray, paclet:ref/SymmetrizedArray])  ▪  (RefLink[HodgeDual, paclet:ref/HodgeDual])}})}})

({{DocumentationFooterIconsRelatedTutorial.png, ({{Tutorials}, {▪(RefLinkPlain[Symbolic Tensors, paclet:tutorial/SymbolicTensors])}, {▪(RefLinkPlain[Tensor Symmetries, paclet:tutorial/TensorSymmetries])}, {▪(RefLinkPlain[Symmetrized Arrays, paclet:tutorial/SymmetrizedArrays])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Symbolic Tensors, paclet:guide/SymbolicTensors])}})}})