def test_cp_key(): # from cyclic4 with grlex p1 = (((0, 0, 0, 0), 4), [((0, 1, 1, 2), QQ(1, 1)), ((0, 0, 2, 2), QQ(1, 1)), ((0, 0, 0, 4), QQ(-1, 1)), ((0, 0, 0, 0), QQ(-1, 1))], 4) q1 = (((0, 0, 0, 0), 2), [((0, 2, 0, 0), QQ(-1, 1)), ((0, 1, 0, 1), QQ(-1, 1)), ((0, 0, 1, 1), QQ(-1, 1)), ((0, 0, 0, 2), QQ(-1, 1))], 2) p2 = (((0, 0, 0, 2), 3), [((0, 0, 3, 2), QQ(1, 1)), ((0, 0, 2, 3), QQ(1, 1)), ((0, 0, 1, 0), QQ(-1, 1)), ((0, 0, 0, 1), QQ(-1, 1))], 5) q2 = (((0, 0, 2, 2), 2), [((0, 0, 1, 5), QQ(1, 1)), ((0, 0, 0, 6), QQ(1, 1)), ((0, 1, 1, 0), QQ(1, 1)), ((0, 0, 1, 1), QQ(1, 1))], 13) cp1 = critical_pair(p1, q1, 3, grlex, QQ) cp2 = critical_pair(p2, q2, 3, grlex, QQ) assert cp_key(cp1, grlex) < cp_key(cp2, grlex) cp1 = critical_pair(p1, p2, 3, grlex, QQ) cp2 = critical_pair(q1, q2, 3, grlex, QQ) assert cp_key(cp1, grlex) < cp_key(cp2, grlex)
def test_critical_pair(): # from cyclic4 with grlex R, x, y, z, t = ring("x,y,z,t", QQ, grlex) p1 = (((0, 0, 0, 0), 4), y * z * t ** 2 + z ** 2 * t ** 2 - t ** 4 - 1, 4) q1 = (((0, 0, 0, 0), 2), -(y ** 2) - y * t - z * t - t ** 2, 2) p2 = (((0, 0, 0, 2), 3), z ** 3 * t ** 2 + z ** 2 * t ** 3 - z - t, 5) q2 = (((0, 0, 2, 2), 2), y * z + z * t ** 5 + z * t + t ** 6, 13) assert critical_pair(p1, q1, R) == ( ((0, 0, 1, 2), 2), ((0, 0, 1, 2), QQ(-1, 1)), (((0, 0, 0, 0), 2), -(y ** 2) - y * t - z * t - t ** 2, 2), ((0, 1, 0, 0), 4), ((0, 1, 0, 0), QQ(1, 1)), (((0, 0, 0, 0), 4), y * z * t ** 2 + z ** 2 * t ** 2 - t ** 4 - 1, 4), ) assert critical_pair(p2, q2, R) == ( ((0, 0, 4, 2), 2), ((0, 0, 2, 0), QQ(1, 1)), (((0, 0, 2, 2), 2), y * z + z * t ** 5 + z * t + t ** 6, 13), ((0, 0, 0, 5), 3), ((0, 0, 0, 3), QQ(1, 1)), (((0, 0, 0, 2), 3), z ** 3 * t ** 2 + z ** 2 * t ** 3 - z - t, 5), )
def test_critical_pair(): # from cyclic4 with grlex p1 = (((0, 0, 0, 0), 4), [((0, 1, 1, 2), QQ(1,1)), ((0, 0, 2, 2), QQ(1,1)), ((0, 0, 0, 4), QQ(-1,1)), ((0, 0, 0, 0), QQ(-1,1))], 4) q1 = (((0, 0, 0, 0), 2), [((0, 2, 0, 0), QQ(-1,1)), ((0, 1, 0, 1), QQ(-1,1)), ((0, 0, 1, 1), QQ(-1,1)), ((0, 0, 0, 2), QQ(-1,1))], 2) p2 = (((0, 0, 0, 2), 3), [((0, 0, 3, 2), QQ(1,1)), ((0, 0, 2, 3), QQ(1,1)), ((0, 0, 1, 0), QQ(-1,1)), ((0, 0, 0, 1), QQ(-1,1))], 5) q2 = (((0, 0, 2, 2), 2), [((0, 0, 1, 5), QQ(1,1)), ((0, 0, 0, 6), QQ(1,1)), ((0, 1, 1, 0), QQ(1,1)), ((0, 0, 1, 1), QQ(1,1))], 13) assert critical_pair(p1, q1, 3, grlex, QQ) == (((0, 0, 1, 2), 2), ((0, 0, 1, 2), QQ(-1,1)), (((0, 0, 0, 0), 2), [((0, 2, 0, 0), QQ(-1,1)), ((0, 1, 0, 1), QQ(-1,1)), ((0, 0, 1, 1), QQ(-1,1)), ((0, 0, 0, 2), QQ(-1,1))], 2), ((0, 1, 0, 0), 4), ((0, 1, 0, 0), QQ(1,1)), (((0, 0, 0, 0), 4), [((0, 1, 1, 2), QQ(1,1)), ((0, 0, 2, 2), QQ(1,1)), ((0, 0, 0, 4), QQ(-1,1)), ((0, 0, 0, 0), QQ(-1,1))], 4)) assert critical_pair(p2, q2, 3, grlex, QQ) == (((0, 0, 4, 2), 2), ((0, 0, 2, 0), QQ(1,1)), (((0, 0, 2, 2), 2), [((0, 0, 1, 5), QQ(1,1)), ((0, 0, 0, 6), QQ(1,1)), ((0, 1, 1, 0), QQ(1,1)), ((0, 0, 1, 1), QQ(1,1))], 13), ((0, 0, 0, 5), 3), ((0, 0, 0, 3), QQ(1,1)), (((0, 0, 0, 2), 3), [((0, 0, 3, 2), QQ(1,1)), ((0, 0, 2, 3), QQ(1,1)), ((0, 0, 1, 0), QQ(-1,1)), ((0, 0, 0, 1), QQ(-1,1))], 5))
def test_f5_reduce(): # katsura3 with lex R, x, y, z = ring("x,y,z", QQ, lex) F = [ (((0, 0, 0), 1), x + 2 * y + 2 * z - 1, 1), (((0, 0, 0), 2), 6 * y ** 2 + 8 * y * z - 2 * y + 6 * z ** 2 - 2 * z, 2), ( ((0, 0, 0), 3), QQ(10, 3) * y * z - QQ(1, 3) * y + 4 * z ** 2 - QQ(4, 3) * z, 3, ), (((0, 0, 1), 2), y + 30 * z ** 3 - QQ(79, 7) * z ** 2 + QQ(3, 7) * z, 4), ( ((0, 0, 2), 2), z ** 4 - QQ(10, 21) * z ** 3 + QQ(1, 84) * z ** 2 + QQ(1, 84) * z, 5, ), ] cp = critical_pair(F[0], F[1], R) s = s_poly(cp) assert f5_reduce(s, F) == (((0, 2, 0), 1), R.zero, 1) s = lbp(sig(Sign(s)[0], 100), Polyn(s), Num(s)) assert f5_reduce(s, F) == s
def test_cp_key(): # from cyclic4 with grlex p1 = (((0, 0, 0, 0), 4), [((0, 1, 1, 2), QQ(1,1)), ((0, 0, 2, 2), QQ(1,1)), ((0, 0, 0, 4), QQ(-1,1)), ((0, 0, 0, 0), QQ(-1,1))], 4) q1 = (((0, 0, 0, 0), 2), [((0, 2, 0, 0), QQ(-1,1)), ((0, 1, 0, 1), QQ(-1,1)), ((0, 0, 1, 1), QQ(-1,1)), ((0, 0, 0, 2), QQ(-1,1))], 2) p2 = (((0, 0, 0, 2), 3), [((0, 0, 3, 2), QQ(1,1)), ((0, 0, 2, 3), QQ(1,1)), ((0, 0, 1, 0), QQ(-1,1)), ((0, 0, 0, 1), QQ(-1,1))], 5) q2 = (((0, 0, 2, 2), 2), [((0, 0, 1, 5), QQ(1,1)), ((0, 0, 0, 6), QQ(1,1)), ((0, 1, 1, 0), QQ(1,1)), ((0, 0, 1, 1), QQ(1,1))], 13) cp1 = critical_pair(p1, q1, 3, grlex, QQ) cp2 = critical_pair(p2, q2, 3, grlex, QQ) assert cp_key(cp1, grlex) < cp_key(cp2, grlex) cp1 = critical_pair(p1, p2, 3, grlex, QQ) cp2 = critical_pair(q1, q2, 3, grlex, QQ) assert cp_key(cp1, grlex) < cp_key(cp2, grlex)
def test_critical_pair(): # from cyclic4 with grlex R, x,y,z,t = ring("x,y,z,t", QQ, grlex) p1 = (((0, 0, 0, 0), 4), y*z*t**2 + z**2*t**2 - t**4 - 1, 4) q1 = (((0, 0, 0, 0), 2), -y**2 - y*t - z*t - t**2, 2) p2 = (((0, 0, 0, 2), 3), z**3*t**2 + z**2*t**3 - z - t, 5) q2 = (((0, 0, 2, 2), 2), y*z + z*t**5 + z*t + t**6, 13) assert critical_pair(p1, q1, R) == ( ((0, 0, 1, 2), 2), ((0, 0, 1, 2), QQ(-1, 1)), (((0, 0, 0, 0), 2), -y**2 - y*t - z*t - t**2, 2), ((0, 1, 0, 0), 4), ((0, 1, 0, 0), QQ(1, 1)), (((0, 0, 0, 0), 4), y*z*t**2 + z**2*t**2 - t**4 - 1, 4) ) assert critical_pair(p2, q2, R) == ( ((0, 0, 4, 2), 2), ((0, 0, 2, 0), QQ(1, 1)), (((0, 0, 2, 2), 2), y*z + z*t**5 + z*t + t**6, 13), ((0, 0, 0, 5), 3), ((0, 0, 0, 3), QQ(1, 1)), (((0, 0, 0, 2), 3), z**3*t**2 + z**2*t**3 - z - t, 5) )
def test_cp_key(): # from cyclic4 with grlex R, x,y,z,t = ring("x,y,z,t", QQ, grlex) p1 = (((0, 0, 0, 0), 4), y*z*t**2 + z**2*t**2 - t**4 - 1, 4) q1 = (((0, 0, 0, 0), 2), -y**2 - y*t - z*t - t**2, 2) p2 = (((0, 0, 0, 2), 3), z**3*t**2 + z**2*t**3 - z - t, 5) q2 = (((0, 0, 2, 2), 2), y*z + z*t**5 + z*t + t**6, 13) cp1 = critical_pair(p1, q1, R) cp2 = critical_pair(p2, q2, R) assert cp_key(cp1, R) < cp_key(cp2, R) cp1 = critical_pair(p1, p2, R) cp2 = critical_pair(q1, q2, R) assert cp_key(cp1, R) < cp_key(cp2, R)
def test_cp_key(): # from cyclic4 with grlex R, x, y, z, t = ring("x,y,z,t", QQ, grlex) p1 = (((0, 0, 0, 0), 4), y * z * t**2 + z**2 * t**2 - t**4 - 1, 4) q1 = (((0, 0, 0, 0), 2), -y**2 - y * t - z * t - t**2, 2) p2 = (((0, 0, 0, 2), 3), z**3 * t**2 + z**2 * t**3 - z - t, 5) q2 = (((0, 0, 2, 2), 2), y * z + z * t**5 + z * t + t**6, 13) cp1 = critical_pair(p1, q1, R) cp2 = critical_pair(p2, q2, R) assert cp_key(cp1, R) < cp_key(cp2, R) cp1 = critical_pair(p1, p2, R) cp2 = critical_pair(q1, q2, R) assert cp_key(cp1, R) < cp_key(cp2, R)
def test_f5_reduce(): # katsura3 with lex F = [(((0, 0, 0), 1), [((1, 0, 0), QQ(1,1)), ((0, 1, 0), QQ(2,1)), ((0, 0, 1), QQ(2,1)), ((0, 0, 0), QQ(-1,1))], 1), (((0, 0, 0), 2), [((0, 2, 0), QQ(6,1)), ((0, 1, 1), QQ(8,1)), ((0, 1, 0), QQ(-2,1)), ((0, 0, 2), QQ(6,1)), ((0, 0, 1), QQ(-2,1))], 2), (((0, 0, 0), 3), [((0, 1, 1), QQ(10,3)), ((0, 1, 0), QQ(-1,3)), ((0, 0, 2), QQ(4,1)), ((0, 0, 1), QQ(-4,3))], 3), (((0, 0, 1), 2), [((0, 1, 0), QQ(1,1)), ((0, 0, 3), QQ(30,1)), ((0, 0, 2), QQ(-79,7)), ((0, 0, 1), QQ(3,7))], 4), (((0, 0, 2), 2), [((0, 0, 4), QQ(1,1)), ((0, 0, 3), QQ(-10,21)), ((0, 0, 2), QQ(1,84)), ((0, 0, 1), QQ(1,84))], 5)] cp = critical_pair(F[0], F[1], 2, lex, QQ) s = s_poly(cp, 2, lex, QQ) assert f5_reduce(s, F, 2, lex, QQ) == (((0, 2, 0), 1), [], 1) s = lbp(sig(Sign(s)[0], 100), Polyn(s), Num(s)) assert f5_reduce(s, F, 2, lex, QQ) == s
def test_f5_reduce(): # katsura3 with lex R, x,y,z = ring("x,y,z", QQ, lex) F = [(((0, 0, 0), 1), x + 2*y + 2*z - 1, 1), (((0, 0, 0), 2), 6*y**2 + 8*y*z - 2*y + 6*z**2 - 2*z, 2), (((0, 0, 0), 3), QQ(10,3)*y*z - QQ(1,3)*y + 4*z**2 - QQ(4,3)*z, 3), (((0, 0, 1), 2), y + 30*z**3 - QQ(79,7)*z**2 + QQ(3,7)*z, 4), (((0, 0, 2), 2), z**4 - QQ(10,21)*z**3 + QQ(1,84)*z**2 + QQ(1,84)*z, 5)] cp = critical_pair(F[0], F[1], R) s = s_poly(cp) assert f5_reduce(s, F) == (((0, 2, 0), 1), R.zero, 1) s = lbp(sig(Sign(s)[0], 100), Polyn(s), Num(s)) assert f5_reduce(s, F) == s