Changes between Initial Version and Version 15 of Ticket #4513


Ignore:
Timestamp:
07/17/10 13:43:34 (9 years ago)
Author:
SimonKing
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #4513

    • Property Milestone changed from to sage-3.2.1
    • Property Component changed from algebra to commutative algebra
    • Property Summary changed from Action of MatrixGroup on a MPolynomialRing to [with patch, needs work] Action of MatrixGroup on a MPolynomialRing
    • Property Report Upstream changed from to N/A
    • Property Owner changed from tbd to SimonKing
  • Ticket #4513 – Description

    initial v15  
    11A 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.
    22
    3 Off list, David Joyner suggested to implement it with a `__call__` method in `matrix_group_element.py`. Then, the following should work:
     3The following should work:
    44{{{
    5 sage: M=Matrix(GF(3),[[1,2],[1,1]])
    6 sage: G=MatrixGroup([M])
    7 sage: g=G.0
    8 sage: p=x*y^2
    9 sage: g(p)
    10 x^3 + x^2*y - x*y^2 - y^3
    11 sage: _==(x+2*y)*(x+y)^2
     5sage: M = Matrix(GF(3),[[1,2],[1,1]])
     6sage: N = Matrix(GF(3),[[2,2],[2,1]])
     7sage: G = MatrixGroup([M,N])
     8sage: m = G.0
     9sage: n = G.1
     10sage: R.<x,y> = GF(3)[]
     11sage: m*x
     12x + y
     13sage: x*m
     14x - y
     15sage: (n*m)*x == n*(m*x)
     16True
     17sage: x*(n*m) == (x*n)*m
    1218True
    1319}}}
    1420
    15 Although it concerns `matrix_group_element.py`, I believe this ticket belongs to Commutative Algebra, for two reasons:
    16  1. An efficient implementation probably requires knowledge of the guts of MPolynomialElement.
    17  2. 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.
    18 
    19 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...
     21On the other hand, we still want to have the usual action on vectors or matrices:
     22{{{
     23sage: x = vector([1,1])
     24sage: x*m
     25(2, 0)
     26sage: m*x
     27(0, 2)
     28sage: (n*m)*x == n*(m*x)
     29True
     30sage: x*(n*m) == (x*n)*m
     31True
     32}}}
     33{{{
     34sage: x = matrix([[1,2],[1,1]])
     35sage: x*m
     36[0 1]
     37[2 0]
     38sage: m*x
     39[0 1]
     40[2 0]
     41sage: (n*m)*x == n*(m*x)
     42True
     43sage: x*(n*m) == (x*n)*m
     44True
     45}}}