Opened 12 years ago
Closed 12 years ago
#1793 closed enhancement (fixed)
[with patch, with positive review] Hilbert series, Hilbert polynomial, Laurent series expansion
Reported by: | malb | Owned by: | malb |
---|---|---|---|
Priority: | major | Milestone: | sage-2.10.2 |
Component: | commutative algebra | Keywords: | |
Cc: | was, mabshoff | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | Work issues: | ||
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
The attached bundle implements everything to make the following work:
sage: P.<x11,x12,x13,x14,x21,x22,x23,x24,x31,x32,x33,x34,x41,x42,x43,x44> = PolynomialRing(QQ,order='degrevlex') sage: I = Ideal([ x11^2 + x12*x21 + x13*x31 + x14*x41, x11*x12 + x12*x22 + x13*x32 + x14*x42, x11*x13 + x12*x23 + x13*x33 + x14*x43, x11*x14 + x12*x24 + x13*x34 + x14*x44, x11*x21 + x21*x22 + x23*x31 + x24*x41, x12*x21 + x22^2 + x23*x32 + x24*x42, x13*x21 + x22*x23 + x23*x33 + x24*x43, x14*x21 + x22*x24 + x23*x34 + x24*x44, x11*x31 + x21*x32 + x31*x33 + x34*x41, x12*x31 + x22*x32 + x32*x33 + x34*x42, x13*x31 + x23*x32 + x33^2 + x34*x43, x14*x31 + x24*x32 + x33*x34 + x34*x44, x11*x41 + x21*x42 + x31*x43 + x41*x44, x12*x41 + x22*x42 + x32*x43 + x42*x44, x13*x41 + x23*x42 + x33*x43 + x43*x44, x14*x41 + x24*x42 + x34*x43 + x44^2 ]) sage: S = I.hilbert_series(); S (t^12 - 7*t^11 + 20*t^10 - 28*t^9 + 14*t^8 + 15*t^7 - 20*t^6 + 19*t^5 - 22*t^4 + 7*t^3 + 20*t^2 + 8*t + 1)/(t^8 - 8*t^7 + 28*t^6 - 56*t^5 + 70*t^4 - 56*t^3 + 28*t^2 - 8*t + 1) sage: H = I.hilbert_polynomial(); H 1/180*t^7 + 7/90*t^6 + 293/360*t^5 + 61/36*t^4 + 1553/360*t^3 + 851/180*t^2 + 101/30*t + 1 sage: L.<u> = LaurentSeriesRing(ZZ) sage: L(S) 1 + 16*u + 120*u^2 + 575*u^3 + 2044*u^4 + 5927*u^5 + 14832*u^6 + 33209*u^7 + 68189*u^8 + 130642*u^9 + 236488*u^10 + 408288*u^11 + 677143*u^12 + 1084929*u^13 + 1686896*u^14 + 2554659*u^15 + 3779609*u^16 + 5476772*u^17 + 7789144*u^18 + 10892530*u^19 + O(u^20) sage: [H(n) for n in range(20)] # matches above for n>=5 [1, 16, 120, 574, 2043, 5927, 14832, 33209, 68189, 130642]
However, it needs careful review especially in the LaurentSeries
department because I am not very experienced there.
Attachments (3)
Change History (11)
comment:1 Changed 12 years ago by
comment:2 Changed 12 years ago by
- Cc mabshoff added
- Status changed from new to assigned
mabshoff wrote at #1756:
Singular's Hilbert series has overflow issues in certain situations. Let me digg out some email about a test case and report this to the Singular team.
comment:3 Changed 12 years ago by
- Summary changed from [with patch, needs careful review] Hilbert series, Hilbert polynomial, Laurent series expansion to [with patch, needs review] Hilbert series, Hilbert polynomial, Laurent series expansion
hilbert2.hg
contains the corrections William suggested on IRC and replaces hilbert.hg
.
comment:4 Changed 12 years ago by
- Summary changed from [with patch, needs review] Hilbert series, Hilbert polynomial, Laurent series expansion to [with patch, with partial positive review] Hilbert series, Hilbert polynomial, Laurent series expansion
The patches from hilbery2.hg with ids a692e0df3534, 0b92c1071492, 6f3a99024ee7 should be applied.
I didn't look at the other patches.
comment:5 Changed 12 years ago by
- Summary changed from [with patch, with partial positive review] Hilbert series, Hilbert polynomial, Laurent series expansion to Hilbert series, Hilbert polynomial, Laurent series expansion
Because the bundle contained many irrelevant patches I tried to provide clean patches instead and deleted every copy of my patches on the way (and all attachments to avoid confusion for the release maintainer). Me stupid. I'll provide new patches as soon as I have re-implemented the functionality.
Changed 12 years ago by
Changed 12 years ago by
comment:6 Changed 12 years ago by
- Summary changed from Hilbert series, Hilbert polynomial, Laurent series expansion to [with patch, needs review] Hilbert series, Hilbert polynomial, Laurent series expansion
The attached files trac_1793_hilbert.patch
and trac_1793_laurent.patch
re-implement the desired functionality and need review.
comment:7 Changed 12 years ago by
- Summary changed from [with patch, needs review] Hilbert series, Hilbert polynomial, Laurent series expansion to [with patch, with positive review] Hilbert series, Hilbert polynomial, Laurent series expansion
I say apply both patches.
I think that the Laurent series patch touches coercion code that will be completely rewritten soon, so I'm not worried that it's not particularily general.
There is an unclear comment in the hilbert_polynomial docstring. The comment could be removed. From IRC:
ncalexan: malb: let's took 1793. [3:12pm] ncalexan: The docstring to hilbert_polynomial says, ' This $d$ is called the index of regularity of [3:12pm] ncalexan: 1116 $I$. ' [3:12pm] ncalexan: Which $d$? The minimal one? [3:13pm] malb: yes [3:13pm] malb: for all but finitely many positive integers $d$ [3:14pm] malb: that encodes minimal for me? [3:15pm] ncalexan: malb: that is unclear to me. Is there a function to return the index of regularity? [3:15pm] malb: no [3:15pm] ncalexan: If not, I say drop the remark. Or clarify it. Why is it there? [3:15pm] ncalexan: (The remark about $d$ being the index) [3:15pm] malb: because there should be such a function [3:15pm] malb: but I can drop it [3:16pm] ncalexan: malb: is that easy to determine? 'cuz it would be useful :)
comment:8 Changed 12 years ago by
- Resolution set to fixed
- Status changed from assigned to closed
Merged all three patches in Sage 2.10.2.alpha0
A relevant [sage-support] thread is here
http://groups.google.com/group/sage-support/browse_thread/thread/db22a8fa713b8da2
Also, the bundle contains some old patches as well, if that presents a problem, I'll provide clean patches instead.