|
D.15.17.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
|
|