from polybori.PyPolyBoRi import Polynomial, gauss_on_polys from polybori.nf import symmGB_F2_python from polybori.interpolate import variety_lex_leading_terms, nf_lex_points def dense_system(I): I = (Polynomial(p) for p in I) I = (p for p in I if not p.is_zero()) for p in I: d = p.deg() if p.deg() == 1: continue else: try: if len(p) > 2 ** d + 5: return True except OverflowError: return True return False def gauss_on_linear(I): I = (Polynomial(p) for p in I) linear = [] non_linear = [] for p in I: if p.is_zero(): continue if p.deg() <= 1: linear.append(p) else: non_linear.append(p) if len(linear) == 0: return non_linear linear = list(gauss_on_polys(linear)) return linear + non_linear