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

Reply via email to