@@ -1605,39 +1605,19 @@ mod verify {
1605
1605
}
1606
1606
}
1607
1607
1608
- macro_rules! generate_unchecked_mul_harness {
1609
- ( $type: ty, $method: ident, $harness_name: ident, $min: expr, $max: expr) => {
1610
- #[ kani:: proof_for_contract( $type:: $method) ]
1611
- pub fn $harness_name( ) {
1612
- let num1: $type = kani:: any( ) ;
1613
- let num2: $type = kani:: any( ) ;
1614
-
1615
- // Limit the values of num1 and num2 to the specified range for multiplication
1616
- kani:: assume( num1 >= $min && num1 <= $max) ;
1617
- kani:: assume( num2 >= $min && num2 <= $max) ;
1618
-
1619
- unsafe {
1620
- num1. $method( num2) ;
1621
- }
1622
- }
1623
- }
1624
- }
1625
-
1626
-
1627
1608
macro_rules! generate_unchecked_shift_harness {
1628
1609
( $type: ty, $method: ident, $harness_name: ident) => {
1629
1610
#[ kani:: proof_for_contract( $type:: $method) ]
1630
1611
pub fn $harness_name( ) {
1631
1612
let num1: $type = kani:: any:: <$type>( ) ;
1632
1613
let num2: u32 = kani:: any:: <u32 >( ) ;
1633
-
1614
+
1634
1615
unsafe {
1635
1616
num1. $method( num2) ;
1636
1617
}
1637
1618
}
1638
1619
}
1639
1620
}
1640
-
1641
1621
1642
1622
macro_rules! generate_unchecked_neg_harness {
1643
1623
( $type: ty, $method: ident, $harness_name: ident) => {
@@ -1674,54 +1654,4 @@ mod verify {
1674
1654
generate_unchecked_math_harness ! ( u64 , unchecked_add, checked_unchecked_add_u64) ;
1675
1655
generate_unchecked_math_harness ! ( u128 , unchecked_add, checked_unchecked_add_u128) ;
1676
1656
generate_unchecked_math_harness ! ( usize , unchecked_add, checked_unchecked_add_usize) ;
1677
-
1678
- // unchecked_mul proofs
1679
- //
1680
- // Target types:
1681
- // i{8,16,32,64,128, size} and u{8,16,32,64,128, size} -- 12 types in total
1682
- //
1683
- // Target contracts:
1684
- // #[requires(!self.overflowing_mul(rhs).1)]
1685
- //
1686
- // Target function:
1687
- // pub const unsafe fn unchecked_mul(self, rhs: Self) -> Self
1688
- // exponential state spaces for 32,64 and 128, hence provided limited range for verification.
1689
- generate_unchecked_math_harness ! ( i8 , unchecked_mul, checked_unchecked_mul_i8) ;
1690
- generate_unchecked_math_harness ! ( i16 , unchecked_mul, checked_unchecked_mul_i16) ;
1691
- generate_unchecked_mul_harness ! ( i32 , unchecked_mul, checked_unchecked_mul_i32, -10_000i32 , 10_000i32 ) ;
1692
- generate_unchecked_mul_harness ! ( i64 , unchecked_mul, checked_unchecked_mul_i64, -1_000i64 , 1_000i64 ) ;
1693
- generate_unchecked_mul_harness ! ( i128 , unchecked_mul, checked_unchecked_mul_i128, -1_000_000_000_000_000i128 , 1_000_000_000_000_000i128 ) ;
1694
- generate_unchecked_mul_harness ! ( isize , unchecked_mul, checked_unchecked_mul_isize, -100_000isize , 100_000isize ) ;
1695
- generate_unchecked_math_harness ! ( u8 , unchecked_mul, checked_unchecked_mul_u8) ;
1696
- generate_unchecked_math_harness ! ( u16 , unchecked_mul, checked_unchecked_mul_u16) ;
1697
- generate_unchecked_mul_harness ! ( u32 , unchecked_mul, checked_unchecked_mul_u32, 0u32 , 20_000u32 ) ;
1698
- generate_unchecked_mul_harness ! ( u64 , unchecked_mul, checked_unchecked_mul_u64, 0u64 , 2_000u64 ) ;
1699
- generate_unchecked_mul_harness ! ( u128 , unchecked_mul, checked_unchecked_mul_u128, 0u128 , 1_000_000_000_000_000u128 ) ;
1700
- generate_unchecked_mul_harness ! ( usize , unchecked_mul, checked_unchecked_mul_usize, 0usize , 100_000usize ) ;
1701
-
1702
-
1703
- // unchecked_shr proofs
1704
- //
1705
- // Target types:
1706
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
1707
- //
1708
- // Target contracts:
1709
- // #[requires(rhs < <$ActualT>::BITS)]
1710
- //
1711
- // Target function:
1712
- // pub const unsafe fn unchecked_shr(self, rhs: u32) -> Self
1713
- generate_unchecked_shift_harness ! ( i8 , unchecked_shr, checked_unchecked_shr_i8) ;
1714
- generate_unchecked_shift_harness ! ( i16 , unchecked_shr, checked_unchecked_shr_i16) ;
1715
- generate_unchecked_shift_harness ! ( i32 , unchecked_shr, checked_unchecked_shr_i32) ;
1716
- generate_unchecked_shift_harness ! ( i64 , unchecked_shr, checked_unchecked_shr_i64) ;
1717
- generate_unchecked_shift_harness ! ( i128 , unchecked_shr, checked_unchecked_shr_i128) ;
1718
- generate_unchecked_shift_harness ! ( isize , unchecked_shr, checked_unchecked_shr_isize) ;
1719
- generate_unchecked_shift_harness ! ( u8 , unchecked_shr, checked_unchecked_shr_u8) ;
1720
- generate_unchecked_shift_harness ! ( u16 , unchecked_shr, checked_unchecked_shr_u16) ;
1721
- generate_unchecked_shift_harness ! ( u32 , unchecked_shr, checked_unchecked_shr_u32) ;
1722
- generate_unchecked_shift_harness ! ( u64 , unchecked_shr, checked_unchecked_shr_u64) ;
1723
- generate_unchecked_shift_harness ! ( u128 , unchecked_shr, checked_unchecked_shr_u128) ;
1724
- generate_unchecked_shift_harness ! ( usize , unchecked_shr, checked_unchecked_shr_usize) ;
1725
- }
1726
- }
1727
1657
}
0 commit comments