1use vstd::atomic::PermissionU64;
2use vstd::cell::pcell::{PCell, PointsTo};
3use vstd::prelude::*;
4
5verus! {
6
7#[verifier(external_body)]
10pub proof fn arbitrary_cell_pointsto<T>() -> (tracked res: vstd::cell::pcell::PointsTo<T>) {
11 unimplemented!();
12}
13
14pub axiom fn axiom_permission_u64_ext_eq(p1: PermissionU64, p2: PermissionU64)
19 requires
20 p1.id() == p2.id(),
21 p1.value() == p2.value(),
22 ensures
23 p1 == p2,
24;
25
26#[verifier::external_body]
29pub exec fn pcell_borrow_mut<'a, T>(cell: &'a PCell<T>, perm: &'a mut Tracked<PointsTo<T>>) -> (res:
30 &'a mut T)
31 requires
32 cell.id() == perm.id(),
33 ensures
34 *final(res) == *final(perm).value(),
35 final(perm).id() == old(perm).id(),
36 no_unwind
37{
38 unimplemented!();
40}
41
42}