Sorry for the delay. While trying to answer your question we found some inconsistencies concerning trivial or empty fans. But now everything works like it should. Those bugfixes are already in the polymake-beta which you can download via github.Hm, if I may highjack this thread: if I want to create a fan consisting solely out of the lineality space, what would be the prefered way?
a) a fan consisting of a lineality space and the empty cone as maximal cone
b) a fan consisting of a lineality space and the origin as maximal cone
Simon chose the first option in his extention, but both would make sense to me, so I just wanted to be sure.
But back to your questions. As of today you should choose option a). The logic is that every cone is non-empty (because it contains the origin). Moreover the RAYS property should only contain proper rays. Hence adding a maximal cone (or input cone) which is empty, corresponds to the origin (maybe plus lineality).
consider the following three examples:
Code: Select all
fan > $f = new PolyhedralFan(INPUT_RAYS=>[], INPUT_CONES=>[[]]);
fan > $g = new PolyhedralFan(INPUT_RAYS=>[], INPUT_LINEALITY=>unit_matrix(4), INPUT_CONES=>[[]]);
fan > $h = new PolyhedralFan(INPUT_RAYS=>[], INPUT_CONES=>[]);
The last example $h is is the empty fan, which contains nothing. Note that adding some lineality here does not change the fan.
You may add FAN_AMBIENT_DIM to embed the fans into some higher dimensional space (if the ambient dimension is not already clear from the lineality or input rays)
With the newest beta version juergens example should work without any warnings.