|
D.15.11.46 pushForward
Procedure from library multigrading.lib (see multigrading_lib).
- Usage:
- pushForward(f);
- Purpose:
- Computes the finest grading of the image ring which makes the map f
a map of graded rings. The group map between the two grading groups is given
by transpose( (Id, 0) ). Pay attention that the group spanned by the columns of
the grading group matrix may not be a subgroup of the grading group. Still all columns
are needed to find the correct image of the preimage gradings.
Example:
| LIB "multigrading.lib";
ring r = 0,(x,y,z),dp;
// Setting degrees for preimage ring.;
intmat grad[3][3] =
1,0,0,
0,1,0,
0,0,1;
setBaseMultigrading(grad);
// grading on r:
getVariableWeights();
==> 1,0,0,
==> 0,1,0,
==> 0,0,1
getLattice();
==> 0,0,0
// only for the purpose of this example
if( voice > 1 ){ /*keepring(r);*/ export(r); }
ring R = 0,(a,b),dp;
ideal i = a2-b2+a6-b5+ab3,a7b+b15-ab6+a6b6;
// The quotient ring by this ideal will become our image ring.;
qring Q = std(i);
listvar();
==> // Q [0] *ring
==> // R [0] ring
==> // grad [0] intmat 3 x 3
==> // r [0] ring
map f = r,-a2b6+b5+a3b+a2+ab,-a2b7-3a2b5+b4+a,a6-b6-b3+a2; f;
==> f[1]=-a2b6+b5+a3b+a2+ab
==> f[2]=-a2b7-3a2b5+b4+a
==> f[3]=a6-b6-b3+a2
// TODO: Unfortunately this is not a very spectacular example...:
// Pushing forward f:
pushForward(f);
// due to pushForward we have got new grading on Q
getVariableWeights();
==> 0,0,
==> 0,0,
==> 0,0,
==> 1,0,
==> 0,1
getLattice();
==> 1,0,0,0,0,
==> 0,1,0,0,0,
==> 0,0,1,0,0,
==> 1,1,1,1,0,
==> 1,1,1,1,1
// only for the purpose of this example
if( voice > 1 ){ kill r; }
|
|