Ejemplo n.º 1
0
def test_critical_pair():
    # from cyclic4 with grlex
    R,  _, 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), -1), (((0, 0, 0, 0), 2), -y**2 - y*t - z*t - t**2, 2),
        ((0, 1, 0, 0), 4), ((0, 1, 0, 0), 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), 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), 1), (((0, 0, 0, 2), 3), z**3*t**2 + z**2*t**3 - z - t, 5)
    )
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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), 10 * y * z / 3 - y / 3 + 4 * z**2 - 4 * z / 3, 3),
         (((0, 0, 1), 2), y + 30 * z**3 - 79 * z**2 / 7 + 3 * z / 7, 4),
         (((0, 0, 2), 2), z**4 - 10 * z**3 / 21 + z**2 / 84 + z / 84, 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
Ejemplo n.º 4
0
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