def test_Algebra_get_exact(): assert EX.get_exact() == EX assert ZZ.get_exact() == ZZ assert QQ.get_exact() == QQ assert RR.get_exact() == QQ assert ALG.get_exact() == ALG assert ZZ[x].get_exact() == ZZ[x] assert QQ[x].get_exact() == QQ[x] assert ZZ[x, y].get_exact() == ZZ[x, y] assert QQ[x, y].get_exact() == QQ[x, y] assert ZZ.frac_field(x).get_exact() == ZZ.frac_field(x) assert QQ.frac_field(x).get_exact() == QQ.frac_field(x) assert ZZ.frac_field(x, y).get_exact() == ZZ.frac_field(x, y) assert QQ.frac_field(x, y).get_exact() == QQ.frac_field(x, y)
def test_Algebra_get_exact(): assert EX.get_exact() == EX assert ZZ.get_exact() == ZZ assert QQ.get_exact() == QQ assert RR.get_exact() == QQ assert ALG.get_exact() == ALG assert ZZ[x].get_exact() == ZZ[x] assert QQ[x].get_exact() == QQ[x] assert ZZ[x,y].get_exact() == ZZ[x,y] assert QQ[x,y].get_exact() == QQ[x,y] assert ZZ.frac_field(x).get_exact() == ZZ.frac_field(x) assert QQ.frac_field(x).get_exact() == QQ.frac_field(x) assert ZZ.frac_field(x,y).get_exact() == ZZ.frac_field(x,y) assert QQ.frac_field(x,y).get_exact() == QQ.frac_field(x,y)
def test_Algebra_get_field(): assert EX.has_assoc_Field == True assert ZZ.has_assoc_Field == True assert QQ.has_assoc_Field == True assert ALG.has_assoc_Field == True assert ZZ[x].has_assoc_Field == True assert QQ[x].has_assoc_Field == True assert ZZ[x, y].has_assoc_Field == True assert QQ[x, y].has_assoc_Field == True assert RR.has_assoc_Field == False assert EX.get_field() == EX assert ZZ.get_field() == QQ assert QQ.get_field() == QQ assert ALG.get_field() == ALG assert ZZ[x].get_field() == ZZ.frac_field(x) assert QQ[x].get_field() == ZZ.frac_field(x) assert ZZ[x, y].get_field() == ZZ.frac_field(x, y) assert QQ[x, y].get_field() == ZZ.frac_field(x, y) raises(DomainError, "RR.get_field()")
def test_Algebra_get_field(): assert EX.has_assoc_Field == True assert ZZ.has_assoc_Field == True assert QQ.has_assoc_Field == True assert ALG.has_assoc_Field == True assert ZZ[x].has_assoc_Field == True assert QQ[x].has_assoc_Field == True assert ZZ[x,y].has_assoc_Field == True assert QQ[x,y].has_assoc_Field == True assert RR.has_assoc_Field == False assert EX.get_field() == EX assert ZZ.get_field() == QQ assert QQ.get_field() == QQ assert ALG.get_field() == ALG assert ZZ[x].get_field() == ZZ.frac_field(x) assert QQ[x].get_field() == ZZ.frac_field(x) assert ZZ[x,y].get_field() == ZZ.frac_field(x,y) assert QQ[x,y].get_field() == ZZ.frac_field(x,y) raises(DomainError, "RR.get_field()")
def test_Algebra__unify(): assert ZZ.unify(ZZ) == ZZ assert QQ.unify(QQ) == QQ assert ZZ.unify(QQ) == QQ assert QQ.unify(ZZ) == QQ assert EX.unify(EX) == EX assert ZZ.unify(EX) == EX assert QQ.unify(EX) == EX assert EX.unify(ZZ) == EX assert EX.unify(QQ) == EX assert ZZ.poly_ring('x').unify(EX) == EX assert ZZ.frac_field('x').unify(EX) == EX assert EX.unify(ZZ.poly_ring('x')) == EX assert EX.unify(ZZ.frac_field('x')) == EX assert ZZ.poly_ring('x', 'y').unify(EX) == EX assert ZZ.frac_field('x', 'y').unify(EX) == EX assert EX.unify(ZZ.poly_ring('x', 'y')) == EX assert EX.unify(ZZ.frac_field('x', 'y')) == EX assert QQ.poly_ring('x').unify(EX) == EX assert QQ.frac_field('x').unify(EX) == EX assert EX.unify(QQ.poly_ring('x')) == EX assert EX.unify(QQ.frac_field('x')) == EX assert QQ.poly_ring('x', 'y').unify(EX) == EX assert QQ.frac_field('x', 'y').unify(EX) == EX assert EX.unify(QQ.poly_ring('x', 'y')) == EX assert EX.unify(QQ.frac_field('x', 'y')) == EX assert ZZ.poly_ring('x').unify(ZZ) == ZZ.poly_ring('x') assert ZZ.poly_ring('x').unify(QQ) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(ZZ) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(QQ) == QQ.poly_ring('x') assert ZZ.unify(ZZ.poly_ring('x')) == ZZ.poly_ring('x') assert QQ.unify(ZZ.poly_ring('x')) == QQ.poly_ring('x') assert ZZ.unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert QQ.unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert ZZ.poly_ring('x', 'y').unify(ZZ) == ZZ.poly_ring('x', 'y') assert ZZ.poly_ring('x', 'y').unify(QQ) == QQ.poly_ring('x', 'y') assert QQ.poly_ring('x', 'y').unify(ZZ) == QQ.poly_ring('x', 'y') assert QQ.poly_ring('x', 'y').unify(QQ) == QQ.poly_ring('x', 'y') assert ZZ.unify(ZZ.poly_ring('x', 'y')) == ZZ.poly_ring('x', 'y') assert QQ.unify(ZZ.poly_ring('x', 'y')) == QQ.poly_ring('x', 'y') assert ZZ.unify(QQ.poly_ring('x', 'y')) == QQ.poly_ring('x', 'y') assert QQ.unify(QQ.poly_ring('x', 'y')) == QQ.poly_ring('x', 'y') assert ZZ.frac_field('x').unify(ZZ) == ZZ.frac_field('x') assert ZZ.frac_field('x').unify(QQ) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(ZZ) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(QQ) == QQ.frac_field('x') assert ZZ.unify(ZZ.frac_field('x')) == ZZ.frac_field('x') assert QQ.unify(ZZ.frac_field('x')) == EX # QQ.frac_field('x') assert ZZ.unify(QQ.frac_field('x')) == EX # QQ.frac_field('x') assert QQ.unify(QQ.frac_field('x')) == QQ.frac_field('x') assert ZZ.frac_field('x', 'y').unify(ZZ) == ZZ.frac_field('x', 'y') assert ZZ.frac_field('x', 'y').unify(QQ) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x', 'y').unify(ZZ) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x', 'y').unify(QQ) == QQ.frac_field('x', 'y') assert ZZ.unify(ZZ.frac_field('x', 'y')) == ZZ.frac_field('x', 'y') assert QQ.unify(ZZ.frac_field('x', 'y')) == EX # QQ.frac_field('x','y') assert ZZ.unify(QQ.frac_field('x', 'y')) == EX # QQ.frac_field('x','y') assert QQ.unify(QQ.frac_field('x', 'y')) == QQ.frac_field('x', 'y') assert ZZ.poly_ring('x').unify(ZZ.poly_ring('x')) == ZZ.poly_ring('x') assert ZZ.poly_ring('x').unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(ZZ.poly_ring('x')) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert ZZ.poly_ring('x', 'y').unify(ZZ.poly_ring('x')) == ZZ.poly_ring( 'x', 'y') assert ZZ.poly_ring('x', 'y').unify(QQ.poly_ring('x')) == QQ.poly_ring( 'x', 'y') assert QQ.poly_ring('x', 'y').unify(ZZ.poly_ring('x')) == QQ.poly_ring( 'x', 'y') assert QQ.poly_ring('x', 'y').unify(QQ.poly_ring('x')) == QQ.poly_ring( 'x', 'y') assert ZZ.poly_ring('x').unify(ZZ.poly_ring('x', 'y')) == ZZ.poly_ring( 'x', 'y') assert ZZ.poly_ring('x').unify(QQ.poly_ring('x', 'y')) == QQ.poly_ring( 'x', 'y') assert QQ.poly_ring('x').unify(ZZ.poly_ring('x', 'y')) == QQ.poly_ring( 'x', 'y') assert QQ.poly_ring('x').unify(QQ.poly_ring('x', 'y')) == QQ.poly_ring( 'x', 'y') assert ZZ.poly_ring('x', 'y').unify(ZZ.poly_ring('x', 'z')) == ZZ.poly_ring( 'x', 'y', 'z') assert ZZ.poly_ring('x', 'y').unify(QQ.poly_ring('x', 'z')) == QQ.poly_ring( 'x', 'y', 'z') assert QQ.poly_ring('x', 'y').unify(ZZ.poly_ring('x', 'z')) == QQ.poly_ring( 'x', 'y', 'z') assert QQ.poly_ring('x', 'y').unify(QQ.poly_ring('x', 'z')) == QQ.poly_ring( 'x', 'y', 'z') assert ZZ.frac_field('x').unify(ZZ.frac_field('x')) == ZZ.frac_field('x') assert ZZ.frac_field('x').unify(QQ.frac_field('x')) == QQ.frac_field('x') assert QQ.frac_field('x').unify(ZZ.frac_field('x')) == QQ.frac_field('x') assert QQ.frac_field('x').unify(QQ.frac_field('x')) == QQ.frac_field('x') assert ZZ.frac_field('x', 'y').unify(ZZ.frac_field('x')) == ZZ.frac_field( 'x', 'y') assert ZZ.frac_field('x', 'y').unify(QQ.frac_field('x')) == QQ.frac_field( 'x', 'y') assert QQ.frac_field('x', 'y').unify(ZZ.frac_field('x')) == QQ.frac_field( 'x', 'y') assert QQ.frac_field('x', 'y').unify(QQ.frac_field('x')) == QQ.frac_field( 'x', 'y') assert ZZ.frac_field('x').unify(ZZ.frac_field('x', 'y')) == ZZ.frac_field( 'x', 'y') assert ZZ.frac_field('x').unify(QQ.frac_field('x', 'y')) == QQ.frac_field( 'x', 'y') assert QQ.frac_field('x').unify(ZZ.frac_field('x', 'y')) == QQ.frac_field( 'x', 'y') assert QQ.frac_field('x').unify(QQ.frac_field('x', 'y')) == QQ.frac_field( 'x', 'y') assert ZZ.frac_field('x', 'y').unify(ZZ.frac_field('x', 'z')) == ZZ.frac_field( 'x', 'y', 'z') assert ZZ.frac_field('x', 'y').unify(QQ.frac_field('x', 'z')) == QQ.frac_field( 'x', 'y', 'z') assert QQ.frac_field('x', 'y').unify(ZZ.frac_field('x', 'z')) == QQ.frac_field( 'x', 'y', 'z') assert QQ.frac_field('x', 'y').unify(QQ.frac_field('x', 'z')) == QQ.frac_field( 'x', 'y', 'z') assert ZZ.poly_ring('x').unify(ZZ.frac_field('x')) == ZZ.frac_field('x') assert ZZ.poly_ring('x').unify( QQ.frac_field('x')) == EX # QQ.frac_field('x') assert QQ.poly_ring('x').unify( ZZ.frac_field('x')) == EX # QQ.frac_field('x') assert QQ.poly_ring('x').unify(QQ.frac_field('x')) == QQ.frac_field('x') assert ZZ.poly_ring('x', 'y').unify(ZZ.frac_field('x')) == ZZ.frac_field( 'x', 'y') assert ZZ.poly_ring('x', 'y').unify( QQ.frac_field('x')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x', 'y').unify( ZZ.frac_field('x')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x', 'y').unify(QQ.frac_field('x')) == QQ.frac_field( 'x', 'y') assert ZZ.poly_ring('x').unify(ZZ.frac_field('x', 'y')) == ZZ.frac_field( 'x', 'y') assert ZZ.poly_ring('x').unify(QQ.frac_field( 'x', 'y')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x').unify(ZZ.frac_field( 'x', 'y')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x').unify(QQ.frac_field('x', 'y')) == QQ.frac_field( 'x', 'y') assert ZZ.poly_ring('x', 'y').unify(ZZ.frac_field('x', 'z')) == ZZ.frac_field( 'x', 'y', 'z') assert ZZ.poly_ring('x', 'y').unify(QQ.frac_field( 'x', 'z')) == EX # QQ.frac_field('x','y','z') assert QQ.poly_ring('x', 'y').unify(ZZ.frac_field( 'x', 'z')) == EX # QQ.frac_field('x','y','z') assert QQ.poly_ring('x', 'y').unify(QQ.frac_field('x', 'z')) == QQ.frac_field( 'x', 'y', 'z') assert ZZ.frac_field('x').unify(ZZ.poly_ring('x')) == ZZ.frac_field('x') assert ZZ.frac_field('x').unify( QQ.poly_ring('x')) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify( ZZ.poly_ring('x')) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(QQ.poly_ring('x')) == QQ.frac_field('x') assert ZZ.frac_field('x', 'y').unify(ZZ.poly_ring('x')) == ZZ.frac_field( 'x', 'y') assert ZZ.frac_field('x', 'y').unify( QQ.poly_ring('x')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x', 'y').unify( ZZ.poly_ring('x')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x', 'y').unify(QQ.poly_ring('x')) == QQ.frac_field( 'x', 'y') assert ZZ.frac_field('x').unify(ZZ.poly_ring('x', 'y')) == ZZ.frac_field( 'x', 'y') assert ZZ.frac_field('x').unify(QQ.poly_ring( 'x', 'y')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x').unify(ZZ.poly_ring( 'x', 'y')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x').unify(QQ.poly_ring('x', 'y')) == QQ.frac_field( 'x', 'y') assert ZZ.frac_field('x', 'y').unify(ZZ.poly_ring('x', 'z')) == ZZ.frac_field( 'x', 'y', 'z') assert ZZ.frac_field('x', 'y').unify(QQ.poly_ring( 'x', 'z')) == EX # QQ.frac_field('x','y','z') assert QQ.frac_field('x', 'y').unify(ZZ.poly_ring( 'x', 'z')) == EX # QQ.frac_field('x','y','z') assert QQ.frac_field('x', 'y').unify(QQ.poly_ring('x', 'z')) == QQ.frac_field( 'x', 'y', 'z') raises(UnificationFailed, "ZZ.poly_ring('x','y').unify(ZZ, gens=('y', 'z'))") raises(UnificationFailed, "ZZ.unify(ZZ.poly_ring('x','y'), gens=('y', 'z'))")
def test_Algebra__unify(): assert ZZ.unify(ZZ) == ZZ assert QQ.unify(QQ) == QQ assert ZZ.unify(QQ) == QQ assert QQ.unify(ZZ) == QQ assert EX.unify(EX) == EX assert ZZ.unify(EX) == EX assert QQ.unify(EX) == EX assert EX.unify(ZZ) == EX assert EX.unify(QQ) == EX assert ZZ.poly_ring('x').unify(EX) == EX assert ZZ.frac_field('x').unify(EX) == EX assert EX.unify(ZZ.poly_ring('x')) == EX assert EX.unify(ZZ.frac_field('x')) == EX assert ZZ.poly_ring('x','y').unify(EX) == EX assert ZZ.frac_field('x','y').unify(EX) == EX assert EX.unify(ZZ.poly_ring('x','y')) == EX assert EX.unify(ZZ.frac_field('x','y')) == EX assert QQ.poly_ring('x').unify(EX) == EX assert QQ.frac_field('x').unify(EX) == EX assert EX.unify(QQ.poly_ring('x')) == EX assert EX.unify(QQ.frac_field('x')) == EX assert QQ.poly_ring('x','y').unify(EX) == EX assert QQ.frac_field('x','y').unify(EX) == EX assert EX.unify(QQ.poly_ring('x','y')) == EX assert EX.unify(QQ.frac_field('x','y')) == EX assert ZZ.poly_ring('x').unify(ZZ) == ZZ.poly_ring('x') assert ZZ.poly_ring('x').unify(QQ) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(ZZ) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(QQ) == QQ.poly_ring('x') assert ZZ.unify(ZZ.poly_ring('x')) == ZZ.poly_ring('x') assert QQ.unify(ZZ.poly_ring('x')) == QQ.poly_ring('x') assert ZZ.unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert QQ.unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert ZZ.poly_ring('x','y').unify(ZZ) == ZZ.poly_ring('x','y') assert ZZ.poly_ring('x','y').unify(QQ) == QQ.poly_ring('x','y') assert QQ.poly_ring('x','y').unify(ZZ) == QQ.poly_ring('x','y') assert QQ.poly_ring('x','y').unify(QQ) == QQ.poly_ring('x','y') assert ZZ.unify(ZZ.poly_ring('x','y')) == ZZ.poly_ring('x','y') assert QQ.unify(ZZ.poly_ring('x','y')) == QQ.poly_ring('x','y') assert ZZ.unify(QQ.poly_ring('x','y')) == QQ.poly_ring('x','y') assert QQ.unify(QQ.poly_ring('x','y')) == QQ.poly_ring('x','y') assert ZZ.frac_field('x').unify(ZZ) == ZZ.frac_field('x') assert ZZ.frac_field('x').unify(QQ) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(ZZ) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(QQ) == QQ.frac_field('x') assert ZZ.unify(ZZ.frac_field('x')) == ZZ.frac_field('x') assert QQ.unify(ZZ.frac_field('x')) == EX # QQ.frac_field('x') assert ZZ.unify(QQ.frac_field('x')) == EX # QQ.frac_field('x') assert QQ.unify(QQ.frac_field('x')) == QQ.frac_field('x') assert ZZ.frac_field('x','y').unify(ZZ) == ZZ.frac_field('x','y') assert ZZ.frac_field('x','y').unify(QQ) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x','y').unify(ZZ) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x','y').unify(QQ) == QQ.frac_field('x','y') assert ZZ.unify(ZZ.frac_field('x','y')) == ZZ.frac_field('x','y') assert QQ.unify(ZZ.frac_field('x','y')) == EX # QQ.frac_field('x','y') assert ZZ.unify(QQ.frac_field('x','y')) == EX # QQ.frac_field('x','y') assert QQ.unify(QQ.frac_field('x','y')) == QQ.frac_field('x','y') assert ZZ.poly_ring('x').unify(ZZ.poly_ring('x')) == ZZ.poly_ring('x') assert ZZ.poly_ring('x').unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(ZZ.poly_ring('x')) == QQ.poly_ring('x') assert QQ.poly_ring('x').unify(QQ.poly_ring('x')) == QQ.poly_ring('x') assert ZZ.poly_ring('x','y').unify(ZZ.poly_ring('x')) == ZZ.poly_ring('x','y') assert ZZ.poly_ring('x','y').unify(QQ.poly_ring('x')) == QQ.poly_ring('x','y') assert QQ.poly_ring('x','y').unify(ZZ.poly_ring('x')) == QQ.poly_ring('x','y') assert QQ.poly_ring('x','y').unify(QQ.poly_ring('x')) == QQ.poly_ring('x','y') assert ZZ.poly_ring('x').unify(ZZ.poly_ring('x','y')) == ZZ.poly_ring('x','y') assert ZZ.poly_ring('x').unify(QQ.poly_ring('x','y')) == QQ.poly_ring('x','y') assert QQ.poly_ring('x').unify(ZZ.poly_ring('x','y')) == QQ.poly_ring('x','y') assert QQ.poly_ring('x').unify(QQ.poly_ring('x','y')) == QQ.poly_ring('x','y') assert ZZ.poly_ring('x','y').unify(ZZ.poly_ring('x','z')) == ZZ.poly_ring('x','y','z') assert ZZ.poly_ring('x','y').unify(QQ.poly_ring('x','z')) == QQ.poly_ring('x','y','z') assert QQ.poly_ring('x','y').unify(ZZ.poly_ring('x','z')) == QQ.poly_ring('x','y','z') assert QQ.poly_ring('x','y').unify(QQ.poly_ring('x','z')) == QQ.poly_ring('x','y','z') assert ZZ.frac_field('x').unify(ZZ.frac_field('x')) == ZZ.frac_field('x') assert ZZ.frac_field('x').unify(QQ.frac_field('x')) == QQ.frac_field('x') assert QQ.frac_field('x').unify(ZZ.frac_field('x')) == QQ.frac_field('x') assert QQ.frac_field('x').unify(QQ.frac_field('x')) == QQ.frac_field('x') assert ZZ.frac_field('x','y').unify(ZZ.frac_field('x')) == ZZ.frac_field('x','y') assert ZZ.frac_field('x','y').unify(QQ.frac_field('x')) == QQ.frac_field('x','y') assert QQ.frac_field('x','y').unify(ZZ.frac_field('x')) == QQ.frac_field('x','y') assert QQ.frac_field('x','y').unify(QQ.frac_field('x')) == QQ.frac_field('x','y') assert ZZ.frac_field('x').unify(ZZ.frac_field('x','y')) == ZZ.frac_field('x','y') assert ZZ.frac_field('x').unify(QQ.frac_field('x','y')) == QQ.frac_field('x','y') assert QQ.frac_field('x').unify(ZZ.frac_field('x','y')) == QQ.frac_field('x','y') assert QQ.frac_field('x').unify(QQ.frac_field('x','y')) == QQ.frac_field('x','y') assert ZZ.frac_field('x','y').unify(ZZ.frac_field('x','z')) == ZZ.frac_field('x','y','z') assert ZZ.frac_field('x','y').unify(QQ.frac_field('x','z')) == QQ.frac_field('x','y','z') assert QQ.frac_field('x','y').unify(ZZ.frac_field('x','z')) == QQ.frac_field('x','y','z') assert QQ.frac_field('x','y').unify(QQ.frac_field('x','z')) == QQ.frac_field('x','y','z') assert ZZ.poly_ring('x').unify(ZZ.frac_field('x')) == ZZ.frac_field('x') assert ZZ.poly_ring('x').unify(QQ.frac_field('x')) == EX # QQ.frac_field('x') assert QQ.poly_ring('x').unify(ZZ.frac_field('x')) == EX # QQ.frac_field('x') assert QQ.poly_ring('x').unify(QQ.frac_field('x')) == QQ.frac_field('x') assert ZZ.poly_ring('x','y').unify(ZZ.frac_field('x')) == ZZ.frac_field('x','y') assert ZZ.poly_ring('x','y').unify(QQ.frac_field('x')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x','y').unify(ZZ.frac_field('x')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x','y').unify(QQ.frac_field('x')) == QQ.frac_field('x','y') assert ZZ.poly_ring('x').unify(ZZ.frac_field('x','y')) == ZZ.frac_field('x','y') assert ZZ.poly_ring('x').unify(QQ.frac_field('x','y')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x').unify(ZZ.frac_field('x','y')) == EX # QQ.frac_field('x','y') assert QQ.poly_ring('x').unify(QQ.frac_field('x','y')) == QQ.frac_field('x','y') assert ZZ.poly_ring('x','y').unify(ZZ.frac_field('x','z')) == ZZ.frac_field('x','y','z') assert ZZ.poly_ring('x','y').unify(QQ.frac_field('x','z')) == EX # QQ.frac_field('x','y','z') assert QQ.poly_ring('x','y').unify(ZZ.frac_field('x','z')) == EX # QQ.frac_field('x','y','z') assert QQ.poly_ring('x','y').unify(QQ.frac_field('x','z')) == QQ.frac_field('x','y','z') assert ZZ.frac_field('x').unify(ZZ.poly_ring('x')) == ZZ.frac_field('x') assert ZZ.frac_field('x').unify(QQ.poly_ring('x')) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(ZZ.poly_ring('x')) == EX # QQ.frac_field('x') assert QQ.frac_field('x').unify(QQ.poly_ring('x')) == QQ.frac_field('x') assert ZZ.frac_field('x','y').unify(ZZ.poly_ring('x')) == ZZ.frac_field('x','y') assert ZZ.frac_field('x','y').unify(QQ.poly_ring('x')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x','y').unify(ZZ.poly_ring('x')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x','y').unify(QQ.poly_ring('x')) == QQ.frac_field('x','y') assert ZZ.frac_field('x').unify(ZZ.poly_ring('x','y')) == ZZ.frac_field('x','y') assert ZZ.frac_field('x').unify(QQ.poly_ring('x','y')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x').unify(ZZ.poly_ring('x','y')) == EX # QQ.frac_field('x','y') assert QQ.frac_field('x').unify(QQ.poly_ring('x','y')) == QQ.frac_field('x','y') assert ZZ.frac_field('x','y').unify(ZZ.poly_ring('x','z')) == ZZ.frac_field('x','y','z') assert ZZ.frac_field('x','y').unify(QQ.poly_ring('x','z')) == EX # QQ.frac_field('x','y','z') assert QQ.frac_field('x','y').unify(ZZ.poly_ring('x','z')) == EX # QQ.frac_field('x','y','z') assert QQ.frac_field('x','y').unify(QQ.poly_ring('x','z')) == QQ.frac_field('x','y','z') raises(UnificationFailed, "ZZ.poly_ring('x','y').unify(ZZ, gens=('y', 'z'))") raises(UnificationFailed, "ZZ.unify(ZZ.poly_ring('x','y'), gens=('y', 'z'))")