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.