Let $\phi:E\rightarrow F$ be a homogeneous map of graded free modules. Fix a homogeneous basis $\{e_i\}$ of $E$ and assume $\phi$ is minimal, in the sense that $\{\phi (e_i)\}$ is a minimal set of generators of the image of $\phi$. Moreover, suppose $\phi$ is equivariant for the action of an algebraic torus and fix a homogeneous basis of weight vectors $\{f_j\}$ of $F$. Use this function to recover the weights of the domain $E$ from the weights of the codomain $F$ (or viceversa, setting the optional input Forward to true.).
The input consists of M, the matrix of $\phi$ with respect to the bases $\{e_i\}$ and $\{f_j\}$, together with W, a list of weights $\{w_j\}$ such that $w_j$ is the weight of $f_j$.
If the optional argument LeadingTermTest is true (and it is by default), a new homogeneous basis $\{e_i'\}$ for $E$ is computed. The change of basis from $\{e_i\}$ to $\{e_i'\}$, given by the matrix C, is chosen so that the columns of the matrix M*inverse(C) have all different leading terms. This is a sufficient condition for the algorithm to work. The matrix C is part of the output. The user can choose to avoid this change of basis by setting this optional argument to false; then C is taken to be the identity matrix.
The output V is a list of weights $\{v_i\}$ such that there is a basis of homogeneous weight vectors $\{e_i''\}$ of $E$, with $v_i$ the weight of $e_i''$. Notice that the change of basis from $\{e_i\}$ to $\{e_i''\}$ is not retuned.
This method implements an algorithm introduced in Galetto - Propagating weights of tori along free resolutions.
In the following example, the polynomial ring R is the symmetric algebra over $\mathbb{C}^2 \otimes \mathbb{C}^4$, with the natural action of $SL_2 (\mathbb{C}) \times SL_4 (\mathbb{C})$. The map $\phi$ is the unique (up to scalars) equivariant map $\mathbb{C}^4 \otimes R(-1) \rightarrow (\mathbb{C}^2)^* \otimes R$. If $\{f_1,f_2\}$ and $\{e_1,e_2,e_3,e_4\}$ are the coordinate bases of $\mathbb{C}^2$ and $\mathbb{C}^4$ respectively, then M is the matrix of $\phi$ with respect to the bases $\{f_1^*,f_2^*\}$ and $\{e_1,e_1+e_2,e_3,e_4\}$.
i1 : R=QQ[x_(1,1)..x_(2,4)]; |
i2 : D=dynkinType{{"A",1},{"A",3}}; |
i3 : U={{1,1,0,0},{1,-1,1,0},{1,0,-1,1},{1,0,0,-1},{-1,1,0,0},{-1,-1,1,0},{-1,0,-1,1},{-1,0,0,-1}}; |
i4 : setWeights(R,D,U); |
i5 : M=map(R^2,R^{4:-1},{{x_(1,1),x_(1,1)+x_(1,2),x_(1,3),x_(1,4)},{x_(2,1),x_(2,2)+x_(2,1),x_(2,3),x_(2,4)}}) o5 = | x_(1,1) x_(1,1)+x_(1,2) x_(1,3) x_(1,4) | | x_(2,1) x_(2,1)+x_(2,2) x_(2,3) x_(2,4) | 2 4 o5 : Matrix R <--- R |
i6 : (V,C)=propagateWeights(M,{{-1,0,0,0},{1,0,0,0}}); |
i7 : V o7 = {{0, 0, 0, -1}, {0, 0, -1, 1}, {0, -1, 1, 0}, {0, 1, 0, 0}} o7 : List |
i8 : C o8 = {1} | 0 0 0 1 | {1} | 0 0 1 0 | {1} | 0 1 0 0 | {1} | 1 1 0 0 | 4 4 o8 : Matrix R <--- R |
i9 : M*inverse(C) o9 = | x_(1,4) x_(1,3) x_(1,2) x_(1,1) | | x_(2,4) x_(2,3) x_(2,2) x_(2,1) | 2 4 o9 : Matrix R <--- R |
While the first and second columns of M have the same leading terms, all the columns of M*inverse(C) have different leading terms. The weights in V are in order the weights of $e_4$, $e_3$, $e_2$ and $e_1$.
A list of weights obtained using this method can be decomposed into highest weights using the function decomposeWeightsList.
This function does not check that M is an equivariant map. When used on a map that is not equivariant, this function will produce meaningless results.