Skip to main content

btree_set_insert_ensures

Function btree_set_insert_ensures 

Source
pub open spec fn btree_set_insert_ensures<Key: Ord, A: Allocator + Clone>(
    old_m: &BTreeSet<Key, A>,
    final_m: &BTreeSet<Key, A>,
    k: Key,
    result: bool,
) -> bool
Expand description
{
    obeys_cmp::<Key>() && btree_set_inv(old_m)
        ==> {
            &&& btree_set_inv(final_m)
            &&& if result {
                &&& forall |stored_key: Key| (
                    #[trigger] old_m@.contains(stored_key)
                        ==> !(k.cmp_spec(&stored_key) is Equal)
                )
                &&& final_m@ == old_m@.insert(k)

            } else {
                &&& exists |stored_key: Key| (
                    #[trigger] old_m@.contains(stored_key)
                        && k.cmp_spec(&stored_key) is Equal
                )
                &&& final_m@ == old_m@

            }

        }
}