diff --git a/src/sage/geometry/polyhedron/backend_polymake.py b/src/sage/geometry/polyhedron/backend_polymake.py index 1bd5d57a5c7..30bd5995153 100644 --- a/src/sage/geometry/polyhedron/backend_polymake.py +++ b/src/sage/geometry/polyhedron/backend_polymake.py @@ -306,7 +306,19 @@ def _init_from_Hrepresentation(self, ieqs, eqns, minimize=True, verbose=False): from sage.interfaces.polymake import polymake if ieqs is None: ieqs = [] if eqns is None: eqns = [] + def filter_out_all_zero(list): + if any(all(self._is_zero(x) for x in v) for v in list): + return [ v for v in list if not all(self._is_zero(x) for x in v) ] + else: + return list + # Polymake 3.0r2 and 3.1 crash with a segfault for a test case + # using QuadraticExtension, when some all-zero inequalities are input. + # https://forum.polymake.org/viewtopic.php?f=8&t=547 + # Filter them out. + ieqs = filter_out_all_zero(ieqs) if not ieqs: + # Put in one trivial (all-zero) inequality. This is so that + # the ambient dimension is set correctly. ieqs.append([0] + [0]*self.ambient_dim()) polymake_field = polymake(self.base_ring().fraction_field()) p = polymake.new_object("Polytope<{}>".format(polymake_field),