A group of n by n matrices over a field K acts on a polynomial ring with n variables over K. However, this is not implemented yet.
Off list, David Joyner suggested to implement it with a __call__ method in matrix_group_element.py. Then, the following should work:
sage: M=Matrix(GF(3),[[1,2],[1,1]])
sage: G=MatrixGroup([M])
sage: g=G.0
sage: p=x*y^2
sage: g(p)
x^3 + x^2*y - x*y^2 - y^3
sage: _==(x+2*y)*(x+y)^2
True
Although it concerns matrix_group_element.py, I believe this ticket belongs to Commutative Algebra, for two reasons:
- An efficient implementation probably requires knowledge of the guts of MPolynomialElement.
- My long-term goal is to re-implement my algorithms for the computation of non-modular invariant rings. The current implementation is in the finvar.lib library of Singular -- the slow Singular interpreter sometimes is a bottle necks.
One more general technical question: It is matrix_group_element.py, hence seems to be pure python. Is it possible to define an additional method in some .pyx file using Cython? I don't know if this would be reasonable to do here, but perhaps this could come in handy at some point...