@@ -1677,34 +1677,6 @@ mod verify {
1677
1677
}
1678
1678
}
1679
1679
1680
- // Verify `unchecked_{shl, shr}`
1681
- macro_rules! generate_unchecked_shift_harness {
1682
- ( $type: ty, $method: ident, $harness_name: ident) => {
1683
- #[ kani:: proof_for_contract( $type:: $method) ]
1684
- pub fn $harness_name( ) {
1685
- let num1: $type = kani:: any:: <$type>( ) ;
1686
- let num2: u32 = kani:: any:: <u32 >( ) ;
1687
-
1688
- unsafe {
1689
- num1. $method( num2) ;
1690
- }
1691
- }
1692
- } ;
1693
- }
1694
-
1695
- macro_rules! generate_unchecked_neg_harness {
1696
- ( $type: ty, $harness_name: ident) => {
1697
- #[ kani:: proof_for_contract( $type:: unchecked_neg) ]
1698
- pub fn $harness_name( ) {
1699
- let num1: $type = kani:: any:: <$type>( ) ;
1700
-
1701
- unsafe {
1702
- num1. unchecked_neg( ) ;
1703
- }
1704
- }
1705
- } ;
1706
- }
1707
-
1708
1680
/// A macro to generate Kani proof harnesses for the `carrying_mul` method,
1709
1681
///
1710
1682
/// The macro creates multiple harnesses for different ranges of input values,
@@ -1806,47 +1778,6 @@ mod verify {
1806
1778
}
1807
1779
}
1808
1780
1809
- // `unchecked_add` proofs
1810
- //
1811
- // Target types:
1812
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
1813
- //
1814
- // Target contracts:
1815
- // Preconditions: No overflow should occur
1816
- // #[requires(!self.overflowing_add(rhs).1)]
1817
- //
1818
- // Target function:
1819
- // pub const unsafe fn unchecked_add(self, rhs: Self) -> Self
1820
- generate_unchecked_math_harness ! ( i8 , unchecked_add, checked_unchecked_add_i8) ;
1821
- generate_unchecked_math_harness ! ( i16 , unchecked_add, checked_unchecked_add_i16) ;
1822
- generate_unchecked_math_harness ! ( i32 , unchecked_add, checked_unchecked_add_i32) ;
1823
- generate_unchecked_math_harness ! ( i64 , unchecked_add, checked_unchecked_add_i64) ;
1824
- generate_unchecked_math_harness ! ( i128 , unchecked_add, checked_unchecked_add_i128) ;
1825
- generate_unchecked_math_harness ! ( isize , unchecked_add, checked_unchecked_add_isize) ;
1826
- generate_unchecked_math_harness ! ( u8 , unchecked_add, checked_unchecked_add_u8) ;
1827
- generate_unchecked_math_harness ! ( u16 , unchecked_add, checked_unchecked_add_u16) ;
1828
- generate_unchecked_math_harness ! ( u32 , unchecked_add, checked_unchecked_add_u32) ;
1829
- generate_unchecked_math_harness ! ( u64 , unchecked_add, checked_unchecked_add_u64) ;
1830
- generate_unchecked_math_harness ! ( u128 , unchecked_add, checked_unchecked_add_u128) ;
1831
- generate_unchecked_math_harness ! ( usize , unchecked_add, checked_unchecked_add_usize) ;
1832
-
1833
- // `unchecked_neg` proofs
1834
- //
1835
- // Target types:
1836
- // i{8,16,32,64,128,size} -- 6 types in total
1837
- //
1838
- // Target contracts:
1839
- // #[requires(self != $SelfT::MIN)]
1840
- //
1841
- // Target function:
1842
- // pub const unsafe fn unchecked_neg(self) -> Self
1843
- generate_unchecked_neg_harness ! ( i8 , checked_unchecked_neg_i8) ;
1844
- generate_unchecked_neg_harness ! ( i16 , checked_unchecked_neg_i16) ;
1845
- generate_unchecked_neg_harness ! ( i32 , checked_unchecked_neg_i32) ;
1846
- generate_unchecked_neg_harness ! ( i64 , checked_unchecked_neg_i64) ;
1847
- generate_unchecked_neg_harness ! ( i128 , checked_unchecked_neg_i128) ;
1848
- generate_unchecked_neg_harness ! ( isize , checked_unchecked_neg_isize) ;
1849
-
1850
1781
// `unchecked_mul` proofs
1851
1782
//
1852
1783
// Target types:
@@ -2004,80 +1935,6 @@ mod verify {
2004
1935
usize :: MAX
2005
1936
) ;
2006
1937
2007
- // unchecked_shr proofs
2008
- //
2009
- // Target types:
2010
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
2011
- //
2012
- // Target contracts:
2013
- // #[requires(rhs < <$ActualT>::BITS)]
2014
- //
2015
- // Target function:
2016
- // pub const unsafe fn unchecked_shr(self, rhs: u32) -> Self
2017
- generate_unchecked_shift_harness ! ( i8 , unchecked_shr, checked_unchecked_shr_i8) ;
2018
- generate_unchecked_shift_harness ! ( i16 , unchecked_shr, checked_unchecked_shr_i16) ;
2019
- generate_unchecked_shift_harness ! ( i32 , unchecked_shr, checked_unchecked_shr_i32) ;
2020
- generate_unchecked_shift_harness ! ( i64 , unchecked_shr, checked_unchecked_shr_i64) ;
2021
- generate_unchecked_shift_harness ! ( i128 , unchecked_shr, checked_unchecked_shr_i128) ;
2022
- generate_unchecked_shift_harness ! ( isize , unchecked_shr, checked_unchecked_shr_isize) ;
2023
- generate_unchecked_shift_harness ! ( u8 , unchecked_shr, checked_unchecked_shr_u8) ;
2024
- generate_unchecked_shift_harness ! ( u16 , unchecked_shr, checked_unchecked_shr_u16) ;
2025
- generate_unchecked_shift_harness ! ( u32 , unchecked_shr, checked_unchecked_shr_u32) ;
2026
- generate_unchecked_shift_harness ! ( u64 , unchecked_shr, checked_unchecked_shr_u64) ;
2027
- generate_unchecked_shift_harness ! ( u128 , unchecked_shr, checked_unchecked_shr_u128) ;
2028
- generate_unchecked_shift_harness ! ( usize , unchecked_shr, checked_unchecked_shr_usize) ;
2029
-
2030
- // `unchecked_shl` proofs
2031
- //
2032
- // Target types:
2033
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
2034
- //
2035
- // Target contracts:
2036
- // #[requires(shift < Self::BITS)]
2037
- //
2038
- // Target function:
2039
- // pub const unsafe fn unchecked_shl(self, shift: u32) -> Self
2040
- //
2041
- // This function performs an unchecked bitwise left shift operation.
2042
- generate_unchecked_shift_harness ! ( i8 , unchecked_shl, checked_unchecked_shl_i8) ;
2043
- generate_unchecked_shift_harness ! ( i16 , unchecked_shl, checked_unchecked_shl_i16) ;
2044
- generate_unchecked_shift_harness ! ( i32 , unchecked_shl, checked_unchecked_shl_i32) ;
2045
- generate_unchecked_shift_harness ! ( i64 , unchecked_shl, checked_unchecked_shl_i64) ;
2046
- generate_unchecked_shift_harness ! ( i128 , unchecked_shl, checked_unchecked_shl_i128) ;
2047
- generate_unchecked_shift_harness ! ( isize , unchecked_shl, checked_unchecked_shl_isize) ;
2048
- generate_unchecked_shift_harness ! ( u8 , unchecked_shl, checked_unchecked_shl_u8) ;
2049
- generate_unchecked_shift_harness ! ( u16 , unchecked_shl, checked_unchecked_shl_u16) ;
2050
- generate_unchecked_shift_harness ! ( u32 , unchecked_shl, checked_unchecked_shl_u32) ;
2051
- generate_unchecked_shift_harness ! ( u64 , unchecked_shl, checked_unchecked_shl_u64) ;
2052
- generate_unchecked_shift_harness ! ( u128 , unchecked_shl, checked_unchecked_shl_u128) ;
2053
- generate_unchecked_shift_harness ! ( usize , unchecked_shl, checked_unchecked_shl_usize) ;
2054
-
2055
- // `unchecked_sub` proofs
2056
- //
2057
- // Target types:
2058
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
2059
- //
2060
- // Target contracts:
2061
- // Preconditions: No overflow should occur
2062
- // #[requires(!self.overflowing_sub(rhs).1)]
2063
- //
2064
- // Target function:
2065
- // pub const unsafe fn unchecked_sub(self, rhs: Self) -> Self
2066
- //
2067
- // This function performs an unchecked subtraction operation.
2068
- generate_unchecked_math_harness ! ( i8 , unchecked_sub, checked_unchecked_sub_i8) ;
2069
- generate_unchecked_math_harness ! ( i16 , unchecked_sub, checked_unchecked_sub_i16) ;
2070
- generate_unchecked_math_harness ! ( i32 , unchecked_sub, checked_unchecked_sub_i32) ;
2071
- generate_unchecked_math_harness ! ( i64 , unchecked_sub, checked_unchecked_sub_i64) ;
2072
- generate_unchecked_math_harness ! ( i128 , unchecked_sub, checked_unchecked_sub_i128) ;
2073
- generate_unchecked_math_harness ! ( isize , unchecked_sub, checked_unchecked_sub_isize) ;
2074
- generate_unchecked_math_harness ! ( u8 , unchecked_sub, checked_unchecked_sub_u8) ;
2075
- generate_unchecked_math_harness ! ( u16 , unchecked_sub, checked_unchecked_sub_u16) ;
2076
- generate_unchecked_math_harness ! ( u32 , unchecked_sub, checked_unchecked_sub_u32) ;
2077
- generate_unchecked_math_harness ! ( u64 , unchecked_sub, checked_unchecked_sub_u64) ;
2078
- generate_unchecked_math_harness ! ( u128 , unchecked_sub, checked_unchecked_sub_u128) ;
2079
- generate_unchecked_math_harness ! ( usize , unchecked_sub, checked_unchecked_sub_usize) ;
2080
-
2081
1938
// Part_2 `carrying_mul` proofs
2082
1939
//
2083
1940
// ====================== u8 Harnesses ======================
@@ -2168,55 +2025,6 @@ mod verify {
2168
2025
( u64 :: MAX / 2 ) + 10u64
2169
2026
) ;
2170
2027
2171
- // Part_2 `wrapping_shl` proofs
2172
- //
2173
- // Target types:
2174
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
2175
- //
2176
- // Target contracts:
2177
- // #[ensures(|result| *result == self << (rhs & (Self::BITS - 1)))]
2178
- //
2179
- // Target function:
2180
- // pub const fn wrapping_shl(self, rhs: u32) -> Self
2181
- //
2182
- // This function performs an panic-free bitwise left shift operation.
2183
- generate_wrapping_shift_harness ! ( i8 , wrapping_shl, checked_wrapping_shl_i8) ;
2184
- generate_wrapping_shift_harness ! ( i16 , wrapping_shl, checked_wrapping_shl_i16) ;
2185
- generate_wrapping_shift_harness ! ( i32 , wrapping_shl, checked_wrapping_shl_i32) ;
2186
- generate_wrapping_shift_harness ! ( i64 , wrapping_shl, checked_wrapping_shl_i64) ;
2187
- generate_wrapping_shift_harness ! ( i128 , wrapping_shl, checked_wrapping_shl_i128) ;
2188
- generate_wrapping_shift_harness ! ( isize , wrapping_shl, checked_wrapping_shl_isize) ;
2189
- generate_wrapping_shift_harness ! ( u8 , wrapping_shl, checked_wrapping_shl_u8) ;
2190
- generate_wrapping_shift_harness ! ( u16 , wrapping_shl, checked_wrapping_shl_u16) ;
2191
- generate_wrapping_shift_harness ! ( u32 , wrapping_shl, checked_wrapping_shl_u32) ;
2192
- generate_wrapping_shift_harness ! ( u64 , wrapping_shl, checked_wrapping_shl_u64) ;
2193
- generate_wrapping_shift_harness ! ( u128 , wrapping_shl, checked_wrapping_shl_u128) ;
2194
- generate_wrapping_shift_harness ! ( usize , wrapping_shl, checked_wrapping_shl_usize) ;
2195
-
2196
- // Part_2 `wrapping_shr` proofs
2197
- //
2198
- // Target types:
2199
- // i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
2200
- //
2201
- // Target contracts:
2202
- // #[ensures(|result| *result == self >> (rhs & (Self::BITS - 1)))]
2203
- // Target function:
2204
- // pub const fn wrapping_shr(self, rhs: u32) -> Self {
2205
- //
2206
- // This function performs an panic-free bitwise right shift operation.
2207
- generate_wrapping_shift_harness ! ( i8 , wrapping_shr, checked_wrapping_shr_i8) ;
2208
- generate_wrapping_shift_harness ! ( i16 , wrapping_shr, checked_wrapping_shr_i16) ;
2209
- generate_wrapping_shift_harness ! ( i32 , wrapping_shr, checked_wrapping_shr_i32) ;
2210
- generate_wrapping_shift_harness ! ( i64 , wrapping_shr, checked_wrapping_shr_i64) ;
2211
- generate_wrapping_shift_harness ! ( i128 , wrapping_shr, checked_wrapping_shr_i128) ;
2212
- generate_wrapping_shift_harness ! ( isize , wrapping_shr, checked_wrapping_shr_isize) ;
2213
- generate_wrapping_shift_harness ! ( u8 , wrapping_shr, checked_wrapping_shr_u8) ;
2214
- generate_wrapping_shift_harness ! ( u16 , wrapping_shr, checked_wrapping_shr_u16) ;
2215
- generate_wrapping_shift_harness ! ( u32 , wrapping_shr, checked_wrapping_shr_u32) ;
2216
- generate_wrapping_shift_harness ! ( u64 , wrapping_shr, checked_wrapping_shr_u64) ;
2217
- generate_wrapping_shift_harness ! ( u128 , wrapping_shr, checked_wrapping_shr_u128) ;
2218
- generate_wrapping_shift_harness ! ( usize , wrapping_shr, checked_wrapping_shr_usize) ;
2219
-
2220
2028
// `f{16,32,64,128}::to_int_unchecked` proofs
2221
2029
//
2222
2030
// Target integer types:
0 commit comments