pub proof fn tracked_borrow_mut<K, V>(tracked m: &mut Map<K, V>, key: K) -> tracked v : &mut VExpand description
requires
old(m).dom().contains(key),ensures*v == old(m).index(key),final(m).dom() == old(m).dom(),forall |k: K| k != key ==> #[trigger] final(m).index(k) == old(m).index(k),final(m).index(key) == *final(v),Borrows an entry from a tracked Map mutably.
Returns &mut v where v = old(m)[key]. While the returned borrow is
live, m is exclusively held; at its end, m[key] equals whatever v
ended up being, and all other entries are unchanged.
This is the mutable counterpart to Map::tracked_borrow and mirrors
PointsTo::borrow_mut_inner_perms in structure.