What does a Bloom filter guarantee about its answers?
Not quite.
If a Bloom filter says an item is absent, it is definitely absent (no false negatives); if it says present, it might be wrong (false positives at a tunable rate). That asymmetry fits 'skip expensive lookups' use cases: a web crawler checking 'have I seen this URL?' or a storage engine checking 'could this SSTable contain the key?' can safely trust a negative and only pays an occasional wasted lookup on a false positive — all in a fraction of the memory an exact set would need.