Opened 11 years ago

Closed 4 years ago

# Hilbert series, Hilbert functions of a given ideal

Reported by: Owned by: dangtuanhiep malb trivial sage-duplicate/invalid/wontfix commutative algebra sd34 burcin, SimonKing Hiep Dang, Burcin Erocal Simon King N/A

### Description

This patch adds the methods Hilbert series and Hilbert functions to multivariate polynomial ideals.

### comment:1 follow-up: ↓ 2 Changed 11 years ago by malb

```----------------------------------------------------------------------
| Sage Version 4.7.1, Release Date: 2011-08-11                       |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
sage: K.<w> = GF(27)
sage: P.<x, y> = PolynomialRing(K, 2, order='lex')
sage: I = Ideal([ x^8 + y + 2, y^6 + x*y^5 + x^2 ])
sage: I.hi
I.hilbert_polynomial  I.hilbert_series
```

### comment:2 in reply to: ↑ 1 Changed 11 years ago by burcin

• Type changed from enhancement to defect

```----------------------------------------------------------------------
| Sage Version 4.7.1, Release Date: 2011-08-11                       |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
sage: K.<w> = GF(27)
sage: P.<x, y> = PolynomialRing(K, 2, order='lex')
sage: I = Ideal([ x^8 + y + 2, y^6 + x*y^5 + x^2 ])
sage: I.hi
I.hilbert_polynomial  I.hilbert_series
```

The return value of the existing function is a fraction field element, not a power series.

```sage: I.hilbert_series()
(-t - 1)/(t - 1)
sage: type(I.hilbert_series())
<type 'sage.rings.fraction_field_element.FractionFieldElement'>
```

Singular cannot represent power series in its interpreter, but we can. :)

### comment:3 Changed 11 years ago by dangtuanhiep

• Authors changed from Hiep Dang to Hiep Dang, Burcin Erocal

### comment:5 follow-up: ↓ 6 Changed 11 years ago by malb

The patch adds a second hilbert_series function instead of the changing the one that exists already. Also, the old one has some advantages over this new one: @require field, more extensive docs, test whether the ideal is homogeneous.

### comment:6 in reply to: ↑ 5 Changed 11 years ago by SimonKing

• Reviewers set to Simon King

Yes. Clearly it is a bad idea to implement another hilbert_series method from scratch. Obviously, if one wants hilber_series to return a power series, then one should modify the existing hilbert_serie method.

Moreover, I think we don't want it to return a power series. Isn't a power series in Sage an object with a finite precision? Hence, while a quotient (i.e., fraction field element) of two polynomials generates all (infinitely many) terms of the Hilbert series, a power series can only provide finitely many terms, isn't it?

So, I am against that change. I could only imagine that one has an optional parameter "as_power_series" (default False). Then, `I.hilber_series()` would return the full Hilbert series (namely as a quotient of two polynomials), while `I.hilbert_series(as_power_series=True)` would return a (truncated) power series.

### comment:7 Changed 11 years ago by SimonKing

Sorry for the misprints in my previous post. "hilber_series" and "hilbert_serie" should have been "hilbert_series"...

### comment:8 Changed 9 years ago by jdemeyer

• Milestone changed from sage-5.11 to sage-5.12

### comment:9 Changed 8 years ago by vbraun_spam

• Milestone changed from sage-6.1 to sage-6.2

### comment:10 Changed 8 years ago by vbraun_spam

• Milestone changed from sage-6.2 to sage-6.3

### comment:11 Changed 8 years ago by vbraun_spam

• Milestone changed from sage-6.3 to sage-6.4

### comment:12 Changed 4 years ago by chapoton

• Milestone changed from sage-6.4 to sage-duplicate/invalid/wontfix
• Status changed from new to needs_review

Let us close this old one. Conversion is easy:

```sage: t = polygen(QQ,'t')
sage: QQ[['t']](1/(1-t))
1 + t + t^2 + t^3 + t^4 + t^5 + t^6 + t^7 + t^8 + t^9 + t^10 + t^11 + t^12 + t^13 + t^14 + t^15 + t^16 + t^17 + t^18 + t^19 + O(t^20)
```

### comment:13 Changed 4 years ago by mmezzarobba

• Status changed from needs_review to positive_review

### comment:14 Changed 4 years ago by embray

• Resolution set to worksforme
• Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.