Error realize()-ing a Harnack curve defined via its dual subdivision
Posted: 06 Aug 2022, 23:27
Dear all,
I tried to define a patchwork using its dual subdivision, as shown at the end of the tutorial https://polymake.org/doku.php/user_guid ... /patchwork .
My code is as follows :
Including the last line always results in the following error message :
I am using polymake version 4.1 on Windows Subsystem Linux - however, I get the same error message when I try running those same commands in Polymake in a Box https://polymake.org/doku.php/boxdoc .
What causes this problem ? Is it because there is no canonical embedding of the hypersurface in the real/projective space ?
Thank you very much for your time !
Best regards,
Charles Arnal
P.S. :
A short side question : I think I have noticed that when defining a hypersurface as above with a dual subdivision, the POINTS of the triangulation need to be its vertices (in other words, there cannot be points in POINTS that are e.g. in the interior of a maximal cell) - otherwise, some signs in SIGNS are ignored.
This can be seen in the following code :
Only the first 3 signs seem to matter (I guess they are re-mapped to the vertices of the triangulation, and the last 3 are ignored). Michael Joswig had told me in a previous conversation that when defining a hypersurface with COEFFICIENTS and MONOMIALS, the MONOMIALS need to not be redundant - I assume the same principle applies here ?
I tried to define a patchwork using its dual subdivision, as shown at the end of the tutorial https://polymake.org/doku.php/user_guid ... /patchwork .
My code is as follows :
Code: Select all
my $dual_sub = new fan::SubdivisionOfPoints(POINTS=>[[1, 2, 0, 0],[1, 1, 0, 1],[1, 0, 0, 2],[1, 1, 1, 0],[1, 0, 1, 1],[1, 0, 2, 0]],MAXIMAL_CELLS=>[[3, 4, 5],[1, 3, 4],[1, 2, 4],[0, 1, 3]]);
my $h2 = new Hypersurface<Min>(DUAL_SUBDIVISION=>$dual_sub);
my $h2_pw = $h2->PATCHWORK(SIGNS=>[0, 1, 0, 1, 1, 0]);
my $h2_pw_r = $h2_pw->realize();
As a comparison, the dual subdivision I am defining above and the associated signs are those of a Harnack curve of degree 2 (unless I have made a very dumb mistake), as can be checked with the following code (that runs without any problem) :polymake: ERROR: "/usr/local/share/polymake/perllib/Polymake/Core/BigObjectType.pm", line 1017: Can't locate object method "code" via package "0" (perhaps you forgot to load "0"?)
Code: Select all
my $h1 = harnack_curve(2);
my $h1_pw1 = $h1->PATCHWORK;
print $h1->DUAL_SUBDIVISION->POINTS;
print "\n";
print $h1->DUAL_SUBDIVISION->MAXIMAL_CELLS;
print "\n";
print $h1_pw1->SIGNS;
print "\n";
my $h1_pw_r = $h1_pw1->realize();
What causes this problem ? Is it because there is no canonical embedding of the hypersurface in the real/projective space ?
Thank you very much for your time !
Best regards,
Charles Arnal
P.S. :
A short side question : I think I have noticed that when defining a hypersurface as above with a dual subdivision, the POINTS of the triangulation need to be its vertices (in other words, there cannot be points in POINTS that are e.g. in the interior of a maximal cell) - otherwise, some signs in SIGNS are ignored.
This can be seen in the following code :
Code: Select all
my $dual_sub = new fan::SubdivisionOfPoints(POINTS=>[[1, 2, 0, 0],[1, 1, 0, 1],[1, 0, 0, 2],[1, 1, 1, 0],[1, 0, 1, 1],[1, 0, 2, 0]],
MAXIMAL_CELLS=>[[0,2,5]]);
my $h2 = new Hypersurface<Min>(DUAL_SUBDIVISION=>$dual_sub);
my $h2_pw = $h2->PATCHWORK(SIGNS=>[0, 0, 0, 0, 0, 0]);