|
The following functions work with collections of polynomials which are
considered as generators for subalgebras or submodules of a polynomial
ring. They have particular use in invariant theory.
MinimalAlgebraGenerators(L) : { RngMPol } -> [ RngMPol ]
Let R=K[x1, ..., xn] be a polynomial ring of rank n over the field
K. Suppose L is a set or sequence of k polynomials
f1, ..., fk in R.
Let A=K[f1, ..., fk] be the
subalgebra (not ideal) of R generated by L.
This function returns a minimal generating set of the algebra A
as a (sorted) sequence of elements taken from L.
Let R=K[x1, ..., xn] be a polynomial ring of rank n over the field
K. Suppose P is a sequence of k homogeneous polynomials
p1, ..., pk in R and suppose S is a sequence of r homogeneous
polynomials s1, ..., sr in R. Let A=K[p1, ..., pk] be the
subalgebra (not ideal) of R generated by P and let
M=A[s1, ..., sr] be the A-module generated by S over A.
Finally, suppose F is an element of R. This function returns whether
F is in the module M (considered as a submodule of R).
If the result is true, the function also returns a sequence
C=[c1, ..., cr] of length r with ci∈K[t1, ..., tk] such
that F=∑i=1r ci(p1, ..., pk).si.
(The polynomial ring K[t1, ..., tr] is constructed separately
but automatically with the print names t1, t2, etc.)
The grading of the polynomial ring R is used to determine the (weighted)
degrees of all the polynomials in P, S and the polynomial F.
The function
works as follows: it first splits F into its homogeneous components,
and then, for
each homogeneous component of (weighted) degree d, it constructs a basis for
the K-space of all polynomials of the module M of degree d
and then determines by linear algebra whether the component lies in
that space.
The function is most often used with an invariant ring:
P is the sequence of primary invariants, S is the sequence of secondary
invariants, and F is a general invariant which one wishes to express
in terms of the module generators S over the algebra generated by P.
Also, if one wishes to test only for membership in the algebra
A=K[p1, ..., pk], then the sequence [R!1] should be passed for S.
Let R=K[x1, ..., xn] be a polynomial ring of rank n over the field
K. Suppose P is a sequence of k homogeneous polynomials
p1, ..., pk in R and suppose S is a sequence of r homogeneous
polynomials s1, ..., sr in R. Let A=K[p1, ..., pk] be the
subalgebra (not ideal) of R generated by P and let
M=A[s1, ..., sr] be the A-module generated by S over A.
Finally, suppose L is a sequence of length l of elements of R which are
all homogeneous of (weighted) degree d.
This function returns parallel sequences B and V with the following
properties:
- (a)
- B is sequence of length l of booleans such that
for 1≤i≤l, B[i] is true iff L[i] is in the module M.
- (b)
- V is a sequence of length l consisting of sequences of length
r and consisting of polynomials
in the polynomial ring T=K[t1, ..., tr].
(The polynomial ring T=K[t1, ..., tr] is constructed separately
but automatically with the print names t1, t2, etc.)
If B[i] is false (so L[i] is not in M), V[i] is a sequence
of r zero polynomials. Otherwise V[i] is a sequence
of r polynomials ci, 1, ..., ci, r in T such that
that L[i]=∑j=1r ci, j(p1, ..., pk).sj.
The grading of the polynomial ring R is used to determine the (weighted)
degrees
of all the polynomials in P, S and L.
The function works as follows:
it constructs a basis for
the K-space of all polynomials of the module M of degree d
and then, for each i with 1≤i ≤l, determines by linear algebra
whether L[i] lies in the space. Only one echelonization of the space
is needed to determine all the values of B and V so it is much
more efficient to use this function if possible with many polynomials
in L of the same homogeneous degree instead of calling the previous
function separately for each polynomial since that will need to
construct the basis for
the homogeneous space and perform an echelonization each time.
Again, this function is most often used with an invariant ring:
P is the sequence of primary invariants, S is the sequence of secondary
invariants, and L is a sequence of general invariants which one wishes to
express in terms of the module generators S over the algebra generated by
P.
Also, if one wishes to test only for membership in the algebra
A=K[p1, ..., pk], then the sequence [R!1] should be passed for S.
Let R=K[x1, ..., xn] be a polynomial ring of rank n over the field
K. Suppose P is a sequence of k homogeneous polynomials
p1, ..., pk in R and suppose S is a sequence of r homogeneous
polynomials s1, ..., sr in R. Let A=K[p1, ..., pk] be the
subalgebra (not ideal) of R generated by P and let
M=A[s1, ..., sr] be the A-module generated by S over A.
Finally, suppose L is a sequence of length l of elements of R which are
all homogeneous of (weighted) degree d.
Let U be the K-subspace of R consisting of all
polynomials of the module M of (weighted) degree d
and let V be the K-subspace of R generated by the elements of L.
This function returns a sequence I of integer indices such that the sequence
elements of L corresponding to the indices in I forms a basis for
a K-subspace W of R such that U + V = U direct-sum W. That is, I
selects a subsequence of L which yields an extension of any basis
of U to a basis of U + V.
Using this function, one can extend a
minimal module generating set in S to include new elements of increasing
degree, while ensuring that the module generators are minimalized
(i.e., there is no redundancy amongst them).
The grading of the polynomial ring R is used to determine the (weighted)
degrees
of all the polynomials in P, S and L.
We demonstrate simple uses of the function HomogeneousModuleTest.
See also the example HomogeneousModuleTest2 in
the Invariant Rings chapter which demonstrates the use of the function
HomogeneousModuleTest in invariant theory.
> R<x, y, z> := PolynomialRing(RationalField(), 3);
> P := [x^2 + y^2, z];
> S := [1, x + y + z];
> L := [x^2 + y^2, (x+y+z)^2-z^2-2*x*y, x*y];
> B, V := HomogeneousModuleTest(P, S, L);
> B;
[ true, true, false ]
> V;
[
[
t1,
0
],
[
t1 - 2*t2^2,
2*t2
],
[
0,
0
]
]
> // Thus L[1] is P[1]*S[1] and
> // L[2] is (P[1] - 2*P[2]^2)*S[1] + 2*P[2]*S[2].
> L[1] eq P[1]*S[1];
true
> (P[1] - 2*P[2]^2)*S[1] + 2*P[2]*S[2] eq L[2];
true
> // Determine subsequence of [x^3, y^3, z^3] which forms
> // extension basis of module generated by P and S.
> L := [x^3, y^3, z^3];
> HomogeneousModuleTestBasis(P, S, L);
[ 1, 2 ]
> // Thus x^2 and y^2 could be appended to S to preserve
> // minimality.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|