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 -~----------~----~----~----~------~----~------~--~---