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]);
```