'Checks if the ideal generated by a Groebner basis is zero-dimensional.
The algorithm checks if the set of monomials not divisible by the
leading monomial of any element of ``F`` is bounded.
References
David A. Cox, John B. Little, Donal O\'Shea. Ideals, Varieties and
Algorithms, 3rd edition, p. 230'

@property
def is_zero_dimensional(self):

    def single_var(monomial):
        return (sum(map(bool, monomial)) == 1)
    exponents = Monomial(([0] * len(self.gens)))
    order = self._options.order
    for poly in self.polys:
        monomial = poly.LM(order=order)
        if single_var(monomial):
            exponents *= monomial
    return all(exponents)
