#### D.15.14.1 setBaseMultigrading

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

Usage:
  setBaseMultigrading(M[, G]); M is an integer matrix, G is a group (or lattice)

Purpose:
  attaches weights of variables and grading group to the basering.

Note:
  M encodes the weights of variables column-wise.

Return:
  nothing

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;
    // GradingGroup:
    intmat L[3][2] =
    1, 1,
    1, 3,
    1, 5;
    // attaches M & L to R (==basering):
    setBaseMultigrading(M, L); // Grading: Z^3/L
    // Weights are accessible via "getVariableWeights()":
    getVariableWeights();
    ==> 1,0,0,
    ==> 0,1,0,
    ==> 0,0,1
    // Test all possible usages:
    (getVariableWeights() == M) && (getVariableWeights(R) == M) && (getVariableWeights(basering) == M);
    ==> 1
    // Grading group is accessible via "getLattice()":
    getLattice();
    ==> 1,1,
    ==> 1,3,
    ==> 1,5
    // Test all possible usages:
    (getLattice() == L) && (getLattice(R) == L) && (getLattice(basering) == L);
    ==> 1
    // And its hermite NF via getLattice("hermite"):
    getLattice("hermite");
    ==> 1,0,
    ==> 1,2,
    ==> 1,4
    // Test all possible usages:
    intmat H = hermiteNormalForm(L);
    (getLattice("hermite") == H) && (getLattice(R, "hermite") == H) && (getLattice(basering, "hermite") == H);
    ==> 1
    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)
    // Weights are accessible via "getVariableWeights()":
    getVariableWeights() == M;
    ==> 1
    // Torsion is accessible via "getLattice()":
    getLattice() == L;
    ==> 1
    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
    // Weights are accessible via "getVariableWeights()":
    getVariableWeights() == M;
    ==> 1
    // Torsion is accessible via "getLattice()":
    getLattice() == L;
    ==> 1

User manual for Singular version 4.4.1, 2025, generated by texi2html.