Page 1 of 1

Polymake runs out of rules

Posted: 02 Dec 2025, 14:24
by MatthewMaat
I encountered an error using polymake online at https://polymake.org/shell/, which says 'no more rules available'. I am not sure what this means. What should I do to avoid this error?

A minimal working example is shown below:

Code: Select all

topaz > $s = new SimplicialComplex(FACETS=>[[0, 2, 4, 6, 8], [1, 2, 4, 6, 8], [0, 3, 4, 6, 8], [0, 2, 5, 6, 8], [0, 2, 4, 7, 8], [0, 2, 4, 6, 9], [1, 3, 4, 6, 8], [0, 3, 5, 6, 8], [0, 2, 5, 7, 8], [0, 2, 4, 7, 9], [1, 2, 4, 6, 9], [1, 3, 5, 6, 8], [0, 3, 5, 7, 8], [0, 2, 5, 7, 9], [1, 2, 4, 7, 9], [1, 3, 4, 6, 9], [1, 2, 6, 8, 10], [0, 3, 4, 8, 10], [0, 2, 5, 6, 10], [2, 4, 7, 8, 10], [0, 4, 6, 9, 10], [1, 2, 4, 8, 10], [0, 3, 4, 6, 10], [2, 5, 6, 8, 10], [0, 4, 7, 8, 10], [0, 2, 6, 9, 10], [1, 3, 4, 8, 10], [0, 3, 5, 6, 10], [2, 5, 7, 8, 10], [0, 4, 7, 9, 10], [1, 2, 6, 9, 10], [1, 3, 5, 8, 10], [0, 3, 5, 7, 10], [2, 5, 7, 9, 10], [1, 4, 7, 9, 10], [1, 3, 6, 9, 10], [1, 3, 5, 6, 10], [3, 5, 7, 8, 10], [0, 5, 7, 9, 10], [1, 2, 7, 9, 10], [1, 3, 4, 9, 10], [1, 5, 6, 8, 10], [0, 3, 7, 8, 10], [0, 2, 5, 9, 10], [1, 2, 4, 7, 10], [3, 4, 6, 9, 10]]); topaz > print $s->NON_REALIZABLE; polymake: WARNING: rule GRASS_PLUCKER_CERTIFICATE : FACETS, ORIENTATION failed: std::bad_alloc at /opt/414/share/polymake/apps/topaz/rules/ grass_plucker.rules line 134. polymake: ERROR: no more rules available to compute 'NON_REALIZABLE'

Re: Polymake runs out of rules

Posted: 02 Dec 2025, 15:13
by blorenz
There are two things happening here:

First, polymake tries to compute GRASS_PLUCKER_CERTIFICATE (which is required to compute NON_REALIZABLE) but the code fails with std::bad_alloc. This usually indicates that the program ran out of available memory, very likely on the polymake web-shell which is very resource limited.

Second, when an algorithm fails polymake usually tries to find an alternative way to compute a property, but in this case there is no other algorithm available to compute it, hence that error message. A rule is basically a specification for polymake which algorithm can be used to compute some properties from a different set of properties.

I would suggest trying it on your own computer or some compute server. I can't really tell what sizes if inputs are feasible for this algorithm, the corresponding paper is linked in the documentation for the grass_plucker function:
https://polymake.org/doku.php/documenta ... ss_plucker

Re: Polymake runs out of rules

Posted: 02 Dec 2025, 15:15
by joswig
Well, this particular function tries to find certificates for (non-)realizability. The algorithms has been developed and implemented by Julian Pfeifle :https://arxiv.org/abs/2012.11500

By the end of the day, despite being super-successful in many cases, it is a heuristic. This is what happens (with polymake 4.15) on my computer:

Code: Select all

topaz > print $s->NON_REALIZABLE; s(): Computation aborted after 10000000 trees. This value can changed with the option abort_after. false
So the heuristic fails. Since there is no other way known to polymake to compute this, depending on your setup, you might also get the information that it cannot find another "rule". These rules are algorithms in polymake to solve specific subtasks. If you see this, it means: polymake ran out of its options.

What should be changed in polymake's code: if that rule fails, then REALIZABLE should be set to undef rather than false.

Re: Polymake runs out of rules

Posted: 02 Dec 2025, 16:51
by MatthewMaat
Thanks for the help!

Re: Polymake runs out of rules

Posted: 02 Dec 2025, 19:50
by gawrilow
What should be changed in polymake's code: if that rule fails, then REALIZABLE should be set to undef rather than false.
By a happy coincidence, it's already done in the refactoring branch.