In [1]: declare_ring([Block("x",3),Block("y",3)],globals()) Out[1]: <polybori.dynamic.PyPolyBoRi.Ring object at 0x1848b10> In [2]: change_ordering(block_dp_asc) In [3]: for b in block_start_hints: ...: append_ring_block(b) ...: ...: In [4]: G=[x(0)*x(2)*y(0)*y(1) + y(1)*y(2) + y(1), ...: x(1)*x(2)*y(0)*y(2) + x(0)*x(1)*y(2) + y(1), ...: x(0)*x(1)*x(2)*y(1) + x(1) + y(1)*y(2)] In [5]: H=groebner_basis(G) In [6]: H Out[6]: [x(0)*y(0)*y(1) + x(0)*y(1) + y(0)*y(1) + y(1), x(1) + y(1), x(2)*y(1) + x(0)*y(1) + y(1), y(1)*y(2) + y(1)] In [7]: [p for p in H if p.set().navigation().value()>=y(0).index()] Out[7]: [y(1)*y(2) + y(1)]
For special cases elimination (depending on the formulation of the equations) elimination of (auxiliary) variables can be done much faster as can be seen in .