File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -182,6 +182,23 @@ test_verify_one_file! {
182182 } => Ok ( ( ) )
183183}
184184
185+ test_verify_one_file ! {
186+ #[ test] unsigned_saturating_mul verus_code! {
187+ use vstd:: * ;
188+
189+ fn test( ) {
190+ let i = 10u64 . saturating_mul( 20 ) ;
191+ assert( i == 200 ) ;
192+
193+ let i = 0u64 . saturating_mul( u64 :: MAX ) ;
194+ assert( i == 0 ) ;
195+
196+ let i = u64 :: MAX . saturating_mul( 2 ) ;
197+ assert( i == u64 :: MAX ) ;
198+ }
199+ } => Ok ( ( ) )
200+ }
201+
185202test_verify_one_file ! {
186203 #[ test] signed_wrapping_mul verus_code! {
187204 use vstd:: * ;
Original file line number Diff line number Diff line change @@ -259,6 +259,17 @@ macro_rules! num_specs {
259259 }
260260 ) ;
261261
262+ #[ verifier:: allow_in_spec]
263+ #[ cfg( not( verus_verify_core) ) ]
264+ pub assume_specification[ <$uN>:: saturating_mul] ( x: $uN, y: $uN) -> $uN
265+ returns (
266+ if x * y > <$uN>:: MAX {
267+ <$uN>:: MAX
268+ } else {
269+ ( x * y) as $uN
270+ }
271+ ) ;
272+
262273 #[ verifier:: allow_in_spec]
263274 #[ cfg( not( verus_verify_core) ) ]
264275 pub assume_specification[ <$uN>:: is_multiple_of] ( x: $uN, y: $uN) -> bool
You can’t perform that action at this time.
0 commit comments