def test_overloading():
    'Test that |, & are overloaded as expected'
    (A, B, C) = list(map(Boolean, symbols('A,B,C')))
    assert ((A & B) == And(A, B))
    assert ((A | B) == Or(A, B))
    assert (((A & B) | C) == Or(And(A, B), C))
    assert ((A >> B) == Implies(A, B))
    assert ((A << B) == Implies(B, A))
    assert ((~ A) == Not(A))
    assert ((A ^ B) == Xor(A, B))
Test that |, & are overloaded as expected
def test_overloading():
    
    (A, B, C) = list(map(Boolean, symbols('A,B,C')))
    assert ((A & B) == And(A, B))
    assert ((A | B) == Or(A, B))
    assert (((A & B) | C) == Or(And(A, B), C))
    assert ((A >> B) == Implies(A, B))
    assert ((A << B) == Implies(B, A))
    assert ((~ A) == Not(A))
    assert ((A ^ B) == Xor(A, B))