Linear Invariants of Tensors

Invariants for Bilinear Tensors

The following intrinsics are specialized for tensors of valence 3, but equivalent intrinsics for general tensors are presented in the proceeding subsection.

AdjointAlgebra(B): TenSpcElt -> AlgMat

Returns the adjoint \(*\)-algebra of the given Hermitian bilinear map \(B\), represented on \(\rm{End}(U_2)\). This is using algorithms from StarAlge, see the AdjointAlgebra intrinsic in [BW]. If the current version of StarAlge is not attached, the default Magma version will be used instead.

Example: Adjoint Algebra of a p-Group Tensor (ex-55dbd9)

Run in calculator (opens in a new tab)

Given the context of [BW12b], we construct a tensor from a \(p\)-group and compute its adjoint algebra.

> G := SmallGroup(3^7, 7000);
> t := pCentralTensor(G);
> t;
Tensor of valence 3, U2 x U1 >-> U0
U2 : Full Vector space of degree 4 over GF(3)
U1 : Full Vector space of degree 4 over GF(3)
U0 : Full Vector space of degree 3 over GF(3)

Unlike other intrinsics that compute invariants of tensors, AdjointAlgebra exploits the fact that \(t\) is Hermitian so that the adjoint algebra is faithfully represented on \(\rm{End}(U_2)=\rm{End}(U_1)\).

> A := AdjointAlgebra(t);
> A;
Matrix Algebra of degree 4 and dimension 4 with 4 generators over GF(3)
> A.1;
[1 0 0 0]
[0 0 0 0]
[0 0 0 0]
[0 0 0 1]

Because \(A\) is constructed from algorithms for \(*\)-algebras, we can apply other algorithms from that package specifically dealing with the involution on \(A\).

> RecognizeStarAlgebra(A);
true
> SimpleParameters(A);
[ <"symplectic", 2, 3> ]
> Star(A);
Mapping from: AlgMat: A to AlgMat: A given by a rule [no inverse]

Run in calculator (opens in a new tab)

LeftNucleus(B : parameters): TenSpcElt -> AlgMat
op: BoolElt                    Default: false

Returns the left nucleus of the bilinear map \(B\) as a subalgebra of \(\rm{End}_K(U_2)\times \rm{End}_K(U_0)\). In previous versions of TensorSpace (and eMAGma), the left nucleus was returned as a subalgebra of \(\rm{End}(U_2)^\circ\times \rm{End}(U_0)^\circ\). To enable this, set the optional argument op to true.

MidNucleus(B): TenSpcElt -> AlgMat

Returns the mid nucleus of the bilinear map \(B\) as a subalgebra of \(\rm{End}_K(U_2)\times \rm{End}_K(U_1)\).

RightNucleus(B): TenSpcElt -> AlgMat

Returns the right nucleus of the bilinear map \(B\) as a subalgebra of \(\rm{End}_K(U_1)\times \rm{End}_K(U_0)\).

Example: Nuclei Embed in the Derivation Algebra (ex-75db37)

Run in calculator (opens in a new tab)

We will verify a theorem from [FMW19] and [Wil17]: all the nuclei of a tensor embed into the derivation algebra. We construct the tensor given by \((3\times 4\times 5)\)-matrix multiplication.

> K := Rationals();
> A := KMatrixSpace(K, 3, 4);
> B := KMatrixSpace(K, 4, 5);
> C := KMatrixSpace(K, 3, 5);
> F := func< x | x[1]*x[2] >;
> t := Tensor([A, B, C], F);
> t;
Tensor of valence 3, U2 x U1 >-> U0
U2 : Full Vector space of degree 12 over Rational Field
U1 : Full Vector space of degree 20 over Rational Field
U0 : Full Vector space of degree 15 over Rational Field

Because matrix multiplication is associative, the left, middle, and right nuclei contain \(\rm{Mat}_3({\mathbb{Q}})\), \(\rm{Mat}_4({\mathbb{Q}})\), and \(\rm{Mat}_5({\mathbb{Q}})\) respectively. In fact, the following computation shows that this is equality.

> L := LeftNucleus(t : op := true);
> M := MidNucleus(t);
> R := RightNucleus(t);
> Dimension(L), Dimension(M), Dimension(R);
9 16 25
> D := DerivationAlgebra(t);
> Dimension(D);
49

Now we will embed these nuclei into the derivation algebra of \(t\).

> Omega := KMatrixSpace(K, 47, 47);
> Z1 := ZeroMatrix(K, 20, 20);
> L_L2, L2 := Induce(L, 2);
> L_L0, L0 := Induce(L, 0);
> embedL := map< L -> Omega | x :->
>     DiagonalJoin(<Transpose(x @ L_L2), Z1, Transpose(x @ L_L0)>) >;
>
> Z0 := ZeroMatrix(K, 15, 15);
> M_M2, M2 := Induce(M, 2);
> M_M1, M1 := Induce(M, 1);
> embedM := map< M -> Omega | x :->
>     DiagonalJoin(<x @ M_M2, -Transpose(x @ M_M1), Z0>) >;
>
> Z2 := ZeroMatrix(K, 12, 12);
> R_R1, R1 := Induce(R, 1);
> R_R0, R0 := Induce(R, 0);
> embedR := map< R -> Omega | x :->
>     DiagonalJoin(<Z2, x @ R_R1, x @ R_R0>) >;
>
> Random(Basis(L)) @ embedL in D;
true
> Random(Basis(M)) @ embedM in D;
true
> Random(Basis(R)) @ embedR in D;
true

Run in calculator (opens in a new tab)

Invariants of General Multilinear Maps

The following functions can be used for general tensors.

Centroid(T): TenSpcElt -> AlgMat
Centroid(T, A): TenSpcElt, {RngIntElt} -> AlgMat

Returns the \(A\)-centroid of the tensor as a subalgebra of

\[\prod_{a\in A}\rm{End}(U_a),\]

where \(A\subseteq [\nu]\). If no \(A\) is given, it is assumed that \(A=[\nu]\). If \(t\) is contained in a category where coordinates \(a\) and \(b\) (also contained in \(A\)) are fused together, then the corresponding operators on those coordinates will be equal.

Example: Centroid of a Multiplication Tensor (ex-71158e)

Run in calculator (opens in a new tab)

The centroid \(C\) of a tensor \(t\) is the largest ring for which \(t\) is \(C\)-linear, see [FMW19, Theorem D]. To demonstrate this, we will construct the tensor given by multiplication of the splitting field of \(f(x)=x^4-x^2-2\) over \({\mathbb{Q}}\). However, this field won’t explicitly be given with the tensor data.

> A := MatrixAlgebra(Rationals(), 4);
> R<x> := PolynomialRing(Rationals());
> F := sub< A | A!1, CompanionMatrix(x^4-x^2-2) >;
> F;
Matrix Algebra of degree 4 with 2 generators over Rational Field
> t := Tensor(F);
> t;
Tensor of valence 3, U2 x U1 >-> U0
U2 : Full Vector space of degree 4 over Rational Field
U1 : Full Vector space of degree 4 over Rational Field
U0 : Full Vector space of degree 4 over Rational Field

The centroid is the field \({\mathbb{Q}}(\sqrt{2},i)\).

> C := Centroid(t);
> C;
Matrix Algebra of degree 12 with 4 generators over Rational Field
> sub< C | C.1 > eq C;
true
> forall{ c : c in Generators(C) | IsInvertible(c) };
true
> IsCommutative(C);
true
> MinimalPolynomial(C.1);
x^4 + 2*x^2 - 8
> Factorization(MinimalPolynomial(C.1));
[
    <x^2 - 2, 1>,
    <x^2 + 4, 1>
]

Run in calculator (opens in a new tab)

DerivationAlgebra(T): TenSpcElt -> AlgMatLie
DerivationAlgebra(T, A): TenSpcElt, {RngIntElt} -> AlgMatLie

Returns the \(A\)-derivation Lie algebra of the tensor as a Lie subalgebra of

\[\prod_{a\in A}\rm{End}(U_a),\]

where \(A\subseteq [\nu]\). If no \(A\) is given, it is assumed that \(A=[\nu]\). If \(t\) is contained in a category where coordinates \(a\) and \(b\) (also contained in \(A\)) are fused together, then the corresponding operators on those coordinates will be equal.

Nucleus(T, a, b): TenSpcElt, RngIntElt, RngIntElt -> AlgMat
Nucleus(T, A): TenSpcElt, SetEnum -> AlgMat

Returns the \(A\)-nucleus, for \(A=\{a,b\}\) (\(a\ne b\)), of the tensor as a subalgebra of \(\rm{End}(U_i)\times \rm{End}(U_j)\), where \(i=\max(a,b)\) and \(j=\min(a,b)\). If \(j>0\), then replace \(\rm{End}(U_j)\) with \(\rm{End}(U_j)^\circ\). If \(T\) is contained in a category where coordinates \(a\) and \(b\) are fused together, then the corresponding operators on those coordinates will not be forced to be equal.

Example: Restricting the Derivation Algebra (ex-84e946)

Run in calculator (opens in a new tab)

In a previous example, we embedded the nuclei of a tensor into the derivation algebra. For a tensor \(t: U_{\nu}\times \cdots\times U_1\rightarrowtail U_0\), the derivation algebra is represented in

\[\Omega=\prod_{a\in[\nu]}\rm{GL}(U_a).\]

We will restrict the derivation algebra to

\[\prod_{c\notin\{a,b\}} \rm{GL}(U_c)\]

for distinct \(a,b\in[\nu]\). From [FMW19, Lemma 4.11], the kernel of this restriction is equal to Nuc\(_{\{a,b\}}(t)^-\). We will just verify that the dimensions match.

We will construct a tensor given by matrix multiplication:

\[\rm{Mat}_{3\times 4}({\bf F}_{2})\times \rm{Mat}_{4\times 2}({\bf F}_{2}) \times \rm{Mat}_{2\times 2}({\bf F}_{2}) \rightarrowtail \rm{Mat}_{3\times 2}({\bf F}_{2}).\]
> A := KMatrixSpace(GF(2), 3, 4);
> B := KMatrixSpace(GF(2), 4, 2);
> C := KMatrixSpace(GF(2), 2, 2);
> D := KMatrixSpace(GF(2), 3, 2);
> trip := func< x | x[1]*x[2]*x[3] >;
> t := Tensor([A, B, C, D], trip);
> t;
Tensor of valence 4, U3 x U2 x U1 >-> U0
U3 : Full Vector space of degree 12 over GF(2)
U2 : Full Vector space of degree 8 over GF(2)
U1 : Full Vector space of degree 4 over GF(2)
U0 : Full Vector space of degree 6 over GF(2)

Now we will compute the derivation algebra of t. We choose \(a=3\) and \(b=2\), so the \(\{3,2\}\)-nucleus is \(\rm{Mat}_{4\times 4}({\bf F}_{2})\).

> D := DerivationAlgebra(t);
> Dimension(D);
32
> N32 := Nucleus(t, 3, 2);
> N32;
Matrix Algebra of degree 20 with 16 generators over GF(2)

To construct the restriction of \(\rm{Der}(t)\) into \(\rm{GL}(U_1)\times\rm{GL}(U_0)\) we will use the Induce function.

> Omega_10 := KMatrixSpace(GF(2), 10, 10);
> D_vs := sub< KMatrixSpace(GF(2), 30, 30) | Basis(D) >;
> pi1, D1 := Induce(D, 1);
> pi0, D0 := Induce(D, 0);
> res := hom< D_vs -> Omega_10 |
>     [<x, DiagonalJoin(x @ pi1, x @ pi0)> : x in Basis(D)] >;
> res;
Mapping from: ModMatFld: D_vs to ModMatFld: Omega_10
> Kernel(res);
KMatrixSpace of 30 by 30 matrices and dimension 16 over GF(2)

Run in calculator (opens in a new tab)

SelfAdjointAlgebra(t, a, b): TenSpcElt, RngIntElt, RngIntElt -> ModMatFld

Returns the self-adjoint elements of the \(ab\)-nucleus of \(t\) as a subspace of \(\rm{End}(U_a)\), with \(a,b\in[\nu]\) and \(a\ne b\). It is not required that \(t\) be in a tensor category with coordinates \(a\) and \(b\) fused. Unlike other invariants associated to tensors, the self-adjoint algebra is not currently stored with the tensor.

TensorOverCentroid(T): TenSpcElt -> TenSpcElt, Hmtp

If the given tensor \(T\) is framed by \(K\)-vector spaces, then the returned tensor is framed by \(E\)-vector spaces where \(E\) is the residue field of the centroid. The returned homotopism is an isotopism of the \(K\)-tensors. This only works if the centroid of \(T\) is a finite commutative local ring. We employ the algorithms developed by Brooksbank and Wilson [BW15] to efficiently determine if a matrix algebra is cyclic.

Example: Recovering a Field with the Centroid (ex-93b5e7)

Run in calculator (opens in a new tab)

In the context of groups, centroids can be used to recover an underlying field of a matrix group, even if the given group is not input as such. Here we will construct the exponent-\(p\) central tensor of the Sylow 2-subgroup of \(\rm{GL}(3,\rm{GF}(2^{10}))\). We will not print the GrpPC version of this group as the number of relations is very large.

> U := ClassicalSylow(GL(3, 2^10), 2);
> U.3;
[       1    $.1^2        0]
[       0        1        0]
[       0        0        1]
> G := PCPresentation(UnipotentMatrixGroup(U));
> #G eq 2^30;
true
> t := pCentralTensor(G);
> t;
Tensor of valence 3, U2 x U1 >-> U0
U2 : Full Vector space of degree 20 over GF(2)
U1 : Full Vector space of degree 20 over GF(2)
U0 : Full Vector space of degree 10 over GF(2)

Even though our tensor right now is \({\bf F}_{2}^{20}\times {\bf F}_{2}^{20}\rightarrowtail{\bf F}_{2}^{10}\), we know it is the 2-dimensional alternating form over \(\rm{GF}(2^{10})\). We will construct the centroid, and then rewrite our tensor over the centroid to get the tensor we expect.

> C := Centroid(t);
> C;
Matrix Algebra of degree 50 and dimension 10 with 1 generator over GF(2)
> IsCyclic(C) and IsSimple(C);
true
> s := TensorOverCentroid(t);
> s;
Tensor of valence 3, U2 x U1 >-> U0
U2 : Full Vector space of degree 2 over GF(2^10)
U1 : Full Vector space of degree 2 over GF(2^10)
U0 : Full Vector space of degree 1 over GF(2^10)

Run in calculator (opens in a new tab)