def test_derive(a, b):
    assert (a.derive('a') == epsilon({'a', 'b'}))
    assert (a.derive('b') == null({'a', 'b'}))
    try:
        a.derive('c')
        assert False
    except KeyError:
        assert True
    assert ((a * 3).derive('a') == (a * 2))
    assert ((a.star() - epsilon({'a', 'b'})).derive('a') == a.star())
def test_derive(a, b):
    assert (a.derive('a') == epsilon({'a', 'b'}))
    assert (a.derive('b') == null({'a', 'b'}))
    try:
        a.derive('c')
        assert False
    except KeyError:
        assert True
    assert ((a * 3).derive('a') == (a * 2))
    assert ((a.star() - epsilon({'a', 'b'})).derive('a') == a.star())