@@ -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) - 1 int) ;
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
13311296proof fn lemma_consts_properties_value( prev: usize )
0 commit comments