@@ -249,8 +249,7 @@ from sage.structure.sequence import Sequence
249
249
from sage.rings.fraction_field import FractionField
250
250
from sage.rings.all import RealField
251
251
252
- from sage.interfaces.singular import singular as singular_default, is_SingularElement, SingularElement
253
- from sage.interfaces.macaulay2 import macaulay2 as macaulay2_default, is_Macaulay2Element
252
+ import sage.interfaces.abc
254
253
255
254
from sage.misc.misc_c import prod as mul
256
255
from sage.misc.sage_eval import sage_eval
@@ -969,9 +968,9 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
969
968
gens_map = dict (zip (Q.variable_names(),self .gens()[:Q.ngens()]))
970
969
return eval (str (element),gens_map)
971
970
972
- if isinstance (element, (SingularElement, cypari2.gen.Gen)):
971
+ if isinstance (element, (sage.interfaces.abc. SingularElement, cypari2.gen.Gen)):
973
972
element = str (element)
974
- elif is_Macaulay2Element (element):
973
+ elif isinstance (element, sage.interfaces.abc.Macaulay2Element ):
975
974
element = element.external_string()
976
975
977
976
if isinstance (element, str ):
@@ -1106,10 +1105,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1106
1105
if gens.ring() is self :
1107
1106
return gens
1108
1107
gens = gens.gens()
1109
- if is_SingularElement(gens):
1110
- gens = list (gens)
1111
- coerce = True
1112
- elif is_Macaulay2Element(gens):
1108
+ if isinstance (gens, (sage.interfaces.abc.SingularElement, sage.interfaces.abc.Macaulay2Element)):
1113
1109
gens = list (gens)
1114
1110
coerce = True
1115
1111
if not isinstance (gens, (list , tuple )):
@@ -1118,7 +1114,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1118
1114
gens = [self (x) for x in gens] # this will even coerce from singular ideals correctly!
1119
1115
return MPolynomialIdeal(self , gens, coerce = False )
1120
1116
1121
- def _macaulay2_ (self , macaulay2 = macaulay2_default ):
1117
+ def _macaulay2_ (self , macaulay2 = None ):
1122
1118
"""
1123
1119
Create an M2 representation of this polynomial ring if
1124
1120
Macaulay2 is installed.
@@ -1147,6 +1143,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1147
1143
--[x...y]
1148
1144
17
1149
1145
"""
1146
+ if macaulay2 is None :
1147
+ from sage.interfaces.macaulay2 import macaulay2
1150
1148
try :
1151
1149
R = self .__macaulay2
1152
1150
if R is None or not (R.parent() is macaulay2):
@@ -1165,18 +1163,18 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1165
1163
'sage...[symbol x0,symbol x1, MonomialSize=>16, MonomialOrder=>GLex]'
1166
1164
"""
1167
1165
if macaulay2 is None :
1168
- macaulay2 = macaulay2_default
1166
+ from sage.interfaces. macaulay2 import macaulay2
1169
1167
return macaulay2._macaulay2_input_ring(self .base_ring(), self .gens(),
1170
1168
self .term_order().macaulay2_str())
1171
1169
1172
- def _singular_ (self , singular = singular_default ):
1170
+ def _singular_ (self , singular = None ):
1173
1171
"""
1174
1172
Create a SINGULAR (as in the computer algebra system)
1175
1173
representation of this polynomial ring. The result is cached.
1176
1174
1177
1175
INPUT:
1178
1176
1179
- - ``singular`` - SINGULAR interpreter (default: ``singular_default ``)
1177
+ - ``singular`` - SINGULAR interpreter (default: ``sage.interfaces.singular.singular ``)
1180
1178
1181
1179
EXAMPLES::
1182
1180
@@ -1222,6 +1220,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1222
1220
// : names x
1223
1221
// block 2 : ordering C
1224
1222
"""
1223
+ if singular is None :
1224
+ from sage.interfaces.singular import singular
1225
1225
try :
1226
1226
R = self .__singular
1227
1227
if R is None or not (R.parent() is singular):
@@ -1241,15 +1241,15 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1241
1241
except (AttributeError , ValueError ):
1242
1242
return self ._singular_init_(singular)
1243
1243
1244
- def _singular_init_ (self , singular = singular_default ):
1244
+ def _singular_init_ (self , singular = None ):
1245
1245
"""
1246
1246
Create a SINGULAR (as in the computer algebra system)
1247
1247
representation of this polynomial ring. The result is NOT
1248
1248
cached.
1249
1249
1250
1250
INPUT:
1251
1251
1252
- - ``singular`` - SINGULAR interpreter (default: ``singular_default ``)
1252
+ - ``singular`` - SINGULAR interpreter (default: ``sage.interfaces.singular.singular ``)
1253
1253
1254
1254
EXAMPLES::
1255
1255
@@ -1375,6 +1375,9 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
1375
1375
"""
1376
1376
from sage.functions.other import ceil
1377
1377
1378
+ if singular is None :
1379
+ from sage.interfaces.singular import singular
1380
+
1378
1381
if self .ngens()== 1 :
1379
1382
_vars = str (self .gen())
1380
1383
if " *" in _vars: # 1.000...000*x
@@ -5001,14 +5004,14 @@ cdef class MPolynomial_libsingular(MPolynomial):
5001
5004
sig_off()
5002
5005
return new_MP(parent, quo), new_MP(parent, rem)
5003
5006
5004
- def _singular_init_ (self , singular = singular_default ):
5007
+ def _singular_init_ (self , singular = None ):
5005
5008
"""
5006
5009
Return a SINGULAR (as in the computer algebra system) string
5007
5010
representation for this element.
5008
5011
5009
5012
INPUT:
5010
5013
5011
- - ``singular`` - interpreter (default: ``singular_default ``)
5014
+ - ``singular`` - interpreter (default: ``sage.interfaces.singular.singular ``)
5012
5015
5013
5016
EXAMPLES::
5014
5017
@@ -5023,6 +5026,8 @@ cdef class MPolynomial_libsingular(MPolynomial):
5023
5026
sage: P(0)._singular_init_()
5024
5027
'0'
5025
5028
"""
5029
+ if singular is None :
5030
+ from sage.interfaces.singular import singular
5026
5031
self ._parent._singular_().set_ring()
5027
5032
return self ._repr_short_()
5028
5033
@@ -5071,7 +5076,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
5071
5076
5072
5077
return new_MP(self ._parent, p_Minus_mm_Mult_qq(p_Copy(self ._poly, r), m._poly, q._poly, r))
5073
5078
5074
- def _macaulay2_ (self , macaulay2 = macaulay2_default ):
5079
+ def _macaulay2_ (self , macaulay2 = None ):
5075
5080
"""
5076
5081
Return a Macaulay2 element corresponding to this polynomial.
5077
5082
@@ -5110,6 +5115,8 @@ cdef class MPolynomial_libsingular(MPolynomial):
5110
5115
sage: macaulay2(R('4')).ring()._operator('===', R) # optional - macaulay2
5111
5116
true
5112
5117
"""
5118
+ if macaulay2 is None :
5119
+ from sage.interfaces.macaulay2 import macaulay2
5113
5120
m2_parent = macaulay2(self .parent())
5114
5121
macaulay2.use(m2_parent)
5115
5122
return macaulay2(' substitute(%s ,%s )' % (repr (self ), m2_parent._name))
0 commit comments