@@ -1677,34 +1677,6 @@ mod verify {
16771677 }
16781678 }
16791679
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-
17081680 /// A macro to generate Kani proof harnesses for the `carrying_mul` method,
17091681 ///
17101682 /// The macro creates multiple harnesses for different ranges of input values,
@@ -1806,47 +1778,6 @@ mod verify {
18061778 }
18071779 }
18081780
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-
18501781 // `unchecked_mul` proofs
18511782 //
18521783 // Target types:
@@ -2004,80 +1935,6 @@ mod verify {
20041935 usize :: MAX
20051936 ) ;
20061937
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-
20811938 // Part_2 `carrying_mul` proofs
20821939 //
20831940 // ====================== u8 Harnesses ======================
@@ -2168,55 +2025,6 @@ mod verify {
21682025 ( u64 :: MAX / 2 ) + 10u64
21692026 ) ;
21702027
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-
22202028 // `f{16,32,64,128}::to_int_unchecked` proofs
22212029 //
22222030 // Target integer types:
0 commit comments