# Singular

#### D.15.25.4 getLattice

Procedure from library `multigrading.lib` (see multigrading_lib).

Usage:
getLattice([R[,opt]])

Purpose:
get associated grading group matrix, i.e. generators (cols) of the grading group

Return:
intmat, the grading group matrix, or
its hermite normal form if an optional argument ("hermiteNormalForm") is given or smith normal form if an optional argument ("smith") is given

Example:
 ```LIB "multigrading.lib"; ring R = 0, (x, y, z), dp; // Weights of variables intmat M[3][3] = 1, 0, 0, 0, 1, 0, 0, 0, 1; // Torsion: intmat L[3][2] = 1, 1, 1, 3, 1, 5; // attaches M & L to R (==basering): setBaseMultigrading(M, L); // Grading: Z^3/L // Torsion is accessible via "getLattice()": getLattice() == L; ==> 1 // its hermite NF: print(getLattice("hermite")); ==> 1 0 ==> 1 2 ==> 1 4 kill L, M; // ----------- isomorphic multigrading -------- // // Weights of variables intmat M[2][3] = 1, -2, 1, 1, 1, 0; // Torsion: intmat L[2][1] = 0, 2; // attaches M & L to R (==basering): setBaseMultigrading(M, L); // Grading: Z + (Z/2Z) // Torsion is accessible via "getLattice()": getLattice() == L; ==> 1 // its hermite NF: print(getLattice("hermite")); ==> 0 ==> 2 kill L, M; // ----------- extreme case ------------ // // Weights of variables intmat M[1][3] = 1, -1, 10; // Torsion: intmat L[1][1] = 0; // attaches M & L to R (==basering): setBaseMultigrading(M); // Grading: Z^3 // Torsion is accessible via "getLattice()": getLattice() == L; ==> 1 // its hermite NF: print(getLattice("hermite")); ==> 0 ```