1+ # sage.doctest: optional - sage.libs.singular
12r"""
23Graded free resolutions
34
910
1011 sage: S.<x,y,z,w> = PolynomialRing(QQ)
1112 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
12- sage: r = I.graded_free_resolution(algorithm='minimal') # optional - sage.libs.singular
13- sage: r # optional - sage.libs.singular
13+ sage: r = I.graded_free_resolution(algorithm='minimal')
14+ sage: r
1415 S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
15- sage: I.graded_free_resolution(algorithm='shreyer') # optional - sage.libs.singular
16+ sage: I.graded_free_resolution(algorithm='shreyer')
1617 S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
17- sage: I.graded_free_resolution(algorithm='standard') # optional - sage.libs.singular
18+ sage: I.graded_free_resolution(algorithm='standard')
1819 S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
19- sage: I.graded_free_resolution(algorithm='heuristic') # optional - sage.libs.singular
20+ sage: I.graded_free_resolution(algorithm='heuristic')
2021 S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
2122
2223::
2324
24- sage: d = r.differential(2) # optional - sage.libs.singular
25- sage: d # optional - sage.libs.singular
25+ sage: d = r.differential(2)
26+ sage: d
2627 Free module morphism defined as left-multiplication by the matrix
2728 [ y x]
2829 [-z -y]
3132 Multivariate Polynomial Ring in x, y, z, w over Rational Field
3233 Codomain: Ambient free module of rank 3 over the integral domain
3334 Multivariate Polynomial Ring in x, y, z, w over Rational Field
34- sage: d.image() # optional - sage.libs.singular
35+ sage: d.image()
3536 Submodule of Ambient free module of rank 3 over the integral domain
3637 Multivariate Polynomial Ring in x, y, z, w over Rational Field
3738 Generated by the rows of the matrix:
3839 [ y -z w]
3940 [ x -y z]
40- sage: m = d.image() # optional - sage.libs.singular
41- sage: m.graded_free_resolution(shifts=(2,2,2)) # optional - sage.libs.singular
41+ sage: m = d.image()
42+ sage: m.graded_free_resolution(shifts=(2,2,2))
4243 S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
4344
4445An example of multigraded resolution from Example 9.1 of [MilStu2005]_::
4546
4647 sage: R.<s,t> = QQ[]
4748 sage: S.<a,b,c,d> = QQ[]
4849 sage: phi = S.hom([s, s*t, s*t^2, s*t^3])
49- sage: I = phi.kernel(); I # optional - sage.libs.singular
50+ sage: I = phi.kernel(); I
5051 Ideal (c^2 - b*d, b*c - a*d, b^2 - a*c) of
5152 Multivariate Polynomial Ring in a, b, c, d over Rational Field
52- sage: P3 = ProjectiveSpace(S) # optional - sage.libs.singular
53- sage: C = P3.subscheme(I) # twisted cubic curve # optional - sage.libs.singular
54- sage: r = I.graded_free_resolution(degrees=[(1,0), (1,1), (1,2), (1,3)]) # optional - sage.libs.singular
55- sage: r # optional - sage.libs.singular
53+ sage: P3 = ProjectiveSpace(S)
54+ sage: C = P3.subscheme(I) # twisted cubic curve
55+ sage: r = I.graded_free_resolution(degrees=[(1,0), (1,1), (1,2), (1,3)])
56+ sage: r
5657 S((0, 0)) <-- S((-2, -4))⊕S((-2, -3))⊕S((-2, -2)) <-- S((-3, -5))⊕S((-3, -4)) <-- 0
57- sage: r.K_polynomial(names='s,t') # optional - sage.libs.singular
58+ sage: r.K_polynomial(names='s,t')
5859 s^3*t^5 + s^3*t^4 - s^2*t^4 - s^2*t^3 - s^2*t^2 + 1
5960
6061AUTHORS:
@@ -114,18 +115,18 @@ def __init__(self, module, degrees=None, shifts=None, name='S', **kwds):
114115
115116 sage: S.<x,y,z,w> = PolynomialRing(QQ)
116117 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
117- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
118- sage: TestSuite(r).run(skip=['_test_pickling']) # optional - sage.libs.singular
118+ sage: r = I.graded_free_resolution()
119+ sage: TestSuite(r).run(skip=['_test_pickling'])
119120
120121 An overdetermined system over a PID::
121122
122123 sage: from sage.homology.free_resolution import FreeResolution
123124 sage: M = matrix([[x^2, 2*x^2],
124125 ....: [3*x^2, 5*x^2],
125126 ....: [5*x^2, 4*x^2]])
126- sage: res = FreeResolution(M, graded=True); res # optional - sage.libs.singular
127+ sage: res = FreeResolution(M, graded=True); res
127128 S(0)⊕S(0) <-- S(-2)⊕S(-2) <-- 0
128- sage: res._res_shifts # optional - sage.libs.singular
129+ sage: res._res_shifts
129130 [[2, 2]]
130131 """
131132 super ().__init__ (module , name = name , ** kwds )
@@ -167,18 +168,18 @@ def _repr_module(self, i):
167168
168169 sage: S.<x,y,z,w> = PolynomialRing(QQ)
169170 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
170- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
171- sage: r._repr_module(0) # optional - sage.libs.singular
171+ sage: r = I.graded_free_resolution()
172+ sage: r._repr_module(0)
172173 'S(0)'
173- sage: r._repr_module(1) # optional - sage.libs.singular
174+ sage: r._repr_module(1)
174175 'S(-2)⊕S(-2)⊕S(-2)'
175- sage: r._repr_module(2) # optional - sage.libs.singular
176+ sage: r._repr_module(2)
176177 'S(-3)⊕S(-3)'
177- sage: r._repr_module(3) # optional - sage.libs.singular
178+ sage: r._repr_module(3)
178179 '0'
179180
180- sage: r = I.graded_free_resolution(shifts=[-1]) # optional - sage.libs.singular
181- sage: r._repr_module(0) # optional - sage.libs.singular
181+ sage: r = I.graded_free_resolution(shifts=[-1])
182+ sage: r._repr_module(0)
182183 'S(1)'
183184 """
184185 self ._maps # to set _res_shifts
@@ -204,14 +205,14 @@ def shifts(self, i):
204205
205206 sage: S.<x,y,z,w> = PolynomialRing(QQ)
206207 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
207- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
208- sage: r.shifts(0) # optional - sage.libs.singular
208+ sage: r = I.graded_free_resolution()
209+ sage: r.shifts(0)
209210 [0]
210- sage: r.shifts(1) # optional - sage.libs.singular
211+ sage: r.shifts(1)
211212 [2, 2, 2]
212- sage: r.shifts(2) # optional - sage.libs.singular
213+ sage: r.shifts(2)
213214 [3, 3]
214- sage: r.shifts(3) # optional - sage.libs.singular
215+ sage: r.shifts(3)
215216 []
216217 """
217218 if i < 0 :
@@ -240,18 +241,18 @@ def betti(self, i, a=None):
240241
241242 sage: S.<x,y,z,w> = PolynomialRing(QQ)
242243 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
243- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
244- sage: r.betti(0) # optional - sage.libs.singular
244+ sage: r = I.graded_free_resolution()
245+ sage: r.betti(0)
245246 {0: 1}
246- sage: r.betti(1) # optional - sage.libs.singular
247+ sage: r.betti(1)
247248 {2: 3}
248- sage: r.betti(2) # optional - sage.libs.singular
249+ sage: r.betti(2)
249250 {3: 2}
250- sage: r.betti(1, 0) # optional - sage.libs.singular
251+ sage: r.betti(1, 0)
251252 0
252- sage: r.betti(1, 1) # optional - sage.libs.singular
253+ sage: r.betti(1, 1)
253254 0
254- sage: r.betti(1, 2) # optional - sage.libs.singular
255+ sage: r.betti(1, 2)
255256 3
256257 """
257258 shifts = self .shifts (i )
@@ -282,9 +283,9 @@ def K_polynomial(self, names=None):
282283 EXAMPLES::
283284
284285 sage: S.<x,y,z,w> = PolynomialRing(QQ)
285- sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2]) # optional - sage.libs.singular
286- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
287- sage: r.K_polynomial() # optional - sage.libs.singular
286+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
287+ sage: r = I.graded_free_resolution()
288+ sage: r.K_polynomial()
288289 2*t^3 - 3*t^2 + 1
289290 """
290291 if self ._multigrade :
@@ -325,7 +326,7 @@ class GradedFiniteFreeResolution_free_module(GradedFiniteFreeResolution, FiniteF
325326 sage: R.<x> = QQ[]
326327 sage: M = matrix([[x^3, 3*x^3, 5*x^3],
327328 ....: [0, x, 2*x]])
328- sage: res = FreeResolution(M, graded=True); res # optional - sage.libs.singular
329+ sage: res = FreeResolution(M, graded=True); res
329330 S(0)⊕S(0)⊕S(0) <-- S(-3)⊕S(-1) <-- 0
330331 """
331332 def __init__ (self , module , degrees = None , * args , ** kwds ):
@@ -338,8 +339,8 @@ def __init__(self, module, degrees=None, *args, **kwds):
338339 sage: R.<x> = QQ[]
339340 sage: M = matrix([[x^3, 3*x^3, 5*x^3],
340341 ....: [0, x, 2*x]])
341- sage: res = FreeResolution(M, graded=True) # optional - sage.libs.singular
342- sage: TestSuite(res).run(skip="_test_pickling") # optional - sage.libs.singular
342+ sage: res = FreeResolution(M, graded=True)
343+ sage: TestSuite(res).run(skip="_test_pickling")
343344 """
344345 super ().__init__ (module , degrees = degrees , * args , ** kwds )
345346
@@ -360,23 +361,23 @@ def _maps(self):
360361 sage: R.<x> = QQ[]
361362 sage: M = matrix([[x^3, 3*x^3, 5*x^3],
362363 ....: [0, x, 2*x]])
363- sage: res = FreeResolution(M, graded=True); res # optional - sage.libs.singular
364+ sage: res = FreeResolution(M, graded=True); res
364365 S(0)⊕S(0)⊕S(0) <-- S(-3)⊕S(-1) <-- 0
365- sage: res._maps # optional - sage.libs.singular
366+ sage: res._maps
366367 [
367368 [ x^3 0]
368369 [3*x^3 x]
369370 [5*x^3 2*x]
370371 ]
371- sage: res._res_shifts # optional - sage.libs.singular
372+ sage: res._res_shifts
372373 [[3, 1]]
373374
374375 sage: I = R.ideal([x^4])
375- sage: res = I.graded_free_resolution(shifts=[1], degrees=[2]); res # optional - sage.libs.singular
376+ sage: res = I.graded_free_resolution(shifts=[1], degrees=[2]); res
376377 S(-1) <-- S(-9) <-- 0
377- sage: res._maps # optional - sage.libs.singular
378+ sage: res._maps
378379 [[x^4]]
379- sage: res._res_shifts # optional - sage.libs.singular
380+ sage: res._res_shifts
380381 [[9]]
381382 """
382383 def compute_degree (base , i ):
@@ -468,15 +469,15 @@ class GradedFiniteFreeResolution_singular(GradedFiniteFreeResolution, FiniteFree
468469
469470 sage: S.<x,y,z,w> = PolynomialRing(QQ)
470471 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
471- sage: r = I.graded_free_resolution(); r # optional - sage.libs.singular
472+ sage: r = I.graded_free_resolution(); r
472473 S(0) <-- S(-2)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3) <-- 0
473- sage: len(r) # optional - sage.libs.singular
474+ sage: len(r)
474475 2
475476
476477 sage: I = S.ideal([z^2 - y*w, y*z - x*w, y - x])
477478 sage: I.is_homogeneous()
478479 True
479- sage: r = I.graded_free_resolution(); r # optional - sage.libs.singular
480+ sage: r = I.graded_free_resolution(); r
480481 S(0) <-- S(-1)⊕S(-2)⊕S(-2) <-- S(-3)⊕S(-3)⊕S(-4) <-- S(-5) <-- 0
481482 """
482483 def __init__ (self , module , degrees = None , shifts = None , name = 'S' , algorithm = 'heuristic' , ** kwds ):
@@ -487,8 +488,8 @@ def __init__(self, module, degrees=None, shifts=None, name='S', algorithm='heuri
487488
488489 sage: S.<x,y,z,w> = PolynomialRing(QQ)
489490 sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
490- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
491- sage: TestSuite(r).run(skip=['_test_pickling']) # optional - sage.libs.singular
491+ sage: r = I.graded_free_resolution()
492+ sage: TestSuite(r).run(skip=['_test_pickling'])
492493 """
493494 super ().__init__ (module , degrees = degrees , shifts = shifts , name = name , ** kwds )
494495 self ._algorithm = algorithm
@@ -503,15 +504,15 @@ def _maps(self):
503504 TESTS::
504505
505506 sage: S.<x,y,z,w> = PolynomialRing(QQ)
506- sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2]) # optional - sage.libs.singular
507- sage: r = I.graded_free_resolution() # optional - sage.libs.singular
508- sage: r._maps # optional - sage.libs.singular
507+ sage: I = S.ideal([y*w - z^2, -x*w + y*z, x*z - y^2])
508+ sage: r = I.graded_free_resolution()
509+ sage: r._maps
509510 [
510511 [-y x]
511512 [ z -y]
512513 [z^2 - y*w y*z - x*w y^2 - x*z], [-w z]
513514 ]
514- sage: r._res_shifts # optional - sage.libs.singular
515+ sage: r._res_shifts
515516 [[2, 2, 2], [3, 3]]
516517 """
517518 from sage .libs .singular .singular import si2sa_resolution_graded
0 commit comments