Bloom filter gives a $O(1)$-efficient way to test for set memberships, but with false positives and no false negatives, i.e. it will tell you $x\in S$ while actually it is not, but not vice versa.

To get a data structure for similar set membership testing, but with false negatives only, is an interesting problem. Google it you will see the (only?) solution as a direct-mapped cache. Use a fix-size hash table and a hash function, and assume the item is hashable and comparable, then

class cache:
    size = 100
    table = [None]*size
    def add(item):
        table[hash(item) % size] = item
    def isMember(item):
        return table[hash(item) % size] == item

It has false negative because the item in the hash table could be erased.

Reference:
http://somethingsimilar.com/2012/05/21/the-opposite-of-a-bloom-filter/