#11892: Extend singular_function to non-commutative polynomial rings
-----------------------------+----------------------------------------------
Reporter: SimonKing | Owner: tbd
Type: PLEASE CHANGE | Status: new
Priority: major | Milestone: sage-4.7.2
Component: PLEASE CHANGE | Keywords:
Work_issues: | Upstream: N/A
Reviewer: | Author:
Merged: | Dependencies: #4539
-----------------------------+----------------------------------------------
#4539 provides g-algebras (non-commutative polynomial rings). However,
`sage.libs.singular.function.singular_function` doesn't accept them as
input.
Here is an example that works with usual polynomial rings
{{{
sage: from sage.libs.singular.function import singular_function
sage: P.<x,y,z> = QQ[]
sage: std = singular_function('std')
sage: NF = singular_function('NF')
sage: s_id = singular_function('ideal')
sage: NF(P.2^2,std(s_id(P(0))))
// ** _ is no standard basis
z^2
}}}
The same example fails with a non-commutative polynomial ring:
{{{
sage: NF(H.2^2,std(s_id(H(0))))
// ** _ is no standard basis
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
/mnt/local/king/SAGE/debug/sage-4.7.2.alpha3-prerelease/devel/sage-
main/<ipython console> in <module>()
/mnt/local/king/SAGE/debug/sage-4.7.2.alpha3-prerelease/local/lib/python2.6
/site-packages/sage/libs/singular/function.so in
sage.libs.singular.function.SingularFunction.__call__
(sage/libs/singular/function.cpp:11123)()
...
/mnt/local/king/SAGE/debug/sage-4.7.2.alpha3-prerelease/local/lib/python2.6
/site-packages/sage/libs/singular/function.so in
sage.libs.singular.function.call_function
(sage/libs/singular/function.cpp:12682)()
/mnt/local/king/SAGE/debug/sage-4.7.2.alpha3-prerelease/local/lib/python2.6
/site-packages/sage/libs/singular/function.so in
sage.libs.singular.function.Converter.to_python
(sage/libs/singular/function.cpp:9580)()
/mnt/local/king/SAGE/debug/sage-4.7.2.alpha3-prerelease/local/lib/python2.6
/site-packages/sage/rings/polynomial/multi_polynomial_libsingular.so in
sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular.__init__
(sage/rings/polynomial/multi_polynomial_libsingular.cpp:13943)()
TypeError: Argument 'parent' has incorrect type (expected
sage.rings.polynomial.multi_polynomial_libsingular.MPolynomialRing_libsingular,
got sage.rings.polynomial.plural.NCPolynomialRing_plural)
}}}
Apart from the misleading warning about the ideal otained from std not
being a standard basis, I think the second example should work.
Two approaches: Add `sage.rings.polynomial.plural.NCPolynomialRing_plural`
as a special case to `sage.libs.singular.function`, or make the non-
commutative rings inherit from the commutative (or probably better the
other way around), such that isinstance is happy.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11892>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.