def test_unfiy_tricky(): v1 = qvar() v2 = qvar() g1 = qfun(v1, v2) g2 = qfun(v2, qobj()) assert_equal(unify([g1, g2]), qfun(qobj(), qobj()))
def test_unify(): assert_raises(UnificationError, unify, [qobj(), qbool()]) assert_equal(unify([qobj(), qobj()]), qobj()) assert_equal(unify([qvar(), qobj()]), qobj()) assert_equal(unify([qobj(), qvar()]), qobj()) v1 = qvar() v2 = qvar() uni = unify([v1, v2]) assert_true(uni == v1 or uni == v2) f1 = qfun(qobj(), qbool()) f2 = qfun(qobj(), qobj()) f3 = qfun(qvar(), qobj()) f4 = qfun(qvar(), qvar()) assert_raises(UnificationError, unify, [f1, f2]) assert_equal(unify([f2, f3]), f2) assert_equal(unify([f2, f4]), f2) assert_equal(unify([f3, f4]), f3)