3535 * in the range (-MLKEM_Q+1,...,MLKEM_Q-1). */
3636MLK_STATIC_TESTABLE void mlk_poly_compress_d4_c (
3737 uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D4 ], const mlk_poly * a )
38+ __contract__ (
39+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D4 ))
40+ requires (memory_no_alias (a , sizeof (mlk_poly )))
41+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
42+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D4 ))
43+ )
3844{
3945 unsigned i ;
4046 mlk_assert_bound (a , MLKEM_N , 0 , MLKEM_Q );
@@ -63,6 +69,12 @@ MLK_STATIC_TESTABLE void mlk_poly_compress_d4_c(
6369MLK_INTERNAL_API
6470void mlk_poly_compress_d4 (uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D4 ],
6571 const mlk_poly * a )
72+ __contract__ (
73+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D4 ))
74+ requires (memory_no_alias (a , sizeof (mlk_poly )))
75+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
76+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D4 ))
77+ )
6678{
6779#if defined(MLK_USE_NATIVE_POLY_COMPRESS_D4 )
6880 int ret ;
@@ -85,6 +97,12 @@ void mlk_poly_compress_d4(uint8_t r[MLKEM_POLYCOMPRESSEDBYTES_D4],
8597 * in the range (-MLKEM_Q+1,...,MLKEM_Q-1). */
8698MLK_STATIC_TESTABLE void mlk_poly_compress_d10_c (
8799 uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D10 ], const mlk_poly * a )
100+ __contract__ (
101+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D10 ))
102+ requires (memory_no_alias (a , sizeof (mlk_poly )))
103+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
104+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D10 ))
105+ )
88106{
89107 unsigned j ;
90108 mlk_assert_bound (a , MLKEM_N , 0 , MLKEM_Q );
@@ -116,6 +134,12 @@ MLK_STATIC_TESTABLE void mlk_poly_compress_d10_c(
116134MLK_INTERNAL_API
117135void mlk_poly_compress_d10 (uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D10 ],
118136 const mlk_poly * a )
137+ __contract__ (
138+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D10 ))
139+ requires (memory_no_alias (a , sizeof (mlk_poly )))
140+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
141+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D10 ))
142+ )
119143{
120144#if defined(MLK_USE_NATIVE_POLY_COMPRESS_D10 )
121145 int ret ;
@@ -248,6 +272,12 @@ __contract__(
248272 * in the range (-MLKEM_Q+1,...,MLKEM_Q-1). */
249273MLK_STATIC_TESTABLE void mlk_poly_compress_d5_c (
250274 uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D5 ], const mlk_poly * a )
275+ __contract__ (
276+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D5 ))
277+ requires (memory_no_alias (a , sizeof (mlk_poly )))
278+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
279+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D5 ))
280+ )
251281{
252282 unsigned i ;
253283 mlk_assert_bound (a , MLKEM_N , 0 , MLKEM_Q );
@@ -276,6 +306,12 @@ MLK_STATIC_TESTABLE void mlk_poly_compress_d5_c(
276306MLK_INTERNAL_API
277307void mlk_poly_compress_d5 (uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D5 ],
278308 const mlk_poly * a )
309+ __contract__ (
310+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D5 ))
311+ requires (memory_no_alias (a , sizeof (mlk_poly )))
312+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
313+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D5 ))
314+ )
279315{
280316#if defined(MLK_USE_NATIVE_POLY_COMPRESS_D5 )
281317 int ret ;
@@ -298,6 +334,12 @@ void mlk_poly_compress_d5(uint8_t r[MLKEM_POLYCOMPRESSEDBYTES_D5],
298334 * in the range (-MLKEM_Q+1,...,MLKEM_Q-1). */
299335MLK_STATIC_TESTABLE void mlk_poly_compress_d11_c (
300336 uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D11 ], const mlk_poly * a )
337+ __contract__ (
338+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D11 ))
339+ requires (memory_no_alias (a , sizeof (mlk_poly )))
340+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
341+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D11 ))
342+ )
301343{
302344 unsigned j ;
303345 mlk_assert_bound (a , MLKEM_N , 0 , MLKEM_Q );
@@ -336,6 +378,12 @@ MLK_STATIC_TESTABLE void mlk_poly_compress_d11_c(
336378MLK_INTERNAL_API
337379void mlk_poly_compress_d11 (uint8_t r [MLKEM_POLYCOMPRESSEDBYTES_D11 ],
338380 const mlk_poly * a )
381+ __contract__ (
382+ requires (memory_no_alias (r , MLKEM_POLYCOMPRESSEDBYTES_D11 ))
383+ requires (memory_no_alias (a , sizeof (mlk_poly )))
384+ requires (array_bound (a - > coeffs , 0 , MLKEM_N , 0 , MLKEM_Q ))
385+ assigns (memory_slice (r , MLKEM_POLYCOMPRESSEDBYTES_D11 ))
386+ )
339387{
340388#if defined(MLK_USE_NATIVE_POLY_COMPRESS_D11 )
341389 int ret ;
0 commit comments