sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.44k stars 480 forks source link

plural wrapper #4539

Closed burcin closed 12 years ago

burcin commented 15 years ago

During SD10 in Nancy, Michael Brickenstein and Burcin Erocal worked on making Plural (the non-commutative extension of Singular) accessible from Sage. Burcin and Michael also worked at the Plural wrapper on SD 23.5 in Kaiserslautern. Oleksandr Motsak and Alexander Dreyer continued this at SD 24 in Linz.

The patches that resulted from this work are attached.

Newest functionality:

Possible topics that need work are:

Apply

Depends on #11316 Depends on #11856 Depends on #10903 Depends on #9138 Depends on #11900 Depends on #11115 Depends on #11068 Depends on #11761

CC: @saliola @mwhansen @alexanderdreyer @sagetrac-OleksandrMotsak @sagetrac-PolyBoRi @malb @simon-king-jena

Component: algebra

Keywords: libsingular plural wrapper sd10 sd23.5 sd24 sd34

Author: Michael Brickenstein, Burcin Erocal, Oleksandr Motsak, Alexander Dreyer, Simon King

Reviewer: Simon King, Alexander Dreyer

Merged: sage-5.0.beta1

Issue created by migration from https://trac.sagemath.org/ticket/4539

burcin commented 15 years ago

initial wrapper for plural

burcin commented 15 years ago

Attachment: plural_1.patch.gz

better user interface for plural rings

1998e663-c3b5-4cf6-92c3-7f1771ca5185 commented 15 years ago

Attachment: plural_2.patch.gz

aghitza commented 14 years ago
comment:1

Attachment: letterplace.py.gz

burcin commented 14 years ago
comment:3

The letterplace interface in attachment: letterplace.py is now at #7797.

burcin commented 14 years ago

Attachment: plural_1.sage-4.4.4.patch.gz

rebased to 4.4.4

burcin commented 14 years ago

rebased to 4.4.4

burcin commented 14 years ago

Attachment: plural_2.sage-4.4.4.patch.gz

Attachment: plural_3.patch.gz

appy on top of 1 and 2, new classes for plural objects which don't inherit from the commutative ones

1998e663-c3b5-4cf6-92c3-7f1771ca5185 commented 14 years ago

Attachment: plural_functions.2.patch.gz

1998e663-c3b5-4cf6-92c3-7f1771ca5185 commented 14 years ago
comment:4

sorry, for multiple files. Apply patches in this order:

plural_1.sage-4.4.4.patch

plural_2.sage-4.4.4.patch

plural_3.patch Download

plural_functions.patch

mwhansen commented 14 years ago
comment:5

Attachment: plural_functions.patch.gz

5ab5d1d9-2f08-44f6-b4f8-3ea893e67b60 commented 14 years ago

i have just folded all the previous patches by Michael & Burcin into plural_folded-4.4.4.patch (should be applied before anything else)

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: plural_folded-4.4.4.patch.gz

Part one Olekandr's work in Linz

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: extending_plural_folded-4.4.4.patch.gz

Attachment: extplural-more.gz

Doctest fixes by Alexander

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: extplural-more.patch.gz

Doctest fixes by Alexander

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: extplural-more2.patch.gz

noncommunative ring functionality

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: extplural-more3.patch.gz

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: plural-wrapper-2010-07-22.patch.gz

This folds of the following patches, a crucial subset of the noncommutation fucntionality as well as extensive documentation and doctests

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:7

We have an first release ready for reviewing!

Regards, Oleksandr and Alexander

1998e663-c3b5-4cf6-92c3-7f1771ca5185 commented 14 years ago
comment:11

wow, that sounds awesome. You make me really happy. Can you outline in the ticket description, what the patch actually implements and what not.

5ab5d1d9-2f08-44f6-b4f8-3ea893e67b60 commented 14 years ago

Description changed:

--- 
+++ 
@@ -1,10 +1,22 @@
 During SD10 in Nancy, Michael Brickenstein and I worked on making Plural (the non-commutative extension of Singular) accessible from Sage.

-The patches that resulted from this work are attached. They still need to be polished to be included in Sage.
+The patches that resulted from this work are attached. 
+
+Newest functionality:
+* coercion from basering/Integer types (still needs tests)
+* flag to check degeneracy conditions on init
+* relations for non-commutative rings 
+* most relevant functions for rings/polynomials/ideals (mostly adopted from MPolynomialRing_libsingular/MPolynomialRing_libsingular/...)
+  e.g. std/twostd/syzygy_module/lc/lm/lt/monomial operations
+* RingWrap and TermOrder were extended
+* quick and dirty conversion of RingWrap to Sage rings (needs some care as the resulting rings may not be unique and therefore may confuse coercion)
+* quotient of a non-commutative ring by a two-sided Groebner basis
+* shortcut to create graded commutative algebras: SCA
+
+
+They still need to be polished to be included in Sage.

 Possible topics that need work are:
-* coercion
-* flag to check degeneracy conditions on init
 * put the files in sage/algebra/ ???
 * make sure element does not export functions it doesn't support (e.g. gcd)
5ab5d1d9-2f08-44f6-b4f8-3ea893e67b60 commented 14 years ago

Description changed:

--- 
+++ 
@@ -14,14 +14,10 @@
 * shortcut to create graded commutative algebras: SCA

-They still need to be polished to be included in Sage.
-
 Possible topics that need work are:
 * put the files in sage/algebra/ ???
 * make sure element does not export functions it doesn't support (e.g. gcd)
-
-For a full featured wrapper we also need the following (they should be separated into different bugs once this one is done):
-* groebner basis
-* predefined structures from the library
+* predefined structures from the library 

+
5ab5d1d9-2f08-44f6-b4f8-3ea893e67b60 commented 14 years ago

Description changed:

--- 
+++ 
@@ -1,8 +1,9 @@
-During SD10 in Nancy, Michael Brickenstein and I worked on making Plural (the non-commutative extension of Singular) accessible from Sage.
+During SD10 in Nancy, Michael Brickenstein and Burcin Erocal worked on making Plural (the non-commutative extension of Singular) accessible from Sage.

 The patches that resulted from this work are attached. 

 Newest functionality:
+* non-commutative rings/polynomials/ideals are fully featured classes now (no deriving from commutative ones)!
 * coercion from basering/Integer types (still needs tests)
 * flag to check degeneracy conditions on init
 * relations for non-commutative rings 
5ab5d1d9-2f08-44f6-b4f8-3ea893e67b60 commented 14 years ago
comment:14

what is meant in "predefined structures from the library"?

Need input: what structures / what library?

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: plural-missing-docu.patch.gz

Fixed some broken doctests

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Attachment: plural-missing-docu.2.patch.gz

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:15

coverage to 100%

simon-king-jena commented 14 years ago
comment:16

How to apply the patches? All and in the given order? Or is one of them a "master patch" that replaces several other patches

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:17

Just the following: plural-wrapper-2010-07-22.patch plural-missing-docu.2.patch

Regards, Alexander

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Description changed:

--- 
+++ 
@@ -1,24 +1,21 @@
-During SD10 in Nancy, Michael Brickenstein and Burcin Erocal worked on making Plural (the non-commutative extension of Singular) accessible from Sage.
+During SD10 in Nancy, Michael Brickenstein and Burcin Erocal worked on making Plural (the non-commutative extension of Singular) accessible from Sage. (Burcin and Michael also worked at the Plural wrapper on SD 23.5 in Kaiserslautern.) Oleksandr Motsak and Alexander Dreyer continued this at SD 24 in Linz.

-The patches that resulted from this work are attached. 
+The patches that resulted from this work are attached.

 Newest functionality:
+
 * non-commutative rings/polynomials/ideals are fully featured classes now (no deriving from commutative ones)!
 * coercion from basering/Integer types (still needs tests)
 * flag to check degeneracy conditions on init
-* relations for non-commutative rings 
-* most relevant functions for rings/polynomials/ideals (mostly adopted from MPolynomialRing_libsingular/MPolynomialRing_libsingular/...)
-  e.g. std/twostd/syzygy_module/lc/lm/lt/monomial operations
+* relations for non-commutative rings
+* most relevant functions for rings/polynomials/ideals (mostly adopted from MPolynomialRing_libsingular/MPolynomialRing_libsingular/...) e.g. std/twostd/syzygy_module/lc/lm/lt/monomial operations
 * RingWrap and TermOrder were extended
 * quick and dirty conversion of RingWrap to Sage rings (needs some care as the resulting rings may not be unique and therefore may confuse coercion)
 * quotient of a non-commutative ring by a two-sided Groebner basis
 * shortcut to create graded commutative algebras: SCA

+Possible topics that need work are:

-Possible topics that need work are:
 * put the files in sage/algebra/ ???
 * make sure element does not export functions it doesn't support (e.g. gcd)
-* predefined structures from the library 
-
-
-
+* predefined structures from the library
d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Accumulated patch for all patches above for Singular/Plural

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago

Description changed:

--- 
+++ 
@@ -1,4 +1,4 @@
-During SD10 in Nancy, Michael Brickenstein and Burcin Erocal worked on making Plural (the non-commutative extension of Singular) accessible from Sage. (Burcin and Michael also worked at the Plural wrapper on SD 23.5 in Kaiserslautern.) Oleksandr Motsak and Alexander Dreyer continued this at SD 24 in Linz.
+During SD10 in Nancy, Michael Brickenstein and Burcin Erocal worked on making Plural (the non-commutative extension of Singular) accessible from Sage. Burcin and Michael also worked at the Plural wrapper on SD 23.5 in Kaiserslautern. Oleksandr Motsak and Alexander Dreyer continued this at SD 24 in Linz.

 The patches that resulted from this work are attached.
d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:19

Attachment: plural-wrapper-2010-07-27.patch.gz

nthiery commented 14 years ago
comment:21

Hi!

I have some computations to do with Weyl algebras, and would love to have this cool piece of work at my fingertips! Please keep it up!

For the record: I tried to apply those patches to Sage 4.5.2, and got the following rejects:

zephyr-/opt/sage/devel/sage>hg qimport ~/plural-wrapper-2010-07-27.patch
adding plural-wrapper-2010-07-27.patch to series file
zephyr-/opt/sage/devel/sage>hg qpush
applying plural-wrapper-2010-07-27.patch
patching file sage/libs/singular/function.pyx
Hunk #3 succeeded at 96 with fuzz 2 (offset 0 lines).
Hunk #36 FAILED at 1378
1 out of 38 hunks FAILED -- saving rejects to file sage/libs/singular/function.pyx.rej
patching file sage/libs/singular/singular-cdefs.pxi
Hunk #3 succeeded at 218 with fuzz 2 (offset -1 lines).
patching file sage/rings/ideal_monoid.py
Hunk #1 FAILED at 12
1 out of 1 hunks FAILED -- saving rejects to file sage/rings/ideal_monoid.py.rej
patching file sage/rings/polynomial/term_order.py
Hunk #1 FAILED at 419
1 out of 1 hunks FAILED -- saving rejects to file sage/rings/polynomial/term_order.py.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
errors during apply, please fix and refresh plural-wrapper-2010-07-27.patch

Cheers,

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:22

Hi nthiery, Meanwhile, Burcin did a rebase? Does it help you?

Regards, Alexander

nthiery commented 14 years ago
comment:23

Yes, it now applies smoothly on 4.5.2, and compiles. Thanks!

zephyr-~sage-main>sage
----------------------------------------------------------------------
| Sage Version 4.5.2, Release Date: 2010-08-05                       |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
sage: F.<x,dx> = FreeAlgebra(QQ,2)    
sage: F.g_algebra({dx*x: x*dx+1})
------------------------------------------------------------
Unhandled SIGSEGV: A segmentation fault occurred in Sage.
This probably occurred because a *compiled* component
of Sage has a bug in it (typically accessing invalid memory)
or is not properly wrapped with _sig_on, _sig_off.
You might want to run Sage under gdb with 'sage -gdb' to debug this.
Sage will now terminate (sorry).
------------------------------------------------------------

Same problem with the example taken from the documentation:

zephyr-~sage-main>sage
----------------------------------------------------------------------
| Sage Version 4.5.2, Release Date: 2010-08-05                       |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
sage: A.<x,y,z>=FreeAlgebra(QQ,3)
sage: G=A.g_algebra({y*x:-x*y})
------------------------------------------------------------
Unhandled SIGSEGV: A segmentation fault occurred in Sage.
This probably occurred because a *compiled* component
of Sage has a bug in it (typically accessing invalid memory)
or is not properly wrapped with _sig_on, _sig_off.
You might want to run Sage under gdb with 'sage -gdb' to debug this.
Sage will now terminate (sorry).
------------------------------------------------------------

Should I be using 4.5.3 (being downloaded)?

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:24

Did you rebuild? (sage -br)

nthiery commented 14 years ago
comment:25

Replying to @alexanderdreyer:

Did you rebuild? (sage -br)

Yup.

d46d2cb1-860f-484d-8329-8ebfc9f5d004 commented 14 years ago
comment:26

I could reproduce the issue: sage -gdb vields the following;

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

Program received signal SIGSEGV, Segmentation fault.
0x00007fffdec7c488 in __pyx_f_4sage_4libs_8singular_8function_call_function (__pyx_v_self=0x459f910, __pyx_v_args=0x4538ab8, __pyx_v_R=0x4676480,
    __pyx_optional_args=<value optimized out>) at sage/libs/singular/function.cpp:11969
11969       currRingHdl->data.uring->ref += 1;
burcin commented 14 years ago
comment:27

I didn't have a chance to test the rebased patch, I had to leave right after I finished merging the rejected parts. I just wanted to get it out there in case it worked.

I can also reproduce the crash. I'll take a look at it now and try to upload a patch that works.

burcin commented 14 years ago

rebased to 4.5.3

burcin commented 14 years ago
comment:28

Attachment: plural-wrapper-2010-10-01.patch.gz

It was indeed careless rebasing. attachment: plural-wrapper-2010-10-01.patch (patch with same name as before, to hide my shame :) ) seems to work.

Nicolas, it would be great if you could help with the review. We are pretty confident with the interface to Singular and low-level code, since, as you can also see from the comments on the ticket, many Singular and Sage developers were involved in writing the code. However, we added many of the noncommutative structures on the spot (in a late night coding sprint) as we needed them. Another pair of eyes checking the mathematical structures and design would be really useful.

Though I think we should try to get this patch in as soon as possible. I'm sure quite a few people would be interested in the functionality of Plural. We can always work on providing a better interface later, as the number of users/developers increases.

nthiery commented 14 years ago
comment:29

Replying to @burcin:

It was indeed careless rebasing. attachment: plural-wrapper-2010-10-01.patch (patch with same name as before, to hide my shame :) ) seems to work.

It also does for me so far! Thanks a lot for the quick rebase!

Nicolas, it would be great if you could help with the review. We are pretty confident with the interface to Singular and low-level code, since, as you can also see from the comments on the ticket, many Singular and Sage developers were involved in writing the code. However, we added many of the noncommutative structures on the spot (in a late night coding sprint) as we needed them. Another pair of eyes checking the mathematical structures and design would be really useful.

I don't want to promise much at this time because I am already (very) late with a couple other reviews. But since the code is going to very useful for my research right now, I can promise to provide feedback for how it feels in practice!

Though I think we should try to get this patch in as soon as possible. I'm sure quite a few people would be interested in the functionality of Plural. We can always work on providing a better interface later, as the number of users/developers increases.

Sounds good to me!

nthiery commented 14 years ago
comment:31

Is it possible at this stage to define non commutative polynomial rings over QQ['q'].fraction_field()? I got an error with what I tried:

sage: K = QQ['q'].fraction_field()
q = K.gen()
F.<x,y,ex,ey> = FreeAlgebra(K,4)
W =  F.g_algebra({ex*x: x*(1+ex),ey*y:y*(1+ey)})

sage: ------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/algebras/free_algebra.py", line 547, in g_algebra
    return NCPolynomialRing_plural(base_ring, n, ",".join([str(g) for g in self.gens()]), c=cmat, d=dmat, order=order, check=check)
  File "plural.pyx", line 223, in sage.rings.polynomial.plural.NCPolynomialRing_plural.__init__ (sage/rings/polynomial/plural.cpp:3772)
  File "matrix0.pyx", line 1520, in sage.matrix.matrix0.Matrix.change_ring (sage/matrix/matrix0.c:7670)
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/matrix/matrix_space.py", line 405, in __call__
    return self.matrix(entries, copy=copy, coerce=coerce, rows=rows)
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/matrix/matrix_space.py", line 1136, in matrix
    return self.__matrix_class(self, entries=x, copy=copy, coerce=coerce)
  File "matrix_generic_dense.pyx", line 93, in sage.matrix.matrix_generic_dense.Matrix_generic_dense.__init__ (sage/matrix/matrix_generic_dense.c:2321)
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/rings/polynomial/multi_polynomial_ring.py", line 468, in __call__
    c = self.base_ring()(x)
  File "parent.pyx", line 859, in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:6407)
  File "coerce_maps.pyx", line 82, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3108)
  File "coerce_maps.pyx", line 77, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3010)
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/rings/fraction_field.py", line 467, in _element_constructor_
    coerce=coerce, reduce = self.is_exact())
  File "fraction_field_element.pyx", line 120, in sage.rings.fraction_field_element.FractionFieldElement.__init__ (sage/rings/fraction_field_element.c:1934)
  File "parent.pyx", line 859, in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:6407)
  File "coerce_maps.pyx", line 82, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3108)
  File "coerce_maps.pyx", line 77, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3010)
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/rings/polynomial/polynomial_ring.py", line 313, in _element_constructor_
    return C(self, x, check, is_gen, construct=construct, **kwds)
  File "/opt/sage-4.5.2/local/lib/python2.6/site-packages/sage/rings/polynomial/polynomial_element_generic.py", line 656, in __init__
    x = [QQ(z) for z in x]
  File "parent.pyx", line 859, in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:6407)
  File "coerce_maps.pyx", line 82, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3108)
  File "coerce_maps.pyx", line 77, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3010)
  File "rational.pyx", line 367, in sage.rings.rational.Rational.__init__ (sage/rings/rational.c:5781)
  File "rational.pyx", line 521, in sage.rings.rational.Rational.__set_value (sage/rings/rational.c:7052)
TypeError: Unable to coerce 0 (<class 'sage.algebras.free_algebra_element.FreeAlgebraElement'>) to Rational

Thanks!

nthiery commented 14 years ago
comment:32

I started playing with ideals. Currently, one creates an ideal I, and then when one calls I.std() or I.twostd() to create a new left or twosided ideal, and actually compute the Groebner basis. What about the following variants:

(A) Take the side decision at the time the ideal is created:

    sage: I = W.ideal([...], side=...)

(to be documented in W.ideal?).

With that, I would be well defined as an ideal; otherwise it is more a ``collection of polynomials'' and the name is misleading.

(B) About computing the Grobner basis:

    sage: I.groebner_basis()

or:

    sage: I.std() 

would compute the groebner basis, store it for later calculations, and return it as a list of polynomials rather than a new ideal.

I haven't actually played with ideals in Sage; so maybe point (B) is just how things are with commutative ideals in Sage, and consistency should take precedence.

Cheers, Nicolas

simon-king-jena commented 14 years ago
comment:33

Replying to @nthiery:

I started playing with ideals. Currently, one creates an ideal I, and then when one calls I.std() or I.twostd() to create a new left or twosided ideal, and actually compute the Groebner basis. What about the following variants:

Currently, if R is a commutative ring and L is a list of elements of R, one may use the shorthand notation I = R*L or I = L*R to create an ideal. It seems natural to me to extend this to the non-commutative case: R*L for left ideal, L*R for right ideal, and R*L*R for two-sided ideal.

How to implement it? Well, on could have a base class for ideals over non-commutative rings (let's call it NCIdeal), and derive from it NCIdeal_left, NCIdeal_right, NCIdeal_twodsided.

Then, one has to modify the multiplication method for rings so that sidedness is taken care of (there is a method ideal_class(), that probably needs to accept an optional argument "side"). And of course, the one-sided ideal classes need a multiplication method as well.

And then, NCIdeal_twodsided.groebner_basis() would yield a two-sided Gröbner basis, while NCIdeal_left/right.groebner_basis() would only yield a one-sided Gröbner basis, of course unless a two-sided Gröbner basis is requested by using an optional argument.

nthiery commented 14 years ago
comment:34

Replying to @nthiery:

I started playing with ideals. Currently, one creates an ideal I, and then when one calls I.std() or I.twostd() to create a new left or twosided ideal, and actually compute the Groebner basis.

By the way: right ideals are not yet handled yet, right? Would it be a lot of work? It's just that the ideals I am currently playing with are right ideals, and I keep mixing myself up when playing with the "dualized" version I had to write in Sage.

nthiery commented 14 years ago
comment:35

Hi Simon!

Replying to @simon-king-jena:

Replying to @nthiery:

I started playing with ideals. Currently, one creates an ideal I, and then when one calls I.std() or I.twostd() to create a new left or twosided ideal, and actually compute the Groebner basis. What about the following variants:

Currently, if R is a commutative ring and L is a list of elements of R, one may use the shorthand notation I = R*L or I = L*R to create an ideal. It seems natural to me to extend this to the non-commutative case: R*L for left ideal, L*R for right ideal, and R*L*R for two-sided ideal.

+1 for the implementation proposal!

I also like that shorthand syntax for interactive usage. However, in code, I prefer using something more explicit like R.ideal(L,side=...). Besides, having an R.ideal method also provides with:

Cheers, Nicolas

simon-king-jena commented 13 years ago
comment:36

Apply plural-wrapper-2010-10-01.patch

(to the patchbot)

If I understand correctly, this patch is the only one, right? So, it would be a good thing to try whether it needs to be rebased again.

Currently, I have a high motivation to have the noncommutative stuff (including letterplace!) in libsingular. So, I hope the work on this ticket and on #7797 can be resumed.

simon-king-jena commented 13 years ago

Work Issues: Implement is_integral_domain and probably other small stuff