Hi!

In the past I intensely used pexpect interfaces to GAP and even more to
Singular. Recently I switched to using libgap, which turned out to be a
good idea. Now I consider to replace "singular-via-pexpect" by
libsingular. But I got stuck very early.

Setting: I am dealing with graded-homogeneous ideals over
graded-commutative rings (i.e., even degree elements are in the centre,
whereas odd-degree elements anti-commute with each other).
The term order is given by a matrix. I need to compute Gröbner bases of
such ideals, and for efficiency I am often imposing a degree bound.
Also, I am using Singular's std() command in the form std(I,J), which
computes a Gröbner basis of the ideal generated by I and J under the
assumption that I is a Gröbner basis.

A graded-commutative ring can easily be implemented using Singular's
"super-commutative" rings. Ostensibly, they are wrapped in
sage.rings.polynomial.plural.SCA.

However:
   sage: from sage.rings.polynomial.plural import SCA
   sage: S = SCA(GF(3), ('x1','x2','x3','x4','x5'), [0,1,2])
   sage: I = S*S.gens()*S
   sage: type(I)
   <class 'sage.rings.noncommutative_ideals.Ideal_nc'>
   sage: hasattr(I, 'groebner_basis')
   False
   sage: groebner = sage.libs.singular.function_factory.ff.groebner
   sage: groebner(I, ring=S)
   Traceback (most recent call last):
   ...
   TypeError: Cannot call Singular function 'groebner' with ring
   parameter of type '<class
   'sage.rings.quotient_ring.QuotientRing_nc_with_category'>'

I thought that a couple of years ago a Singular (or rather Plural) wrapper
was created for ideals over non-commutative rings. Indeed, Singular's
G-algebras and their ideals are wrapped to the extent that Gröbner bases
can be computed. However, Gröbner basis computation over
super-commutative algebras is a lot more efficient than over general
G-algebras, if I recall correctly. On the other hand, I think I have
been told at some point that if one creates a G-algebra that is in fact
super-commutative, then Singular will notice and will automatically
apply the more efficient specialised algorithms --- but I am not sure if
I reacall that correctly.

Questions:

Is it true that Singular will automatically recognise whether a
G-algebra is super-commutative?

If yes: How to create a G-algebra whose term order is defined by a
given matrix? How to then use std(I,J), with degree bound?

If no: Is everything already available in Sage via libsingular? If yes:
How? If no: Is there a ticket for it?

Best regards,
Simon

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to