# Singular

#### D.15.1.3 autGenWeights

Procedure from library `autgradalg.lib` (see autgradalg_lib).

Usage:
autGenWeights(Q): Q is an intmat (columns must contain a lattice basis).

Assume:
the cone over Q must be pointed and the columns of Q contain a lattice basis; there must be no 0-columns in Q. We assume that, in the torsion case, the torsion rows of Q are reduced (for example, a row of Q standing for entries in ZZ/5ZZ must not contain elements > 5 or < 0).

Purpose:
computes generators for the subgroup aut(Omega_S) of GL(n, \ZZ) that consists of all invertible integer kxk matrices which fix the set Omega_S of degrees of the variables of the basering S. The set of columns of Q equals Omega_S.

Reference:
Remark 3.1.

Return:
a list of integral matrices A with |det A| = 1 such that A*{columns of Q} = {columns of Q}.

Example:
 ```LIB "autgradalg.lib"; // torsion example // ZZ + ZZ/5ZZ: intmat Q[2][5] = 1,1,1,1,1, 2,3,1,4,0; list TOR = 5; autGenWeights(Q, TOR); ==> [1]: ==> 1,0, ==> 0,1 ==> [2]: ==> 1,0, ==> 0,2 ==> [3]: ==> 1,0, ==> 0,3 ==> [4]: ==> 1,0, ==> 0,4 ==> [5]: ==> 1,0, ==> 1,1 ==> [6]: ==> 1,0, ==> 1,2 ==> [7]: ==> 1,0, ==> 1,3 ==> [8]: ==> 1,0, ==> 1,4 ==> [9]: ==> 1,0, ==> 2,1 ==> [10]: ==> 1,0, ==> 2,2 ==> [11]: ==> 1,0, ==> 2,3 ==> [12]: ==> 1,0, ==> 2,4 ==> [13]: ==> 1,0, ==> 3,1 ==> [14]: ==> 1,0, ==> 3,2 ==> [15]: ==> 1,0, ==> 3,3 ==> [16]: ==> 1,0, ==> 3,4 ==> [17]: ==> 1,0, ==> 4,1 ==> [18]: ==> 1,0, ==> 4,2 ==> [19]: ==> 1,0, ==> 4,3 ==> [20]: ==> 1,0, ==> 4,4 kill Q, TOR; // another free example intmat Q[2][6] = -2,2,-1,1,-1,1, 1,1,1,1,1,1; autGenWeights(Q); ==> [1]: ==> 1,0, ==> 0,1 ==> [2]: ==> -1,0, ==> 0,1 kill Q; //---------------- // 2nd free example intmat Q[2][4] = 1,0,1,1, 0,1,1,1; autGenWeights(Q); ==> [1]: ==> 1,0, ==> 0,1 ==> [2]: ==> 0,1, ==> 1,0 kill Q; ```