I collected a bit of Magma and Mathematica code relevant for the paper Asymptotics in finite monoidal categories https://arxiv.org/abs/2307.03044 on this page.
The code is in a .odt file or .n file, respectively, that can be downloaded from this site and you can run it with Magma or Mathematica.
An Erratum for the paper Asymptotics in finite monoidal categories can be found at the bottom of the page.
If you find any errors in the paper Asymptotics in finite monoidal categories please email me:
Same goes for any errors related to this page.
Let
A finite based
Fix
For
Assume (only for the sake of this page - the note does not need that assumption) that the Perron–Frobenius theorem holds, that is
the action matrix of
Take the left and right eigenvectors
Let
Let
Theorem
We have
$$b^{R,c}(n)\sim a(n)$$ and the convergence is geometric with ratio$|\lambda^{sec}/\mathrm{PFdim} c|$ . In particular,$$\beta^{R,c}:=\lim_{n\to\infty}\sqrt[n]{b_{n}^{R,c}}=\mathrm{PFdim} c.$$
This theorem is interesting from a categorical point of view since Grothendieck rings of certain nice enough monoidal categories are
finite based
The code attached to this page computes the function
The code can, for example, be run in the online calculator of Magma:
The code we collected is about the dihedral group of order
Let us go through the code.
The first part is about comupting
m:=5; //The order
G:=DihedralGroup(m); //The dihedral group
X:=CharacterTable(G);
M:=X[#X]; //Take the last representation
n:=20; //Mamimal tensor power
out:=0;
outlist:=[];
for k in [1..n] do
for j in [1..#X] do
out+:=InnerProduct(M^k,X[j]);
end for;
outlist:=Append(outlist,out);
out:=0;
end for;
outlist;
which sets up the dihedral group, its character table and takes
The output in this example is
[ 1, 3, 4, 11, 17, 42, 71, 163, 292, 639, 1189, 2522, 4811, 9999, 19388, 39763,
77929, 158442, 312703, 632171 ]
Second, the asymptotic formula for
m:=5;
G:=DihedralGroup(m); //set group: dihedral group of order 2m
X:=CharacterTable(G);
V:=X[#X]; //set module
fus:=[[0 : i in [1..#X]] : j in [1..#X]];
for i in [1..#X] do
for j in [1..#X] do
fus[j][i]:=InnerProduct(X[i]*V,X[j]); //computes multiplicity of X[j] in X[i]\otimes V
end for;
end for;
M:=Matrix(Rationals(),fus); //use a cyclotomic field in order to have every complex eigenvalues
w0:=Eigenspace(M,2).1; //computes the vector w_0 (warning: magma computes the eigenspace of the linear map given by right multiplication by M)
vv0:=Eigenspace(Transpose(M),2).1;
v0:=vv0/ScalarProduct(w0,vv0); //computes v_0 with the normalization so that w_0^{T}v_0=1
&+[(Matrix(Rationals(),#X,1,ElementToSequence(v0))*Matrix(Rationals(),1,#X,ElementToSequence(w0)))[i][1] : i in [1..#X]]; //computes v_0w_0^{T}[1]
if m mod 2 eq 0 then //if m is even, we have a coefficient in front of (-1)^n
w1:=Eigenspace(M,-2).1; //computes the vector w_1 (warning: magma computes the eigenspace of the linear map given by right multiplication by M)
vv1:=Eigenspace(Transpose(M),-2).1;
v1:=vv1/ScalarProduct(w1,vv1); //computes v_1 with the normalization so that w_1^{T}v_1=1
&+[(Matrix(Rationals(),#X,1,ElementToSequence(v1))*Matrix(Rationals(),1,#X,ElementToSequence(w1)))[i][1] : i in [1..#X]]; //computes v_1w_1^{T}[1]
end if;
The code computes the action matrix and its eigenspaces and pieces them together as explained above. The output in this case is
3/5
which are the (at most) two constants in the formula
where
The code is hopefully pretty straightforward. All that is happening is that the data created with the Magma code is plotted.
For example, here is the dihedral group of order ten:
Let me know if there are any questions!
In (1A.2), the sum is not always an algebraic integer. For Grothendieck rings of categories it is (and that is where this came from), but here we are talking about general