Hi Simon,

I should have mentioned earlier that long ago Michael Brickenstein and
I wrote a preliminary interface to Plural. You can find the patches
here:

http://trac.sagemath.org/sage_trac/ticket/4539

On Fri, 4 Sep 2009 04:27:25 -0700 (PDT)
Simon King <simon.k...@nuigalway.ie> wrote:

<snip>
> > Is there anybody else interested in a wrapper for the noncommutative
> > functionality provided by Singular?
> >
> > Singular's capabilities are described in the manual here:
> >
> > http://www.singular.uni-kl.de/Manual/latest/sing_356.htm#SEC397
> >
> > If you're interested please write back with the following
> > information
> >  - what exactly are your needs
> >  - ideas for a possible user interface (example Sage session)
> 
> My needs are restricted to the SuperCommutative algebras. The
> implementation seems very efficient (two years ago I made some tests,
> and the basic arithmetic is as fast as in the commutative case).
> 
> General non-commutative algebras are not needed to me, but would
> certainly be nice to have. The nc_algebras in Singular are given by
> two strictly upper triangular matrices, see
> http://www.singular.uni-kl.de/Manual/latest/sing_404.htm#SEC445
> 
> So, one should expect that Sage should use two matrices as well.

This is not necessary. There is some code written by Michael that
converts the relations to a matrix, and passes that on to Singular
around line 396 of the patch here:

http://trac.sagemath.org/sage_trac/attachment/ticket/4539/plural_2.patch

Here is the doctest from that function:

sage: A.<x,y,z>=FreeAlgebra(QQ,3) 
sage: G=A.g_algebra({y*x:-x*y}) 
sage: (x,y,z)=G.gens() 
sage: x*y 
x*y 
sage: y*x 
-x*y 
sage: z*x 
x*z 
sage: (x,y,z)=A.gens() 
sage: G=A.g_algebra({y*x:-x*y+1}) 
sage: (x,y,z)=G.gens() 
sage: y*x 
-x*y + 1 
sage: (x,y,z)=A.gens() 
sage: G=A.g_algebra({y*x:-x*y+z}) 
sage: (x,y,z)=G.gens() 
sage: y*x 
-x*y + z 

IMHO, this is more user friendly compared to the Singular interface.
We shouldn't restrict ourselves to copying the Singular commands to
construct these objects. 

We should also tie these to the FreeAlgebra stuff from the beginning.
Otherwise, we'll end up with a wrapper that lives independent of the
algebraic hierarchy like the PolyBoRi wrapper ended up being.


Thanks.

Cheers,
Burcin


> However, there is one problem: In Singular, one would first define a
> usual ring, since this allows you to define the two matrices (which
> may contain polynomials, that's why you need the ring!), and only then
> define the nc_algebra.
> 
> The example from the Singular manual would correspond to the following
> Sage session:
>   sage: F.<Q> = FractionField(PolynomialRing(QQ,'Q'))
>   sage: R.<x,y,z> = PolynomialRing(F)
>   sage: C = Matrix(3,3, [0, Q^2, 1/Q^2,  0, 0, Q^2,  0,0,0])
>   sage: D = Matrix(3,3, [0, -Q*z, 1/Q*y,  0, 0, (-Q)*x,  0, 0, 0])
>   sage: ncF = F.nc_algebra(C,D)
> 
> It would be nice to have a one-line definition, but I doubt that this
> would be easy, since one needs to name x,y,z when defining the matrix
> D that is used when defining ncF.

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to