Skip to content

Commit 6e8fc04

Browse files
committed
Simplify proof
1 parent e10fb39 commit 6e8fc04

1 file changed

Lines changed: 12 additions & 47 deletions

File tree

ostd/src/sync/rwlock.rs

Lines changed: 12 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,24 +1050,6 @@ impl<'a, T /*: ?Sized*/, G: SpinGuardian> RwLockUpgradeableGuard<'a, T, G>
10501050
ghost g => {
10511051
lemma_consts_properties_prev_next(prev, next);
10521052
if res is Ok {
1053-
assert(prev == UPGRADEABLE_READER | BEING_UPGRADED);
1054-
assert(next == WRITER | UPGRADEABLE_READER);
1055-
assert((prev & WRITER) == 0) by (bit_vector)
1056-
requires
1057-
prev == UPGRADEABLE_READER | BEING_UPGRADED,
1058-
;
1059-
assert((prev & READER_MASK) == 0) by (bit_vector)
1060-
requires
1061-
prev == UPGRADEABLE_READER | BEING_UPGRADED,
1062-
;
1063-
assert((prev & MAX_READER_MASK) == 0) by (bit_vector)
1064-
requires
1065-
prev == UPGRADEABLE_READER | BEING_UPGRADED,
1066-
;
1067-
assert((prev & MAX_READER) == 0) by (bit_vector)
1068-
requires
1069-
prev == UPGRADEABLE_READER | BEING_UPGRADED,
1070-
;
10711053
if g.upreader_guard_token.is_full() {
10721054
let tracked token = guard_token.tracked_unwrap();
10731055
g.upreader_guard_token.combine(token);
@@ -1088,39 +1070,11 @@ impl<'a, T /*: ?Sized*/, G: SpinGuardian> RwLockUpgradeableGuard<'a, T, G>
10881070
if g.cell_perm is Right {
10891071
assert(false);
10901072
}
1091-
assert(g.cell_perm->Left_0.frac() == (V_MAX_PERM_FRACS as int) - 1int);
10921073
let tracked mut rem = g.cell_perm.tracked_take_left();
10931074
rem.combine(guard_perm.tracked_unwrap());
1094-
assert(rem.frac() == V_MAX_PERM_FRACS as int);
10951075
let tracked (full_perm, empty) = rem.take_resource();
1096-
assert(full_perm.id() == inner.cell_id());
1097-
assert(empty.id() == inner.cell_perm_id());
10981076
write_perm = Some(full_perm);
10991077
g.cell_perm = Sum::new_right(empty);
1100-
assert(g.cell_perm is Right);
1101-
assert(g.upreader_guard_token.is_full());
1102-
assert(g.upgrade_retract_token.is_empty());
1103-
assert((next & WRITER) != 0) by (bit_vector)
1104-
requires
1105-
next == WRITER | UPGRADEABLE_READER,
1106-
;
1107-
assert((next & UPGRADEABLE_READER) != 0) by (bit_vector)
1108-
requires
1109-
next == WRITER | UPGRADEABLE_READER,
1110-
;
1111-
assert((next & READER_MASK) == 0) by (bit_vector)
1112-
requires
1113-
next == WRITER | UPGRADEABLE_READER,
1114-
;
1115-
assert((next & MAX_READER_MASK) == 0) by (bit_vector)
1116-
requires
1117-
next == WRITER | UPGRADEABLE_READER,
1118-
;
1119-
assert((next & MAX_READER) == 0) by (bit_vector)
1120-
requires
1121-
next == WRITER | UPGRADEABLE_READER,
1122-
;
1123-
assert(g.read_retract_token.frac() == V_MAX_READ_RETRACT_FRACS);
11241078
} else {
11251079
err_guard_perm = guard_perm;
11261080
err_guard_token = guard_token;
@@ -1289,7 +1243,12 @@ proof fn lemma_consts_properties()
12891243
(UPGRADEABLE_READER | BEING_UPGRADED) & READER_MASK == 0,
12901244
(UPGRADEABLE_READER | BEING_UPGRADED) & MAX_READER_MASK == 0,
12911245
(UPGRADEABLE_READER | BEING_UPGRADED) & MAX_READER == 0,
1292-
1246+
(WRITER | UPGRADEABLE_READER) & WRITER == WRITER,
1247+
(WRITER | UPGRADEABLE_READER) & UPGRADEABLE_READER == UPGRADEABLE_READER,
1248+
(WRITER | UPGRADEABLE_READER) & BEING_UPGRADED == 0,
1249+
(WRITER | UPGRADEABLE_READER) & READER_MASK == 0,
1250+
(WRITER | UPGRADEABLE_READER) & MAX_READER_MASK == 0,
1251+
(WRITER | UPGRADEABLE_READER) & MAX_READER == 0,
12931252
{
12941253
assert(0 & WRITER == 0) by (compute_only);
12951254
assert(0 & UPGRADEABLE_READER == 0) by (compute_only);
@@ -1326,6 +1285,12 @@ proof fn lemma_consts_properties()
13261285
assert((UPGRADEABLE_READER | BEING_UPGRADED) & READER_MASK == 0) by (compute_only);
13271286
assert((UPGRADEABLE_READER | BEING_UPGRADED) & MAX_READER_MASK == 0) by (compute_only);
13281287
assert((UPGRADEABLE_READER | BEING_UPGRADED) & MAX_READER == 0) by (compute_only);
1288+
assert((WRITER | UPGRADEABLE_READER) & WRITER == WRITER) by (compute_only);
1289+
assert((WRITER | UPGRADEABLE_READER) & UPGRADEABLE_READER == UPGRADEABLE_READER) by (compute_only);
1290+
assert((WRITER | UPGRADEABLE_READER) & BEING_UPGRADED == 0) by (compute_only);
1291+
assert((WRITER | UPGRADEABLE_READER) & READER_MASK == 0) by (compute_only);
1292+
assert((WRITER | UPGRADEABLE_READER) & MAX_READER_MASK == 0) by (compute_only);
1293+
assert((WRITER | UPGRADEABLE_READER) & MAX_READER == 0) by (compute_only);
13291294
}
13301295

13311296
proof fn lemma_consts_properties_value(prev: usize)

0 commit comments

Comments
 (0)