Hi all! On Sep 4, 11:33 am, Burcin Erocal <bur...@erocal.org> wrote: [...] > > Maybe, you can give use a list, what you need. > > Can you also provide example sage sessions showing how you think these > objects should be constructed?
I need graded commutative rings, which can be easily constructed, provided that one has * Singular's "SuperCommutative" rings * additional degree vectors (resp. matrix orderings where the first matrix row is interpreted as degree vector). SuperCommutative provides precisely one block of variables that pairwise anticommute. However, it would be even nicer to have rings with several anticommuting blocks. I could imagine to create it (with additional degree vector) like that: sage: R.<a,b,c,d,e,f> = PolynomialRing(QQ, nc_blocks=[[0,1],[3,5]], degrees=[1,1,2,3,3,3]) Then, R should be a graded commutative ring: two generators in degrees 1, one in degree 2, and three in degree 3, and the nc_blocks determine that variables a,b,d,e,f are pairwise anti-commuting. If only one anticommutative block is possible, then it could be: sage: R.<c,a,b,d,e,f> = PolynomialRing(QQ, nc_block=[1,5], degrees= [2,1,1,3,3,3]) > > if you design a Python-ic interface how to construct all the term > > orderings we are still missing in Sage from Singular (e.g. weighted > > term orderings), then I might find the time to implement them. Currently, the ordering of a ring is determined by a string "name": TermOrder.__init__(self, name='lex', n = 0, blocks=True) respectively "order": PolynomialRing(base_ring, arg1=None, arg2=None, sparse=False, order='degrevlex', names=None, name=None, implementation=None) Of course, it seems natural to define a matrix ordering by passing a matrix: sage: M = Matrix(2,2, [1,3,1,0]) sage: R.<x,y> = PolynomialRing(QQ,2,order=M) But it is perhaps not so nice to break compatibility with the current way of defining an ordering by strings. Closer to Singular syntax would be sage: R.<x,y> = PolynomialRing(QQ,2,order='M(1,3,1,0)') But what about block orderings? If one allows a matrix ordering to be defined by a matrix, then I guess the blocks should be listed: sage: P.<a,b,c,d,e> = PolynomialRing(QQ,5,order=[M,'degrevlex']) Or, if one goes with strings: sage: P.<a,b,c,d,e> = PolynomialRing(QQ,5,order='M(1,3,1,0),degrevlex (3)']) As mentioned above, I would expect that the first row of a matrix determines degrees (which is so in Singular). Hence, in the preceding example, one would have sage: a.degree() 1 sage: b.degree() 3 sage: c.degree() == d.degree() == e.degree() ==1 True > 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. 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. > - if you can contribute to the development (testing patches and > designing an interface is also a contribution) Certainly I can do some tests. Best regards, Simon --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---