def test_eq_comm_object(): x = var('x') fact(commutative, Add) fact(associative, Add) assert run(0, x, eq_comm(add(1, 2, 3), add(3, 1, x))) == (2, ) print(set(run(0, x, eq_comm(add(1, 2), x)))) assert set(run(0, x, eq_comm(add(1, 2), x))) == set((add(1, 2), add(2, 1))) print(set(run(0, x, eq_assoccomm(add(1, 2, 3), add(1, x))))) assert set(run(0, x, eq_assoccomm(add(1, 2, 3), add(1, x)))) == \ set((add(2, 3), add(3, 2)))
def test_eq_comm(): assert results(eq_comm(1, 1)) assert results(eq_comm((c, 1, 2, 3), (c, 1, 2, 3))) assert results(eq_comm((c, 3, 2, 1), (c, 1, 2, 3))) assert not results(eq_comm((a, 3, 2, 1), (a, 1, 2, 3))) # not commutative assert not results(eq_comm((3, c, 2, 1), (c, 1, 2, 3))) assert not results(eq_comm((c, 1, 2, 1), (c, 1, 2, 3))) assert not results(eq_comm((a, 1, 2, 3), (c, 1, 2, 3))) assert len(results(eq_comm((c, 3, 2, 1), x))) >= 6 assert results(eq_comm(x, y)) == ({x: y}, )
def test_eq_comm(): assert results(eq_comm(1, 1)) assert results(eq_comm((c, 1, 2, 3), (c, 1, 2, 3))) assert results(eq_comm((c, 3, 2, 1), (c, 1, 2, 3))) assert not results(eq_comm((a, 3, 2, 1), (a, 1, 2, 3))) # not commutative assert not results(eq_comm((3, c, 2, 1), (c, 1, 2, 3))) assert not results(eq_comm((c, 1, 2, 1), (c, 1, 2, 3))) assert not results(eq_comm((a, 1, 2, 3), (c, 1, 2, 3))) assert len(results(eq_comm((c, 3, 2, 1), x))) >= 6
def test_deep_commutativity(): x, y = var("x"), var("y") e1 = (c, (c, 1, x), y) e2 = (c, 2, (c, 3, 1)) assert run(0, (x, y), eq_comm(e1, e2)) == ((3, 2),)
def test_eq_comm(): assert set(run(0, x, eq_comm((c, 1, 2, 3), (c, x, 3)))) == set(((c, 1, 2), (c, 2, 1)))
def test_deep_commutativity(): x, y = var('x'), var('y') e1 = (c, (c, 1, x), y) e2 = (c, 2, (c, 3, 1)) assert run(0, (x, y), eq_comm(e1, e2)) == ((3, 2), )