Skip to content

Fixing unexpected behaviour in ToricHigherDirectImages #3884

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: development
Choose a base branch
from

Conversation

sashahbc
Copy link
Contributor

There was unexpected behaviour from the output of HDI, which ultimately came from an incorrect lattice point computation in a polyhedron. I added an internal method for the correct computation idealFromPolyhedron which uses rawHilbertBasis to compute the appropriate lattice points. I also added the example which demonstrated the incorrect behaviour as a test.

The example in question is

X=normalToricVariety({{1,2},{2,3},{1,1},{1,0},{-1,-1},{0,1}}, {{0,1},{1,2},{2,3},{3,4},{4,5},{5,0}});
Y=normalToricVariety({{-1,-1},{1,0},{0,1}},{{0,1},{1,2},{2,0}});
M = matrix {{1,0},{0,1}};
phi = map(Y,X,M);
D={-3,-6,-3,0,0,0};
prune HDI(phi,0,D)
                 2
o6 = (QQ[x ..x ])
          0   2
o6 : QQ[x ..x ]-module, free, degrees {3..4}
         0   2

The source is an interated blowup of PP^2, and this is computing the pushforward of a line bundle via the composition of blowdowns, a birational map. The output turns out to be of rank two, which doesn't make sense---the fibres should generically be rank one. The corrected version appropriately outputs a presentation of the ideal m^3, where m is the blown up point.

o8 = cokernel {3} | x_1  0    0    |
              {3} | -x_2 x_1  0    |
              {3} | 0    -x_2 x_1  |
              {3} | 0    0    -x_2 |
                                                4
o8 : QQ[x ..x ]-module, quotient of (QQ[x ..x ])
         0   2                           0   2

Comment on lines +22 to +23
Authors => {
{Name => "Sasha Zotine",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You seem to have accidentally added some spaces here.

@@ -218,6 +218,13 @@ affineSemigroupGenerators (NormalToricVariety, List) := Matrix => (X, w) -> (
)
)

-- Internal method. computes the "generating lattice points" in a polyhedron via Hilbert bases.
idealFromPolyhedron = method();
idealFromPolyhedron Polyhedron := List => P -> (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the name includes "ideal", I think the output should also include an ideal, no?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants