Polymake runs out of rules

Questions and problems about using polymake go here.
MatthewMaat
Posts: 2
Joined: 02 Dec 2025, 14:13

Polymake runs out of rules

Postby MatthewMaat » 02 Dec 2025, 14:24

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'

blorenz
Developer
Posts: 149
Joined: 10 Jan 2011, 17:21

Re: Polymake runs out of rules

Postby blorenz » 02 Dec 2025, 15:13

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

User avatar
joswig
Main Author
Posts: 294
Joined: 24 Dec 2010, 11:10

Re: Polymake runs out of rules

Postby joswig » 02 Dec 2025, 15:15

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.

MatthewMaat
Posts: 2
Joined: 02 Dec 2025, 14:13

Re: Polymake runs out of rules

Postby MatthewMaat » 02 Dec 2025, 16:51

Thanks for the help!

User avatar
gawrilow
Main Author
Posts: 434
Joined: 25 Dec 2010, 17:40

Re: Polymake runs out of rules

Postby gawrilow » 02 Dec 2025, 19:50

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.


Return to “Helpdesk”