Function hash_set_get_ensures
Source pub open spec fn hash_set_get_ensures<Key: Borrow<Q> + Hash + Eq, S: BuildHasher, A: Allocator, Q: Hash + Eq + ?Sized>(
m: &HashSet<Key, S, A>,
k: &Q,
result: Option<&Key>,
) -> bool
Expand description
{
({
&&& obeys_key_model::<Key>()
&&& obeys_key_model::<Q>()
&&& builds_valid_hashers::<S>()
&&& <Key as BorrowSpec<Q>>::obeys_borrow_spec()
&&& hash_set_inv(m)
})
==> {
match result {
Some(key) => (
&&& m@.contains(*key)
&&& k.eq_spec(<Key as BorrowSpec<Q>>::borrow_spec(key))
),
None => {
forall |key: Key| (
#[trigger] m@.contains(key)
==> !k.eq_spec(<Key as BorrowSpec<Q>>::borrow_spec(&key))
)
}
}
}
}