A Hilbert function hint cannot be given to a resolution, and there is no first-degree homogeneity test
Nobody has claimed this yet.
- Dominant language
- Macaulay2
- Stars
- 435
- Forks
- 297
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 11
Description
This issue was triaged from bugs/dan/1-front-end-tests, one of the 857 files removed from the pre-GitHub bugs/ tree by d2c8d27826 and catalogued in #36. The commentary below was written by Claude (Claude Opus 5, via Claude Code), not by @d-torrance, whose account posted it -- please weigh it accordingly.
The original file, verbatim (51 lines)
these tests have been installed, except:
for res we have never provided a Hilbert function hint and I don't know how to do it
IM2_GB_set_hilbert_function seems to be only for gb's, not for res's
how do I tell whether a matrix is homogeneous with respect to just the first component of the degree?
=============================================================================
In-Reply-To: <200606281441.k5SEf4Y01872@u00.math.uiuc.edu>
From: Michael Stillman <mike@math.cornell.edu>
Subject: Re: good morning!
Date: Wed, 28 Jun 2006 11:05:05 -0400
To: dan@math.uiuc.edu
>
> It's correct (!), as the ^0 is a slick way of transforming the
> string into a
> net. The test is to take the value of the string and check for
> equality with
> the original thing:
>
That's right, I remember that one!
If you get time, could you add the following tests to the front end?
(for res, this might mean using a different algorithm instead, as in
res.m2) (These will improve behavior for multigraded rings, and
towers of rings).
Needed for using Hilbert functions to aid in Groebner basis computation:
Ring is poly ring over a field (or skew commutative, or quotient
ring of such, or both)
Ring is singly graded, every variable is positive
Ring is homogeneous in this grading
Matrix is homogeneous in this grading
Needed to compute resolutions, (algorithms 0,1,2,3):
Ring is poly ring over a field (or skew commutative, or quotient
ring of such, or both)
Ring is graded, first degree of every variable is positive
Ring is homogeneous in this grading (actually, only need graded
with respect to the first degree)
Matrix is homogeneous in this grading (same note as previous line)
Additional requirements for resolution algorithm 3 (which uses
hilbert function):
Ring is singly graded
I might try to relax the singly graded constraint on these. But the
positivity for every variable will still be required...
Where it stands today
Mike's list of tests is met. Dan's two exceptions are not, and this issue covers both.
The predicates Mike wanted now exist
The June 2006 conditions for a Hilbert-aided Gröbner basis are canUseHilbertHint (gb.m2:260-271),
item for item: degreeLength R === 1, polynomial ring or quotient of one, over a field, commutative or
skew, every variable's first degree positive, matrix homogeneous. Landed in 6e72d40d14 (2025-07-29),
renamed in ef88222289 — nineteen years on.
Exception (a): no Hilbert hint for res
Still literally as Dan describes. options gb has Hilbert; options res does not. comp-res.hpp and
comp-res.cpp contain no hilbert at all, and set_hilbert_function exists only on GB classes.
Demonstrated by installing a deliberately wrong hint, poincare J = 1:
gens gb Jbecomes the zero map — sogbused it,betti res Jis unchanged from the correct resolution — soresignored it.
res is now a synonym for Complexes' freeResolution, and the front-end store exists
(poincare M = p, hilbert.m2:110) with no resolution consumer.
Exception (b): no way to ask about one degree component
isHomogeneous has 12 methods and none takes more than one argument, so "homogeneous with respect to
just the first component of the degree" is not expressible. Complexes/FreeResolution.m2:215-380
substitutes heft R =!= null, which is weaker, plus full multigraded isHomogeneous, and does not
enforce Mike's "algorithm 3 additionally singly graded".
Related
#4487 is adjacent to (b); #3937 is why canUseHilbertHint was hardened.
open · disposition issue · source of truth: bug-triage/catalog.tsv
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with comp-res.hpp and comp-res.cpp, then inspect Complexes/FreeResolution.m2 and hilbert.m2 around the existing poincare store and resolution checks. Compare the current canUseHilbertHint and isHomogeneous APIs with the stated resolution requirements. Done means a resolution can consume a Hilbert hint and the frontend can test homogeneity using only the first degree component.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100