示例#1
0
def test_unate():
    # c' * (a' + b')
    f = -c * (-a + -b)
    assert f.is_neg_unate([a, b, c])
    assert f.is_neg_unate([a, b])
    assert f.is_neg_unate([a, c])
    assert f.is_neg_unate([b, c])
    assert f.is_neg_unate(a)
    assert f.is_neg_unate(b)
    assert f.is_neg_unate(c)
    assert f.is_neg_unate()

    f = c * (a + b)
    assert f.is_pos_unate([a, b, c])
    assert f.is_pos_unate([a, b])
    assert f.is_pos_unate([a, c])
    assert f.is_pos_unate([b, c])
    assert f.is_pos_unate(a)
    assert f.is_pos_unate(b)
    assert f.is_pos_unate(c)
    assert f.is_pos_unate()

    f = Xor(a, b, c)
    assert f.is_binate([a, b, c])
    assert f.is_binate([a, b])
    assert f.is_binate([a, c])
    assert f.is_binate([b, c])
    assert f.is_binate(a)
    assert f.is_binate(b)
    assert f.is_binate(c)
示例#2
0
def test_unate():
    f = ~c & (~a | ~b)
    assert f.is_neg_unate([a, b, c])
    assert f.is_neg_unate([a, b])
    assert f.is_neg_unate([a, c])
    assert f.is_neg_unate([b, c])
    assert f.is_neg_unate(a)
    assert f.is_neg_unate(b)
    assert f.is_neg_unate(c)
    assert f.is_neg_unate()

    f = c & (a | b)
    assert f.is_pos_unate([a, b, c])
    assert f.is_pos_unate([a, b])
    assert f.is_pos_unate([a, c])
    assert f.is_pos_unate([b, c])
    assert f.is_pos_unate(a)
    assert f.is_pos_unate(b)
    assert f.is_pos_unate(c)
    assert f.is_pos_unate()

    f = Xor(a, b, c)
    assert f.is_binate([a, b, c])
    assert f.is_binate([a, b])
    assert f.is_binate([a, c])
    assert f.is_binate([b, c])
    assert f.is_binate(a)
    assert f.is_binate(b)
    assert f.is_binate(c)