Macaulay2 / Macaulay2/M2

basis strategy and order for toric varieties

Open
#3,577 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Engine NormalToricVarieties
Dominant language
Macaulay2
Stars
435
Forks
297
Avg merge
4d 20h
Merged PRs (30d)
11

Description

When I added rawHilbertBasis from Normaliz I also changed latticePoints Polyhedron to use it instead, which is in turn used by monomials ToricDivisor. This improved the speed greatly because Normaliz parallelizes this computation.

I realized this means we can also significantly improve multigraded basis in this case. This is kind of already implemented in basis' in the Truncations package without any toric assumptions.

One problem is that the order of monomials found this way may be different than the engine algorithm. @mikestillman is this a problem? I recall running into this https://github.com/Macaulay2/M2/issues/2810 as well.

Also, should this be implemented in the top level, or is it worth changing basis0_multi_graded in matrix-kbasis.cpp to directly use Normaliz via rawHilbertBasis?

cc: @jkyang92

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Compare basis' in the Truncations package with latticePoints Polyhedron, rawHilbertBasis, and monomials ToricDivisor. Then inspect basis0_multi_graded in matrix-kbasis.cpp and issue #2810 to determine whether Normaliz should be used and how monomial ordering affects the result. Done means resolving the implementation location and ordering question.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.