#4513: [with patch, needs work] Action of MatrixGroup on a MPolynomialRing
-----------------------------------+----------------------------------------
   Reporter:  SimonKing            |       Owner:  SimonKing                    
        
       Type:  enhancement          |      Status:  needs_work                   
        
   Priority:  major                |   Milestone:  sage-4.5.1                   
        
  Component:  commutative algebra  |    Keywords:  matrix group, action, 
polynomial ring
     Author:                       |    Upstream:  N/A                          
        
   Reviewer:                       |      Merged:                               
        
Work_issues:                       |  
-----------------------------------+----------------------------------------
Changes (by SimonKing):

  * upstream:  => N/A


Old description:

> 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:
>  1. An efficient implementation probably requires knowledge of the guts
> of MPolynomialElement.
>  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.
>
> 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...

New description:

 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.

 The following should work:
 {{{
 sage: M = Matrix(GF(3),[[1,2],[1,1]])
 sage: N = Matrix(GF(3),[[2,2],[2,1]])
 sage: G = MatrixGroup([M,N])
 sage: m = G.0
 sage: n = G.1
 sage: R.<x,y> = GF(3)[]
 sage: m*x
 x + y
 sage: x*m
 x - y
 sage: (n*m)*x == n*(m*x)
 True
 sage: x*(n*m) == (x*n)*m
 True
 }}}

 On the other hand, we still want to have the usual action on vectors or
 matrices:
 {{{
 sage: x = vector([1,1])
 sage: x*m
 (2, 0)
 sage: m*x
 (0, 2)
 sage: (n*m)*x == n*(m*x)
 True
 sage: x*(n*m) == (x*n)*m
 True
 }}}
 {{{
 sage: x = matrix([[1,2],[1,1]])
 sage: x*m
 [0 1]
 [2 0]
 sage: m*x
 [0 1]
 [2 0]
 sage: (n*m)*x == n*(m*x)
 True
 sage: x*(n*m) == (x*n)*m
 True
 }}}

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/4513#comment:15>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to