예제 #1
0
def test_exceptions():
    I = QQ.old_poly_ring(x).ideal(x)
    J = QQ.old_poly_ring(y).ideal(1)
    pytest.raises(ValueError, lambda: I.union(x))
    pytest.raises(ValueError, lambda: I + J)
    pytest.raises(ValueError, lambda: I * J)
    pytest.raises(ValueError, lambda: I.union(J))
    assert (I == J) is False
    assert I != J
예제 #2
0
def test_intersection():
    R = QQ.old_poly_ring(x, y, z)
    # SCA, example 1.8.11
    assert R.ideal(x, y).intersect(R.ideal(y**2,
                                           z)) == R.ideal(y**2, y * z, x * z)

    assert R.ideal(x, y).intersect(R.ideal()).is_zero()

    R = QQ.old_poly_ring(x, y, z, order="ilex")
    assert R.ideal(x, y).intersect(R.ideal(y**2 + y**2*z, z + z*x**3*y)) == \
        R.ideal(y**2, y*z, x*z)
예제 #3
0
def test_nontriv_global():
    R = QQ.old_poly_ring(x, y, z)

    def contains(I, f):
        return R.ideal(*I).contains(f)

    assert contains([x, y], x)
    assert contains([x, y], x + y)
    assert not contains([x, y], 1)
    assert not contains([x, y], z)
    assert contains([x**2 + y, x**2 + x], x - y)
    assert not contains([x + y + z, x * y + x * z + y * z, x * y * z], x**2)
    assert contains([x + y + z, x * y + x * z + y * z, x * y * z], x**3)
    assert contains([x + y + z, x * y + x * z + y * z, x * y * z], x**4)
    assert not contains([x + y + z, x * y + x * z + y * z, x * y * z],
                        x * y**2)
    assert contains([x + y + z, x * y + x * z + y * z, x * y * z],
                    x**4 + y**3 + 2 * z * y * x)
    assert contains([x + y + z, x * y + x * z + y * z, x * y * z], x * y * z)
    assert contains([x, 1 + x + y, 5 - 7 * y], 1)
    assert contains([
        x**3 + y**3, y**3 + z**3, z**3 + x**3, x**2 * y + x**2 * z + y**2 * z
    ], x**3)
    assert not contains([
        x**3 + y**3, y**3 + z**3, z**3 + x**3, x**2 * y + x**2 * z + y**2 * z
    ], x**2 + y**2)

    # compare local order
    assert not contains([x * (1 + x + y), y * (1 + z)], x)
    assert not contains([x * (1 + x + y), y * (1 + z)], x + y)
예제 #4
0
def test_reduction():
    from diofant.polys.distributedmodules import sdm_nf_buchberger_reduced
    R = QQ.old_poly_ring(x, y)
    I = R.ideal(x**5, y)
    e = R.convert(x**3 + y**2)
    assert I.reduce_element(e) == e
    assert I.reduce_element(e, NF=sdm_nf_buchberger_reduced) == R.convert(x**3)
예제 #5
0
def test_nontriv_local():
    R = QQ.old_poly_ring(x, y, z, order=ilex)

    def contains(I, f):
        return R.ideal(*I).contains(f)

    assert contains([x, y], x)
    assert contains([x, y], x + y)
    assert not contains([x, y], 1)
    assert not contains([x, y], z)
    assert contains([x**2 + y, x**2 + x], x - y)
    assert not contains([x + y + z, x * y + x * z + y * z, x * y * z], x**2)
    assert contains([x * (1 + x + y), y * (1 + z)], x)
    assert contains([x * (1 + x + y), y * (1 + z)], x + y)
예제 #6
0
def test_ideal_operations():
    R = QQ.old_poly_ring(x, y)
    I = R.ideal(x)
    J = R.ideal(y)
    S = R.ideal(x * y)
    T = R.ideal(x, y)

    assert not (I == J)
    assert I == I

    assert I.union(J) == T
    assert I + J == T
    assert I + T == T

    assert not I.subset(T)
    assert T.subset(I)

    assert I.product(J) == S
    assert I * J == S
    assert x * J == S
    assert I * y == S
    assert R.convert(x) * J == S
    assert I * R.convert(y) == S

    assert not I.is_zero()
    assert not J.is_whole_ring()

    assert R.ideal(x**2 + 1, x).is_whole_ring()
    assert R.ideal() == R.ideal(0)
    assert R.ideal().is_zero()

    assert T.contains(x * y)
    assert T.subset([x, y])

    assert T.in_terms_of_generators(x) == [R(1), R(0)]

    assert T**0 == R.ideal(1)
    assert T**1 == T
    assert T**2 == R.ideal(x**2, y**2, x * y)
    assert I**5 == R.ideal(x**5)
예제 #7
0
def test_PrettyPoly():
    from diofant.polys.domains import QQ
    F = QQ.frac_field(x, y)
    R = QQ[x, y]
    assert sstr(F.convert(x / (x + y))) == sstr(x / (x + y))
    assert sstr(R.convert(x + y)) == sstr(x + y)
예제 #8
0
def test_quotient():
    # SCA, example 1.8.13
    R = QQ.old_poly_ring(x, y, z)
    assert R.ideal(x, y).quotient(R.ideal(y**2, z)) == R.ideal(x, y)