Skip to content

HOL-Light: Align various proofs with other proofs - #1404

Merged
mkannwischer merged 3 commits into
mainfrom
mjk/hol-light-safe-decl-shape
Aug 31, 2026
Merged

mkannwischer merged 3 commits into
mainfrom
mjk/hol-light-safe-decl-shape

Conversation

@mkannwischer

@mkannwischer mkannwischer commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Preparation for #1009. See individual commit messages.

These theorems were assembled by rewriting the result of prove, rather than
being proved outright. Align with the other proofs, to enable
#1009

Statements are unchanged.

Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
The six subroutine-level theorems in the rej_uniform proofs were bound to the
result of a let-block or of ADD_IBT_RULE rather than to prove diverging
from what we do in mlkem-native. Align them to enable
#1009.

Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
Several proofs carried prefixes that had drifted from their filenames, e.g.
POLY_USE_HINT_32_AARCH64_ASM_CORRECT in mldsa_poly_use_hint_32_aarch64_asm.ml
and MLDSA_DECOMPOSE32_CORRECT in mldsa_poly_decompose_32_avx2_asm.ml.

Preparation for #1009, whose theorem check derives the expected names from the
filename.

Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
@mkannwischer mkannwischer changed the title HOL-Light: State x86_64 safety specs directly HOL-Light: Align various proofs with other proofs Aug 30, 2026
@oqs-bot

oqs-bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

CBMC Results (ML-DSA-65, REDUCE-RAM)

⚠️ Attention Required

Proof Status Current Previous Change
compute_pack_t0_t1 ⚠️ 34s 7s +386%
mld_attempt_signature_generation ⚠️ 156s 31s +403%
sign_keypair_internal ⚠️ 27s 3s +800%
sign_pk_from_sk ⚠️ 58s 5s +1060%
sign_verify_internal ⚠️ 189s 71s +166%
Full Results (210 proofs)
Proof Status Current Previous Change
**TOTAL** ✅ 1436s 1482s -3.1%
sign_verify_internal ⚠️ 189s 71s +166%
mld_attempt_signature_generation ⚠️ 156s 31s +403%
polyvec_matrix_pointwise_montgomery_yvec ✅ 141s 201s -30%
poly_pointwise_montgomery_c ✅ 68s 116s -41%
mld_invntt_layer ✅ 60s 108s -44%
sign_pk_from_sk ⚠️ 58s 5s +1060%
polyvecl_chknorm ✅ 54s 43s +26%
compute_pack_t0_t1 ⚠️ 34s 7s +386%
sign_keypair_internal ⚠️ 27s 3s +800%
fqmul ✅ 25s 40s -38%
mld_ntt_layer ✅ 22s 43s -49%
sign_signature_internal ✅ 13s 6s +117%
keccakf1600x4_permute_native ✅ 12s 22s -45%
mld_ntt_butterfly_block ✅ 12s 25s -52%
rej_uniform_c ✅ 12s 16s -25%
sig_unpack_hints ✅ 12s 1s +1100%
rej_uniform ✅ 11s 7s +57%
polyt0_unpack ✅ 10s 13s -23%
poly_ntt_c ✅ 9s 22s -59%
rej_uniform_native_x86_64 ✅ 9s - new
poly_uniform_eta_4x ✅ 8s 13s -38%
polyveck_decompose ✅ 8s 14s -43%
keccak_absorb_once_x4 ✅ 6s 10s -40%
mld_check_pct ✅ 6s 12s -50%
poly_chknorm_c ✅ 6s 13s -54%
poly_invntt_tomont_c ✅ 6s 10s -40%
keccak_absorb ✅ 5s 3s +67%
poly_uniform_gamma1 ✅ 5s 3s +67%
polyeta_unpack ✅ 5s 4s +25%
polyvecl_ntt ✅ 5s 7s -29%
polyw1_pack_32 ✅ 5s 2s +150%
sign_keypair ✅ 5s 4s +25%
sign_signature ✅ 5s 5s +0%
sign_verify_pre_hash_internal ✅ 5s 5s +0%
keccak_f1600_x1_native_aarch64 ✅ 4s 2s +100%
keccakf1600x4_extract_bytes_native ✅ 4s 1s +300%
keccakf1600x4_xor_bytes_native ✅ 4s 2s +100%
mld_compute_pack_z ✅ 4s 5s -20%
pack_sk_rho_key_tr_s2 ✅ 4s 2s +100%
pack_sk_s1 ✅ 4s 3s +33%
pointwise_acc_native_aarch64 ✅ 4s 6s -33%
pointwise_acc_native_x86_64 ✅ 4s 5s -20%
poly_add ✅ 4s 7s -43%
poly_caddq_native_aarch64 ✅ 4s 2s +100%
poly_challenge ✅ 4s 5s -20%
poly_chknorm ✅ 4s 3s +33%
poly_decompose_c ✅ 4s 8s -50%
poly_sub ✅ 4s 4s +0%
poly_uniform ✅ 4s 2s +100%
poly_uniform_gamma1_4x ✅ 4s 3s +33%
poly_use_hint ✅ 4s 3s +33%
polyt0_pack ✅ 4s 5s -20%
polyvec_matrix_pointwise_montgomery_row ✅ 4s 8s -50%
polyveck_caddq ✅ 4s 7s -43%
polyveck_invntt_tomont ✅ 4s 7s -43%
polyvecl_unpack_eta ✅ 4s 2s +100%
polyz_pack ✅ 4s 3s +33%
sign_signature_extmu ✅ 4s 4s +0%
sign_verify_pre_hash_shake256 ✅ 4s 6s -33%
sk_s1hat_get_poly ✅ 4s 3s +33%
unpack_sk_s1hat ✅ 4s 1s +300%
caddq ✅ 3s 2s +50%
intt_native_x86_64 ✅ 3s 4s -25%
keccak_init ✅ 3s 4s -25%
keccak_squeezeblocks_x4 ✅ 3s 4s -25%
keccakf1600_extract_bytes (big endian) ✅ 3s 3s +0%
make_hint ✅ 3s 3s +0%
mld_ct_cmask_nonzero_u8 ✅ 3s 2s +50%
mld_ct_get_optblocker_u8 ✅ 3s 4s -25%
mld_ct_memcmp ✅ 3s 4s -25%
mld_ct_sel_int32 ✅ 3s 2s +50%
mld_h ✅ 3s 3s +0%
mld_keccakf1600_extract_bytes ✅ 3s 2s +50%
mld_keccakf1600_permute_c ✅ 3s 7s -57%
mld_sign_finish ✅ 3s - new
mld_value_barrier_u32 ✅ 3s 4s -25%
montgomery_reduce ✅ 3s 1s +200%
ntt_native_aarch64 ✅ 3s 3s +0%
nttunpack_native_x86_64 ✅ 3s 3s +0%
pack_sig_z ✅ 3s 1s +200%
poly_caddq_c ✅ 3s 5s -40%
poly_decompose ✅ 3s 2s +50%
poly_decompose_32_native_aarch64 ✅ 3s 4s -25%
poly_invntt_tomont ✅ 3s 5s -40%
poly_permute_bitrev_to_custom_optional ✅ 3s 3s +0%
poly_uniform_eta ✅ 3s 5s -40%
poly_use_hint_c ✅ 3s 2s +50%
poly_use_hint_native ✅ 3s 7s -57%
poly_use_hint_native_aarch64 ✅ 3s 4s -25%
polyt1_pack ✅ 3s 3s +0%
polyt1_unpack ✅ 3s 3s +0%
polyvec_matrix_expand_serial ✅ 3s 3s +0%
polyveck_pack_eta ✅ 3s 3s +0%
polyveck_reduce ✅ 3s 6s -50%
polyveck_unpack_eta ✅ 3s 3s +0%
polyvecl_pointwise_acc_montgomery ✅ 3s 3s +0%
polyvecl_uniform_gamma1_serial ✅ 3s 1s +200%
polyvecl_unpack_z ✅ 3s 1s +200%
polyz_unpack_19_native_aarch64 ✅ 3s 5s -40%
rej_uniform_native ✅ 3s 4s -25%
rej_uniform_native_aarch64 ✅ 3s 5s -40%
shake128_release ✅ 3s 2s +50%
sign_signature_pre_hash_internal ✅ 3s 3s +0%
sign_signature_pre_hash_shake256 ✅ 3s 7s -57%
unpack_sk_t0hat ✅ 3s 4s -25%
use_hint ✅ 3s 2s +50%
yvec_init ✅ 3s 5s -40%
decompose ✅ 2s 4s -50%
fqscale ✅ 2s 3s -33%
intt_native_aarch64 ✅ 2s 2s +0%
keccak_f1600_x4_native_aarch64_v84a ✅ 2s 2s +0%
keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid ✅ 2s 3s -33%
keccak_f1600_x4_native_avx2 ✅ 2s 2s +0%
keccak_finalize ✅ 2s 2s +0%
keccak_squeeze ✅ 2s 2s +0%
keccakf1600_xor_bytes ✅ 2s 4s -50%
keccakf1600_xor_bytes (big endian) ✅ 2s 2s +0%
keccakf1600x4_extract_bytes ✅ 2s 4s -50%
mld_ct_abs_i32 ✅ 2s 6s -67%
mld_ct_cmask_neg_i32 ✅ 2s 3s -33%
mld_ct_cmask_nonzero_u32 ✅ 2s 3s -33%
mld_ct_get_optblocker_i64 ✅ 2s 1s +100%
mld_ct_get_optblocker_u32 ✅ 2s 3s -33%
mld_keccakf1600x4_extract_bytes_c ✅ 2s 2s +0%
mld_keccakf1600x4_xor_bytes_c ✅ 2s 2s +0%
mld_polymat_expand_entry ✅ 2s 3s -33%
mld_sample_s1_s2_serial ✅ 2s 3s -33%
mld_sign_resume ✅ 2s - new
mld_value_barrier_i64 ✅ 2s 2s +0%
mld_value_barrier_u8 ✅ 2s 1s +100%
pack_sig_c ✅ 2s 3s -33%
pack_sig_h ✅ 2s 2s +0%
pointwise_native_aarch64 ✅ 2s 3s -33%
poly_chknorm_native_aarch64 ✅ 2s 2s +0%
poly_chknorm_native_x86_64 ✅ 2s 4s -50%
poly_decompose_88_native_aarch64 ✅ 2s 2s +0%
poly_decompose_native_x86_64 ✅ 2s 2s +0%
poly_invntt_tomont_native ✅ 2s 5s -60%
poly_ntt_native ✅ 2s 2s +0%
poly_permute_bitrev_to_custom_optional_native ✅ 2s 3s -33%
poly_pointwise_montgomery ✅ 2s 2s +0%
poly_pointwise_montgomery_native ✅ 2s 4s -50%
poly_power2round ✅ 2s 7s -71%
poly_reduce ✅ 2s 4s -50%
poly_shiftl ✅ 2s 3s -33%
poly_uniform_4x ✅ 2s 4s -50%
poly_use_hint_native_x86_64 ✅ 2s - new
polyvec_matrix_expand ✅ 2s 6s -67%
polyveck_chknorm ✅ 2s 36s -94%
polyveck_ntt ✅ 2s 4s -50%
polyveck_pack_w1 ✅ 2s 4s -50%
polyvecl_pack_eta ✅ 2s 2s +0%
polyvecl_pointwise_acc_montgomery_native ✅ 2s 3s -33%
polyvecl_uniform_gamma1 ✅ 2s 4s -50%
polyw1_pack ✅ 2s 3s -33%
polyz_unpack_17_native_aarch64 ✅ 2s 2s +0%
polyz_unpack_c ✅ 2s 9s -78%
polyz_unpack_native ✅ 2s 3s -33%
polyz_unpack_native_x86_64 ✅ 2s 3s -33%
power2round ✅ 2s 2s +0%
reduce32 ✅ 2s 2s +0%
rej_eta ✅ 2s 5s -60%
rej_eta_c ✅ 2s 4s -50%
rej_eta_native ✅ 2s 3s -33%
rej_uniform_eta_native_aarch64 ✅ 2s 5s -60%
rej_uniform_eta_native_x86_64 ✅ 2s - new
shake128_finalize ✅ 2s 2s +0%
shake128_init ✅ 2s 6s -67%
shake128x4_absorb_once ✅ 2s 2s +0%
shake256 ✅ 2s 2s +0%
shake256_absorb ✅ 2s 4s -50%
shake256_init ✅ 2s 4s -50%
shake256_release ✅ 2s 3s -33%
shake256_squeeze ✅ 2s 4s -50%
sign_verify_extmu ✅ 2s 2s +0%
sk_s2hat_get_poly ✅ 2s 1s +100%
sys_check_capability ✅ 2s 1s +100%
unpack_sk ✅ 2s 3s -33%
unpack_sk_s2hat ✅ 2s 3s -33%
yvec_get_poly ✅ 2s 3s -33%
keccak_f1600_x1_native_aarch64_v84a ✅ 1s 2s -50%
keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid ✅ 1s 3s -67%
keccakf1600_permute ✅ 1s 4s -75%
keccakf1600_permute_native ✅ 1s 2s -50%
keccakf1600x4_permute ✅ 1s 1s +0%
keccakf1600x4_xor_bytes ✅ 1s 2s -50%
mld_prepare_domain_separation_prefix ✅ 1s 4s -75%
mld_sample_s1_s2 ✅ 1s 6s -83%
mld_sign_attempt ✅ 1s - new
ntt_native_x86_64 ✅ 1s 5s -80%
pointwise_native_x86_64 ✅ 1s 2s -50%
poly_caddq ✅ 1s 3s -67%
poly_caddq_native ✅ 1s 4s -75%
poly_caddq_native_x86_64 ✅ 1s 1s +0%
poly_chknorm_native ✅ 1s 4s -75%
poly_decompose_native ✅ 1s 5s -80%
poly_ntt ✅ 1s 2s -50%
polyeta_pack ✅ 1s 1s +0%
polyvecl_pointwise_acc_montgomery_c ✅ 1s 3s -67%
polyw1_pack_88 ✅ 1s 3s -67%
polyz_unpack ✅ 1s 3s -67%
shake128_absorb ✅ 1s 2s -50%
shake128_squeeze ✅ 1s 3s -67%
shake128x4_squeezeblocks ✅ 1s 2s -50%
shake256_finalize ✅ 1s 1s +0%
shake256x4_absorb_once ✅ 1s 2s -50%
shake256x4_squeezeblocks ✅ 1s 2s -50%
sign_verify ✅ 1s 6s -83%
sk_t0hat_get_poly ✅ 1s 1s +0%
unpack_pk_t1 ✅ 1s 2s -50%

@oqs-bot

oqs-bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

CBMC Results (ML-DSA-44, REDUCE-RAM)

⚠️ Attention Required

Proof Status Current Previous Change
compute_pack_t0_t1 ⚠️ 30s 12s +150%
mld_attempt_signature_generation ⚠️ 163s 19s +758%
sign_pk_from_sk ⚠️ 44s 5s +780%
sign_verify_internal ⚠️ 181s 49s +269%
Full Results (210 proofs)
Proof Status Current Previous Change
**TOTAL** ✅ 1299s 1364s -4.8%
sign_verify_internal ⚠️ 181s 49s +269%
mld_attempt_signature_generation ⚠️ 163s 19s +758%
polyvec_matrix_pointwise_montgomery_yvec ✅ 104s 149s -30%
poly_pointwise_montgomery_c ✅ 70s 112s -38%
mld_invntt_layer ✅ 56s 105s -47%
sign_pk_from_sk ⚠️ 44s 5s +780%
compute_pack_t0_t1 ⚠️ 30s 12s +150%
fqmul ✅ 24s 39s -38%
mld_ntt_layer ✅ 23s 41s -44%
sign_keypair_internal ✅ 19s 4s +375%
rej_uniform_c ✅ 14s 16s -12%
mld_ntt_butterfly_block ✅ 12s 23s -48%
sig_unpack_hints ✅ 12s 2s +500%
sign_signature_internal ✅ 12s 4s +200%
keccakf1600x4_permute_native ✅ 11s 22s -50%
poly_ntt_c ✅ 11s 21s -48%
rej_uniform_native_x86_64 ✅ 10s - new
polyt0_unpack ✅ 9s 12s -25%
poly_uniform_eta_4x ✅ 8s 12s -33%
rej_uniform ✅ 8s 8s +0%
sign_signature_pre_hash_shake256 ✅ 8s 4s +100%
polyeta_unpack ✅ 7s 14s -50%
polyz_unpack_c ✅ 7s 8s -12%
mld_keccakf1600_permute_c ✅ 6s 7s -14%
poly_chknorm_c ✅ 6s 11s -45%
polyvec_matrix_pointwise_montgomery_row ✅ 6s 6s +0%
sign_keypair ✅ 6s 5s +20%
keccak_absorb_once_x4 ✅ 5s 8s -38%
mld_check_pct ✅ 5s 15s -67%
poly_invntt_tomont_c ✅ 5s 11s -55%
poly_use_hint_native ✅ 5s 3s +67%
polyt1_unpack ✅ 5s 2s +150%
polyveck_decompose ✅ 5s 7s -29%
rej_uniform_eta_native_x86_64 ✅ 5s - new
sign_signature_extmu ✅ 5s 4s +25%
keccak_squeeze ✅ 4s 2s +100%
pointwise_acc_native_x86_64 ✅ 4s 4s +0%
pointwise_native_aarch64 ✅ 4s 2s +100%
poly_caddq ✅ 4s 4s +0%
poly_challenge ✅ 4s 6s -33%
poly_decompose_native ✅ 4s 2s +100%
poly_ntt ✅ 4s 3s +33%
poly_power2round ✅ 4s 4s +0%
poly_reduce ✅ 4s 4s +0%
polyt0_pack ✅ 4s 4s +0%
polyt1_pack ✅ 4s 3s +33%
polyvec_matrix_expand ✅ 4s 3s +33%
polyveck_caddq ✅ 4s 3s +33%
polyveck_pack_w1 ✅ 4s 3s +33%
polyvecl_uniform_gamma1_serial ✅ 4s 2s +100%
polyz_pack ✅ 4s 2s +100%
polyz_unpack_native ✅ 4s 3s +33%
reduce32 ✅ 4s 3s +33%
sign_verify_pre_hash_shake256 ✅ 4s 5s -20%
unpack_sk_s1hat ✅ 4s 3s +33%
keccak_absorb ✅ 3s 3s +0%
keccak_f1600_x1_native_aarch64_v84a ✅ 3s 2s +50%
keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid ✅ 3s 3s +0%
keccak_finalize ✅ 3s 2s +50%
keccakf1600_permute_native ✅ 3s 3s +0%
keccakf1600x4_xor_bytes ✅ 3s 3s +0%
mld_compute_pack_z ✅ 3s 6s -50%
mld_ct_cmask_neg_i32 ✅ 3s 2s +50%
mld_h ✅ 3s 4s -25%
mld_sign_resume ✅ 3s - new
mld_value_barrier_u32 ✅ 3s 1s +200%
montgomery_reduce ✅ 3s 2s +50%
pack_sig_h ✅ 3s 4s -25%
poly_add ✅ 3s 7s -57%
poly_chknorm_native ✅ 3s 4s -25%
poly_decompose_native_x86_64 ✅ 3s 2s +50%
poly_invntt_tomont ✅ 3s 2s +50%
poly_invntt_tomont_native ✅ 3s 3s +0%
poly_permute_bitrev_to_custom_optional_native ✅ 3s 3s +0%
poly_uniform ✅ 3s 3s +0%
poly_use_hint_c ✅ 3s 5s -40%
poly_use_hint_native_aarch64 ✅ 3s 3s +0%
polyveck_unpack_eta ✅ 3s 2s +50%
polyvecl_ntt ✅ 3s 3s +0%
polyvecl_pointwise_acc_montgomery_native ✅ 3s 3s +0%
polyvecl_uniform_gamma1 ✅ 3s 2s +50%
polyw1_pack_88 ✅ 3s 2s +50%
polyz_unpack_17_native_aarch64 ✅ 3s 2s +50%
polyz_unpack_19_native_aarch64 ✅ 3s 4s -25%
power2round ✅ 3s 2s +50%
rej_uniform_native ✅ 3s 5s -40%
rej_uniform_native_aarch64 ✅ 3s 3s +0%
shake128_init ✅ 3s 2s +50%
shake128x4_absorb_once ✅ 3s 2s +50%
shake256_absorb ✅ 3s 2s +50%
shake256_release ✅ 3s 1s +200%
sign_signature_pre_hash_internal ✅ 3s 4s -25%
sign_verify ✅ 3s 4s -25%
sk_s1hat_get_poly ✅ 3s 2s +50%
unpack_sk ✅ 3s 3s +0%
unpack_sk_t0hat ✅ 3s 2s +50%
use_hint ✅ 3s 2s +50%
yvec_get_poly ✅ 3s 3s +0%
caddq ✅ 2s 6s -67%
fqscale ✅ 2s 2s +0%
intt_native_x86_64 ✅ 2s 2s +0%
keccak_f1600_x1_native_aarch64 ✅ 2s 3s -33%
keccak_f1600_x4_native_aarch64_v84a ✅ 2s 3s -33%
keccak_f1600_x4_native_avx2 ✅ 2s 2s +0%
keccak_init ✅ 2s 3s -33%
keccak_squeezeblocks_x4 ✅ 2s 3s -33%
keccakf1600_permute ✅ 2s 2s +0%
keccakf1600_xor_bytes ✅ 2s 3s -33%
keccakf1600_xor_bytes (big endian) ✅ 2s 6s -67%
keccakf1600x4_extract_bytes ✅ 2s 2s +0%
keccakf1600x4_extract_bytes_native ✅ 2s 4s -50%
keccakf1600x4_permute ✅ 2s 4s -50%
keccakf1600x4_xor_bytes_native ✅ 2s 5s -60%
make_hint ✅ 2s 3s -33%
mld_ct_cmask_nonzero_u32 ✅ 2s 3s -33%
mld_ct_get_optblocker_i64 ✅ 2s 4s -50%
mld_ct_get_optblocker_u8 ✅ 2s 2s +0%
mld_ct_sel_int32 ✅ 2s 3s -33%
mld_keccakf1600x4_extract_bytes_c ✅ 2s 4s -50%
mld_keccakf1600x4_xor_bytes_c ✅ 2s 4s -50%
mld_polymat_expand_entry ✅ 2s 2s +0%
mld_prepare_domain_separation_prefix ✅ 2s 3s -33%
mld_sample_s1_s2_serial ✅ 2s 4s -50%
mld_sign_attempt ✅ 2s - new
mld_value_barrier_u8 ✅ 2s 4s -50%
pack_sk_rho_key_tr_s2 ✅ 2s 5s -60%
pack_sk_s1 ✅ 2s 3s -33%
pointwise_acc_native_aarch64 ✅ 2s 6s -67%
pointwise_native_x86_64 ✅ 2s 4s -50%
poly_caddq_c ✅ 2s 3s -33%
poly_caddq_native ✅ 2s 3s -33%
poly_caddq_native_aarch64 ✅ 2s 3s -33%
poly_caddq_native_x86_64 ✅ 2s 4s -50%
poly_chknorm_native_x86_64 ✅ 2s 2s +0%
poly_decompose ✅ 2s 2s +0%
poly_decompose_88_native_aarch64 ✅ 2s 3s -33%
poly_decompose_c ✅ 2s 5s -60%
poly_ntt_native ✅ 2s 3s -33%
poly_permute_bitrev_to_custom_optional ✅ 2s 5s -60%
poly_pointwise_montgomery_native ✅ 2s 2s +0%
poly_shiftl ✅ 2s 4s -50%
poly_sub ✅ 2s 3s -33%
poly_use_hint ✅ 2s 2s +0%
poly_use_hint_native_x86_64 ✅ 2s - new
polyeta_pack ✅ 2s 3s -33%
polyveck_chknorm ✅ 2s 67s -97%
polyveck_invntt_tomont ✅ 2s 5s -60%
polyveck_pack_eta ✅ 2s 4s -50%
polyveck_reduce ✅ 2s 4s -50%
polyvecl_chknorm ✅ 2s 11s -82%
polyvecl_pack_eta ✅ 2s 2s +0%
polyvecl_pointwise_acc_montgomery_c ✅ 2s 4s -50%
polyvecl_unpack_eta ✅ 2s 4s -50%
polyvecl_unpack_z ✅ 2s 3s -33%
polyw1_pack ✅ 2s 4s -50%
polyw1_pack_32 ✅ 2s 3s -33%
polyz_unpack ✅ 2s 3s -33%
polyz_unpack_native_x86_64 ✅ 2s 3s -33%
rej_eta_c ✅ 2s 4s -50%
shake128_absorb ✅ 2s 3s -33%
shake256_squeeze ✅ 2s 2s +0%
shake256x4_absorb_once ✅ 2s 1s +100%
shake256x4_squeezeblocks ✅ 2s 2s +0%
sign_signature ✅ 2s 6s -67%
sign_verify_extmu ✅ 2s 5s -60%
sign_verify_pre_hash_internal ✅ 2s 5s -60%
sk_s2hat_get_poly ✅ 2s 5s -60%
sk_t0hat_get_poly ✅ 2s 1s +100%
yvec_init ✅ 2s 1s +100%
decompose ✅ 1s 3s -67%
intt_native_aarch64 ✅ 1s 3s -67%
keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid ✅ 1s 2s -50%
keccakf1600_extract_bytes (big endian) ✅ 1s 4s -75%
mld_ct_abs_i32 ✅ 1s 3s -67%
mld_ct_cmask_nonzero_u8 ✅ 1s 2s -50%
mld_ct_get_optblocker_u32 ✅ 1s 2s -50%
mld_ct_memcmp ✅ 1s 1s +0%
mld_keccakf1600_extract_bytes ✅ 1s 2s -50%
mld_sample_s1_s2 ✅ 1s 1s +0%
mld_sign_finish ✅ 1s - new
mld_value_barrier_i64 ✅ 1s 3s -67%
ntt_native_aarch64 ✅ 1s 4s -75%
ntt_native_x86_64 ✅ 1s 3s -67%
nttunpack_native_x86_64 ✅ 1s 4s -75%
pack_sig_c ✅ 1s 5s -80%
pack_sig_z ✅ 1s 2s -50%
poly_chknorm ✅ 1s 3s -67%
poly_chknorm_native_aarch64 ✅ 1s 2s -50%
poly_decompose_32_native_aarch64 ✅ 1s 4s -75%
poly_pointwise_montgomery ✅ 1s 3s -67%
poly_uniform_4x ✅ 1s 3s -67%
poly_uniform_eta ✅ 1s 2s -50%
poly_uniform_gamma1 ✅ 1s 3s -67%
poly_uniform_gamma1_4x ✅ 1s 5s -80%
polyvec_matrix_expand_serial ✅ 1s 4s -75%
polyveck_ntt ✅ 1s 2s -50%
polyvecl_pointwise_acc_montgomery ✅ 1s 3s -67%
rej_eta ✅ 1s 5s -80%
rej_eta_native ✅ 1s 3s -67%
rej_uniform_eta_native_aarch64 ✅ 1s 3s -67%
shake128_finalize ✅ 1s 3s -67%
shake128_release ✅ 1s 2s -50%
shake128_squeeze ✅ 1s 2s -50%
shake128x4_squeezeblocks ✅ 1s 2s -50%
shake256 ✅ 1s 1s +0%
shake256_finalize ✅ 1s 2s -50%
shake256_init ✅ 1s 4s -75%
sys_check_capability ✅ 1s 2s -50%
unpack_pk_t1 ✅ 1s 3s -67%
unpack_sk_s2hat ✅ 1s 4s -75%

@oqs-bot

oqs-bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

CBMC Results (ML-DSA-87, REDUCE-RAM)

⚠️ Attention Required

Proof Status Current Previous Change
compute_pack_t0_t1 ⚠️ 29s 12s +142%
mld_attempt_signature_generation ⚠️ 249s 34s +632%
sign_keypair_internal ⚠️ 47s 6s +683%
sign_pk_from_sk ⚠️ 62s 6s +933%
sign_verify_internal ⚠️ 324s 47s +589%
Full Results (210 proofs)
Proof Status Current Previous Change
**TOTAL** ✅ 1674s 1436s +16.6%
sign_verify_internal ⚠️ 324s 47s +589%
mld_attempt_signature_generation ⚠️ 249s 34s +632%
polyvec_matrix_pointwise_montgomery_yvec ✅ 198s 196s +1%
poly_pointwise_montgomery_c ✅ 66s 125s -47%
sign_pk_from_sk ⚠️ 62s 6s +933%
mld_invntt_layer ✅ 56s 111s -50%
sign_keypair_internal ⚠️ 47s 6s +683%
compute_pack_t0_t1 ⚠️ 29s 12s +142%
fqmul ✅ 22s 39s -44%
mld_ntt_layer ✅ 22s 44s -50%
keccakf1600x4_permute_native ✅ 13s 25s -48%
mld_ntt_butterfly_block ✅ 13s 23s -43%
sig_unpack_hints ✅ 13s 4s +225%
sign_signature_internal ✅ 13s 3s +333%
rej_uniform_c ✅ 11s 18s -39%
poly_ntt_c ✅ 10s 19s -47%
rej_uniform_native_x86_64 ✅ 10s - new
polyt0_unpack ✅ 9s 14s -36%
rej_uniform ✅ 9s 7s +29%
poly_uniform_eta_4x ✅ 8s 12s -33%
mld_check_pct ✅ 7s 15s -53%
poly_chknorm_c ✅ 7s 13s -46%
poly_invntt_tomont_c ✅ 7s 9s -22%
polyeta_unpack ✅ 7s 13s -46%
polyvec_matrix_pointwise_montgomery_row ✅ 7s 13s -46%
polyveck_decompose ✅ 7s 12s -42%
polyvecl_ntt ✅ 6s 8s -25%
mld_ct_memcmp ✅ 5s 1s +400%
nttunpack_native_x86_64 ✅ 5s 3s +67%
pointwise_acc_native_x86_64 ✅ 5s 8s -38%
poly_add ✅ 5s 8s -38%
poly_decompose_c ✅ 5s 6s -17%
poly_invntt_tomont_native ✅ 5s 2s +150%
polyveck_reduce ✅ 5s 6s -17%
shake256x4_absorb_once ✅ 5s 5s +0%
sign_keypair ✅ 5s 4s +25%
sign_signature_pre_hash_shake256 ✅ 5s 3s +67%
decompose ✅ 4s 2s +100%
keccak_absorb_once_x4 ✅ 4s 8s -50%
keccak_finalize ✅ 4s 1s +300%
keccakf1600_permute_native ✅ 4s 3s +33%
mld_keccakf1600_extract_bytes ✅ 4s 1s +300%
mld_keccakf1600_permute_c ✅ 4s 8s -50%
mld_keccakf1600x4_xor_bytes_c ✅ 4s 1s +300%
mld_prepare_domain_separation_prefix ✅ 4s 3s +33%
pointwise_acc_native_aarch64 ✅ 4s 5s -20%
poly_caddq_native_aarch64 ✅ 4s 3s +33%
poly_decompose_88_native_aarch64 ✅ 4s 2s +100%
poly_ntt ✅ 4s 2s +100%
poly_shiftl ✅ 4s 4s +0%
poly_uniform_eta ✅ 4s 5s -20%
polyt1_pack ✅ 4s 5s -20%
polyveck_invntt_tomont ✅ 4s 4s +0%
polyvecl_chknorm ✅ 4s 38s -89%
polyz_unpack_native_x86_64 ✅ 4s 3s +33%
rej_eta_native ✅ 4s 4s +0%
sign_signature_extmu ✅ 4s 4s +0%
sign_verify_extmu ✅ 4s 4s +0%
unpack_sk_s2hat ✅ 4s 3s +33%
intt_native_x86_64 ✅ 3s 4s -25%
keccak_absorb ✅ 3s 4s -25%
keccakf1600_extract_bytes (big endian) ✅ 3s 3s +0%
keccakf1600x4_extract_bytes_native ✅ 3s 4s -25%
keccakf1600x4_permute ✅ 3s 2s +50%
keccakf1600x4_xor_bytes_native ✅ 3s 2s +50%
mld_compute_pack_z ✅ 3s 6s -50%
mld_ct_cmask_nonzero_u32 ✅ 3s 5s -40%
mld_ct_get_optblocker_u32 ✅ 3s 2s +50%
mld_ct_get_optblocker_u8 ✅ 3s 3s +0%
mld_h ✅ 3s 2s +50%
mld_sample_s1_s2 ✅ 3s 8s -62%
mld_sign_finish ✅ 3s - new
mld_value_barrier_i64 ✅ 3s 2s +50%
ntt_native_aarch64 ✅ 3s 4s -25%
ntt_native_x86_64 ✅ 3s 2s +50%
pack_sig_c ✅ 3s 2s +50%
pack_sig_h ✅ 3s 3s +0%
poly_caddq_c ✅ 3s 3s +0%
poly_caddq_native ✅ 3s 3s +0%
poly_decompose_native ✅ 3s 2s +50%
poly_invntt_tomont ✅ 3s 4s -25%
poly_reduce ✅ 3s 4s -25%
poly_uniform_gamma1_4x ✅ 3s 3s +0%
poly_use_hint_native_aarch64 ✅ 3s 3s +0%
polyeta_pack ✅ 3s 3s +0%
polyt0_pack ✅ 3s 3s +0%
polyveck_caddq ✅ 3s 8s -62%
polyveck_chknorm ✅ 3s 9s -67%
polyw1_pack ✅ 3s 2s +50%
polyw1_pack_32 ✅ 3s 3s +0%
polyz_unpack_17_native_aarch64 ✅ 3s 4s -25%
polyz_unpack_c ✅ 3s 7s -57%
rej_uniform_eta_native_x86_64 ✅ 3s - new
rej_uniform_native_aarch64 ✅ 3s 3s +0%
shake128_squeeze ✅ 3s 1s +200%
shake128x4_absorb_once ✅ 3s 4s -25%
shake128x4_squeezeblocks ✅ 3s 1s +200%
shake256_absorb ✅ 3s 3s +0%
shake256_init ✅ 3s 3s +0%
sign_verify_pre_hash_internal ✅ 3s 3s +0%
sign_verify_pre_hash_shake256 ✅ 3s 7s -57%
sk_t0hat_get_poly ✅ 3s 3s +0%
unpack_sk ✅ 3s 4s -25%
fqscale ✅ 2s 1s +100%
intt_native_aarch64 ✅ 2s 4s -50%
keccak_f1600_x1_native_aarch64_v84a ✅ 2s 2s +0%
keccak_f1600_x4_native_avx2 ✅ 2s 3s -33%
keccak_squeeze ✅ 2s 5s -60%
keccak_squeezeblocks_x4 ✅ 2s 4s -50%
keccakf1600_xor_bytes ✅ 2s 1s +100%
keccakf1600_xor_bytes (big endian) ✅ 2s 2s +0%
keccakf1600x4_xor_bytes ✅ 2s 1s +100%
make_hint ✅ 2s 2s +0%
mld_ct_cmask_neg_i32 ✅ 2s 2s +0%
mld_ct_sel_int32 ✅ 2s 2s +0%
mld_keccakf1600x4_extract_bytes_c ✅ 2s 3s -33%
mld_sample_s1_s2_serial ✅ 2s 6s -67%
mld_sign_resume ✅ 2s - new
mld_value_barrier_u8 ✅ 2s 2s +0%
montgomery_reduce ✅ 2s 2s +0%
pack_sk_rho_key_tr_s2 ✅ 2s 2s +0%
pack_sk_s1 ✅ 2s 2s +0%
pointwise_native_aarch64 ✅ 2s 4s -50%
pointwise_native_x86_64 ✅ 2s 5s -60%
poly_caddq ✅ 2s 5s -60%
poly_caddq_native_x86_64 ✅ 2s 3s -33%
poly_challenge ✅ 2s 4s -50%
poly_chknorm ✅ 2s 4s -50%
poly_chknorm_native ✅ 2s 1s +100%
poly_chknorm_native_aarch64 ✅ 2s 5s -60%
poly_chknorm_native_x86_64 ✅ 2s 2s +0%
poly_decompose ✅ 2s 2s +0%
poly_decompose_32_native_aarch64 ✅ 2s 3s -33%
poly_decompose_native_x86_64 ✅ 2s 3s -33%
poly_permute_bitrev_to_custom_optional ✅ 2s 2s +0%
poly_permute_bitrev_to_custom_optional_native ✅ 2s 3s -33%
poly_pointwise_montgomery_native ✅ 2s 3s -33%
poly_power2round ✅ 2s 7s -71%
poly_sub ✅ 2s 5s -60%
poly_uniform ✅ 2s 4s -50%
poly_uniform_4x ✅ 2s 3s -33%
poly_uniform_gamma1 ✅ 2s 3s -33%
poly_use_hint ✅ 2s 4s -50%
poly_use_hint_native ✅ 2s 1s +100%
poly_use_hint_native_x86_64 ✅ 2s - new
polyt1_unpack ✅ 2s 3s -33%
polyvec_matrix_expand ✅ 2s 3s -33%
polyveck_pack_w1 ✅ 2s 3s -33%
polyvecl_pack_eta ✅ 2s 2s +0%
polyvecl_pointwise_acc_montgomery ✅ 2s 2s +0%
polyvecl_pointwise_acc_montgomery_c ✅ 2s 2s +0%
polyvecl_uniform_gamma1_serial ✅ 2s 2s +0%
polyvecl_unpack_z ✅ 2s 3s -33%
polyz_pack ✅ 2s 4s -50%
polyz_unpack ✅ 2s 3s -33%
power2round ✅ 2s 3s -33%
rej_eta ✅ 2s 2s +0%
rej_eta_c ✅ 2s 4s -50%
shake128_absorb ✅ 2s 2s +0%
shake128_release ✅ 2s 3s -33%
shake256 ✅ 2s 3s -33%
shake256_release ✅ 2s 5s -60%
shake256_squeeze ✅ 2s 2s +0%
sign_signature ✅ 2s 4s -50%
sign_verify ✅ 2s 2s +0%
use_hint ✅ 2s 3s -33%
yvec_get_poly ✅ 2s 2s +0%
yvec_init ✅ 2s 4s -50%
caddq ✅ 1s 3s -67%
keccak_f1600_x1_native_aarch64 ✅ 1s 2s -50%
keccak_f1600_x4_native_aarch64_v84a ✅ 1s 1s +0%
keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid ✅ 1s 2s -50%
keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid ✅ 1s 2s -50%
keccak_init ✅ 1s 1s +0%
keccakf1600_permute ✅ 1s 2s -50%
keccakf1600x4_extract_bytes ✅ 1s 1s +0%
mld_ct_abs_i32 ✅ 1s 1s +0%
mld_ct_cmask_nonzero_u8 ✅ 1s 2s -50%
mld_ct_get_optblocker_i64 ✅ 1s 2s -50%
mld_polymat_expand_entry ✅ 1s 4s -75%
mld_sign_attempt ✅ 1s - new
mld_value_barrier_u32 ✅ 1s 3s -67%
pack_sig_z ✅ 1s 3s -67%
poly_ntt_native ✅ 1s 4s -75%
poly_pointwise_montgomery ✅ 1s 3s -67%
poly_use_hint_c ✅ 1s 4s -75%
polyvec_matrix_expand_serial ✅ 1s 3s -67%
polyveck_ntt ✅ 1s 3s -67%
polyveck_pack_eta ✅ 1s 5s -80%
polyveck_unpack_eta ✅ 1s 3s -67%
polyvecl_pointwise_acc_montgomery_native ✅ 1s 2s -50%
polyvecl_uniform_gamma1 ✅ 1s 3s -67%
polyvecl_unpack_eta ✅ 1s 3s -67%
polyw1_pack_88 ✅ 1s 2s -50%
polyz_unpack_19_native_aarch64 ✅ 1s 5s -80%
polyz_unpack_native ✅ 1s 1s +0%
reduce32 ✅ 1s 3s -67%
rej_uniform_eta_native_aarch64 ✅ 1s 3s -67%
rej_uniform_native ✅ 1s 5s -80%
shake128_finalize ✅ 1s 2s -50%
shake128_init ✅ 1s 2s -50%
shake256_finalize ✅ 1s 3s -67%
shake256x4_squeezeblocks ✅ 1s 4s -75%
sign_signature_pre_hash_internal ✅ 1s 2s -50%
sk_s1hat_get_poly ✅ 1s 3s -67%
sk_s2hat_get_poly ✅ 1s 2s -50%
sys_check_capability ✅ 1s 2s -50%
unpack_pk_t1 ✅ 1s 2s -50%
unpack_sk_s1hat ✅ 1s 3s -67%
unpack_sk_t0hat ✅ 1s 4s -75%

@oqs-bot

oqs-bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

CBMC Results (ML-DSA-44)

⚠️ Attention Required

Proof Status Current Previous Change
compute_pack_t0_t1 ⚠️ 96s 50s +92%
mld_attempt_signature_generation ⚠️ 289s 58s +398%
sign_keypair_internal ⚠️ 21s 4s +425%
sign_pk_from_sk ⚠️ 37s 5s +640%
sign_signature_internal ⚠️ 96s 26s +269%
sign_verify_internal ⚠️ 284s 114s +149%
Full Results (210 proofs)
Proof Status Current Previous Change
**TOTAL** ✅ 1820s 1514s +20.2%
mld_attempt_signature_generation ⚠️ 289s 58s +398%
sign_verify_internal ⚠️ 284s 114s +149%
polyvecl_pointwise_acc_montgomery_c ✅ 151s 131s +15%
poly_pointwise_montgomery_c ✅ 141s 114s +24%
compute_pack_t0_t1 ⚠️ 96s 50s +92%
sign_signature_internal ⚠️ 96s 26s +269%
mld_invntt_layer ✅ 59s 107s -45%
sign_pk_from_sk ⚠️ 37s 5s +640%
fqmul ✅ 23s 39s -41%
mld_ntt_layer ✅ 23s 42s -45%
sign_keypair_internal ⚠️ 21s 4s +425%
polyvec_matrix_expand ✅ 19s 28s -32%
sig_unpack_hints ✅ 19s 2s +850%
mld_ntt_butterfly_block ✅ 13s 23s -43%
keccakf1600x4_permute_native ✅ 11s 22s -50%
poly_ntt_c ✅ 11s 19s -42%
polyt0_unpack ✅ 10s 15s -33%
rej_uniform ✅ 9s 18s -50%
poly_uniform_eta_4x ✅ 8s 11s -27%
polyvec_matrix_pointwise_montgomery_yvec ✅ 8s 15s -47%
rej_uniform_native_x86_64 ✅ 8s - new
poly_chknorm_c ✅ 7s 17s -59%
polyeta_unpack ✅ 7s 14s -50%
rej_uniform_c ✅ 7s 15s -53%
mld_check_pct ✅ 6s 14s -57%
mld_keccakf1600_permute_c ✅ 6s 8s -25%
poly_add ✅ 6s 7s -14%
poly_invntt_tomont_c ✅ 6s 11s -45%
polyz_unpack_c ✅ 6s 11s -45%
sign_verify_pre_hash_shake256 ✅ 6s 5s +20%
mld_ct_memcmp ✅ 5s 3s +67%
poly_power2round ✅ 5s 4s +25%
polyveck_chknorm ✅ 5s 5s +0%
shake256_absorb ✅ 5s 3s +67%
sign_keypair ✅ 5s 4s +25%
sign_signature_pre_hash_shake256 ✅ 5s 3s +67%
sign_verify ✅ 5s 4s +25%
unpack_pk_t1 ✅ 5s 5s +0%
keccak_absorb ✅ 4s 5s -20%
keccak_f1600_x1_native_aarch64_v84a ✅ 4s 3s +33%
mld_sample_s1_s2 ✅ 4s 4s +0%
pointwise_acc_native_x86_64 ✅ 4s 7s -43%
poly_chknorm_native_aarch64 ✅ 4s 4s +0%
poly_decompose_native ✅ 4s 3s +33%
poly_pointwise_montgomery ✅ 4s 3s +33%
poly_pointwise_montgomery_native ✅ 4s 2s +100%
poly_uniform_4x ✅ 4s 14s -71%
polyt1_unpack ✅ 4s 5s -20%
polyvecl_pointwise_acc_montgomery ✅ 4s 4s +0%
polyw1_pack_88 ✅ 4s 1s +300%
rej_eta ✅ 4s 3s +33%
rej_eta_c ✅ 4s 4s +0%
caddq ✅ 3s 2s +50%
decompose ✅ 3s 2s +50%
intt_native_x86_64 ✅ 3s 4s -25%
keccak_absorb_once_x4 ✅ 3s 9s -67%
keccak_f1600_x4_native_aarch64_v84a ✅ 3s 2s +50%
keccak_init ✅ 3s 3s +0%
keccakf1600_permute_native ✅ 3s 3s +0%
keccakf1600x4_extract_bytes ✅ 3s 2s +50%
keccakf1600x4_xor_bytes ✅ 3s 2s +50%
mld_compute_pack_z ✅ 3s 7s -57%
mld_ct_abs_i32 ✅ 3s 2s +50%
mld_ct_cmask_nonzero_u32 ✅ 3s 2s +50%
mld_ct_get_optblocker_i64 ✅ 3s 4s -25%
mld_ct_sel_int32 ✅ 3s 2s +50%
mld_keccakf1600x4_xor_bytes_c ✅ 3s 2s +50%
mld_polymat_expand_entry ✅ 3s 3s +0%
mld_sign_finish ✅ 3s - new
mld_sign_resume ✅ 3s - new
mld_value_barrier_i64 ✅ 3s 2s +50%
mld_value_barrier_u8 ✅ 3s 3s +0%
nttunpack_native_x86_64 ✅ 3s 1s +200%
pack_sig_c ✅ 3s 2s +50%
pack_sig_h ✅ 3s 3s +0%
pack_sig_z ✅ 3s 4s -25%
pointwise_acc_native_aarch64 ✅ 3s 4s -25%
poly_caddq_native ✅ 3s 5s -40%
poly_chknorm ✅ 3s 4s -25%
poly_chknorm_native ✅ 3s 4s -25%
poly_chknorm_native_x86_64 ✅ 3s 2s +50%
poly_decompose ✅ 3s 3s +0%
poly_ntt ✅ 3s 3s +0%
poly_permute_bitrev_to_custom_optional ✅ 3s 2s +50%
poly_shiftl ✅ 3s 3s +0%
poly_sub ✅ 3s 3s +0%
poly_use_hint_native ✅ 3s 4s -25%
poly_use_hint_native_x86_64 ✅ 3s - new
polyt1_pack ✅ 3s 4s -25%
polyvec_matrix_pointwise_montgomery_row ✅ 3s 2s +50%
polyveck_caddq ✅ 3s 3s +0%
polyveck_invntt_tomont ✅ 3s 5s -40%
polyvecl_ntt ✅ 3s 2s +50%
polyvecl_uniform_gamma1_serial ✅ 3s 2s +50%
polyw1_pack_32 ✅ 3s 2s +50%
polyz_unpack_19_native_aarch64 ✅ 3s 5s -40%
polyz_unpack_native ✅ 3s 2s +50%
power2round ✅ 3s 3s +0%
rej_uniform_eta_native_x86_64 ✅ 3s - new
rej_uniform_native ✅ 3s 4s -25%
rej_uniform_native_aarch64 ✅ 3s 5s -40%
shake128_absorb ✅ 3s 2s +50%
shake256 ✅ 3s 1s +200%
shake256x4_squeezeblocks ✅ 3s 4s -25%
sign_signature_pre_hash_internal ✅ 3s 6s -50%
sign_verify_extmu ✅ 3s 3s +0%
sign_verify_pre_hash_internal ✅ 3s 3s +0%
sys_check_capability ✅ 3s 4s -25%
unpack_sk_t0hat ✅ 3s 3s +0%
intt_native_aarch64 ✅ 2s 9s -78%
keccak_f1600_x1_native_aarch64 ✅ 2s 2s +0%
keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid ✅ 2s 3s -33%
keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid ✅ 2s 1s +100%
keccak_f1600_x4_native_avx2 ✅ 2s 3s -33%
keccak_finalize ✅ 2s 3s -33%
keccak_squeeze ✅ 2s 1s +100%
keccak_squeezeblocks_x4 ✅ 2s 4s -50%
keccakf1600_permute ✅ 2s 2s +0%
keccakf1600_xor_bytes ✅ 2s 1s +100%
make_hint ✅ 2s 3s -33%
mld_ct_get_optblocker_u32 ✅ 2s 1s +100%
mld_h ✅ 2s 4s -50%
mld_prepare_domain_separation_prefix ✅ 2s 4s -50%
mld_sample_s1_s2_serial ✅ 2s 3s -33%
mld_value_barrier_u32 ✅ 2s 2s +0%
ntt_native_x86_64 ✅ 2s 3s -33%
pack_sk_s1 ✅ 2s 2s +0%
pointwise_native_x86_64 ✅ 2s 4s -50%
poly_caddq_native_aarch64 ✅ 2s 4s -50%
poly_caddq_native_x86_64 ✅ 2s 4s -50%
poly_challenge ✅ 2s 3s -33%
poly_decompose_32_native_aarch64 ✅ 2s 2s +0%
poly_decompose_88_native_aarch64 ✅ 2s 4s -50%
poly_decompose_native_x86_64 ✅ 2s 3s -33%
poly_invntt_tomont ✅ 2s 4s -50%
poly_ntt_native ✅ 2s 5s -60%
poly_reduce ✅ 2s 3s -33%
poly_uniform ✅ 2s 6s -67%
poly_uniform_eta ✅ 2s 5s -60%
poly_uniform_gamma1_4x ✅ 2s 5s -60%
poly_use_hint ✅ 2s 4s -50%
poly_use_hint_native_aarch64 ✅ 2s 2s +0%
polyveck_decompose ✅ 2s 4s -50%
polyveck_ntt ✅ 2s 5s -60%
polyveck_pack_eta ✅ 2s 2s +0%
polyveck_pack_w1 ✅ 2s 1s +100%
polyveck_reduce ✅ 2s 5s -60%
polyvecl_pointwise_acc_montgomery_native ✅ 2s 2s +0%
polyvecl_unpack_z ✅ 2s 2s +0%
polyw1_pack ✅ 2s 3s -33%
polyz_unpack ✅ 2s 3s -33%
polyz_unpack_17_native_aarch64 ✅ 2s 5s -60%
polyz_unpack_native_x86_64 ✅ 2s 3s -33%
rej_eta_native ✅ 2s 6s -67%
rej_uniform_eta_native_aarch64 ✅ 2s 2s +0%
shake128_finalize ✅ 2s 2s +0%
shake128_squeeze ✅ 2s 1s +100%
shake256_finalize ✅ 2s 2s +0%
shake256_squeeze ✅ 2s 2s +0%
shake256x4_absorb_once ✅ 2s 3s -33%
sign_signature ✅ 2s 3s -33%
sign_signature_extmu ✅ 2s 4s -50%
sk_s1hat_get_poly ✅ 2s 3s -33%
sk_s2hat_get_poly ✅ 2s 2s +0%
unpack_sk ✅ 2s 3s -33%
unpack_sk_s1hat ✅ 2s 1s +100%
yvec_get_poly ✅ 2s 3s -33%
yvec_init ✅ 2s 3s -33%
fqscale ✅ 1s 3s -67%
keccakf1600_extract_bytes (big endian) ✅ 1s 2s -50%
keccakf1600_xor_bytes (big endian) ✅ 1s 4s -75%
keccakf1600x4_extract_bytes_native ✅ 1s 3s -67%
keccakf1600x4_permute ✅ 1s 4s -75%
keccakf1600x4_xor_bytes_native ✅ 1s 3s -67%
mld_ct_cmask_neg_i32 ✅ 1s 3s -67%
mld_ct_cmask_nonzero_u8 ✅ 1s 2s -50%
mld_ct_get_optblocker_u8 ✅ 1s 1s +0%
mld_keccakf1600_extract_bytes ✅ 1s 2s -50%
mld_keccakf1600x4_extract_bytes_c ✅ 1s 2s -50%
mld_sign_attempt ✅ 1s - new
montgomery_reduce ✅ 1s 3s -67%
ntt_native_aarch64 ✅ 1s 3s -67%
pack_sk_rho_key_tr_s2 ✅ 1s 3s -67%
pointwise_native_aarch64 ✅ 1s 5s -80%
poly_caddq ✅ 1s 2s -50%
poly_caddq_c ✅ 1s 2s -50%
poly_decompose_c ✅ 1s 4s -75%
poly_invntt_tomont_native ✅ 1s 4s -75%
poly_permute_bitrev_to_custom_optional_native ✅ 1s 4s -75%
poly_uniform_gamma1 ✅ 1s 4s -75%
poly_use_hint_c ✅ 1s 3s -67%
polyeta_pack ✅ 1s 3s -67%
polyt0_pack ✅ 1s 2s -50%
polyvec_matrix_expand_serial ✅ 1s 8s -88%
polyveck_unpack_eta ✅ 1s 2s -50%
polyvecl_chknorm ✅ 1s 10s -90%
polyvecl_pack_eta ✅ 1s 3s -67%
polyvecl_uniform_gamma1 ✅ 1s 3s -67%
polyvecl_unpack_eta ✅ 1s 2s -50%
polyz_pack ✅ 1s 2s -50%
reduce32 ✅ 1s 2s -50%
shake128_init ✅ 1s 3s -67%
shake128_release ✅ 1s 1s +0%
shake128x4_absorb_once ✅ 1s 3s -67%
shake128x4_squeezeblocks ✅ 1s 1s +0%
shake256_init ✅ 1s 3s -67%
shake256_release ✅ 1s 2s -50%
sk_t0hat_get_poly ✅ 1s 2s -50%
unpack_sk_s2hat ✅ 1s 4s -75%
use_hint ✅ 1s 2s -50%

@oqs-bot

oqs-bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

CBMC Results (ML-DSA-65)

⚠️ Attention Required

Proof Status Current Previous Change
compute_pack_t0_t1 ⚠️ 123s 13s +846%
mld_attempt_signature_generation ⚠️ 235s 63s +273%
sig_unpack_hints ⚠️ 27s 2s +1250%
sign_keypair_internal ⚠️ 23s 5s +360%
sign_pk_from_sk ⚠️ 41s 6s +583%
sign_signature_internal ⚠️ 180s 55s +227%
sign_verify_internal ⚠️ 355s 177s +101%
Full Results (210 proofs)
Proof Status Current Previous Change
**TOTAL** ✅ 2044s 1784s +14.6%
sign_verify_internal ⚠️ 355s 177s +101%
mld_attempt_signature_generation ⚠️ 235s 63s +273%
sign_signature_internal ⚠️ 180s 55s +227%
polyvecl_pointwise_acc_montgomery_c ✅ 159s 210s -24%
poly_pointwise_montgomery_c ✅ 135s 125s +8%
compute_pack_t0_t1 ⚠️ 123s 13s +846%
polyvec_matrix_expand ✅ 70s 110s -36%
mld_invntt_layer ✅ 58s 109s -47%
sign_pk_from_sk ⚠️ 41s 6s +583%
sig_unpack_hints ⚠️ 27s 2s +1250%
sign_keypair_internal ⚠️ 23s 5s +360%
fqmul ✅ 22s 40s -45%
mld_ntt_layer ✅ 22s 41s -46%
polyvec_matrix_expand_serial ✅ 18s 27s -33%
polyveck_ntt ✅ 15s 7s +114%
keccakf1600x4_permute_native ✅ 12s 23s -48%
rej_uniform ✅ 11s 18s -39%
mld_ntt_butterfly_block ✅ 10s 24s -58%
polyveck_decompose ✅ 10s 12s -17%
poly_ntt_c ✅ 9s 19s -53%
polyt0_unpack ✅ 9s 16s -44%
rej_uniform_native_x86_64 ✅ 9s - new
mld_check_pct ✅ 8s 14s -43%
polyvec_matrix_pointwise_montgomery_yvec ✅ 8s 18s -56%
poly_chknorm_c ✅ 7s 15s -53%
rej_uniform_c ✅ 7s 14s -50%
poly_invntt_tomont_c ✅ 6s 11s -45%
poly_uniform_eta_4x ✅ 6s 14s -57%
fqscale ✅ 5s 3s +67%
keccak_absorb_once_x4 ✅ 5s 8s -38%
mld_compute_pack_z ✅ 5s 7s -29%
mld_ct_cmask_nonzero_u32 ✅ 5s 4s +25%
nttunpack_native_x86_64 ✅ 5s 3s +67%
poly_decompose_c ✅ 5s 5s +0%
poly_uniform_4x ✅ 5s 13s -62%
poly_uniform_eta ✅ 5s 4s +25%
polyvecl_chknorm ✅ 5s 7s -29%
polyvecl_ntt ✅ 5s 4s +25%
sign_signature ✅ 5s 6s -17%
sign_signature_pre_hash_shake256 ✅ 5s 3s +67%
mld_keccakf1600x4_xor_bytes_c ✅ 4s 2s +100%
mld_sample_s1_s2 ✅ 4s 6s -33%
mld_sample_s1_s2_serial ✅ 4s 4s +0%
mld_sign_attempt ✅ 4s - new
mld_sign_resume ✅ 4s - new
poly_chknorm_native ✅ 4s 2s +100%
poly_invntt_tomont_native ✅ 4s 2s +100%
poly_power2round ✅ 4s 4s +0%
poly_uniform_gamma1_4x ✅ 4s 4s +0%
poly_use_hint_c ✅ 4s 5s -20%
poly_use_hint_native_aarch64 ✅ 4s 3s +33%
poly_use_hint_native_x86_64 ✅ 4s - new
polyeta_pack ✅ 4s 3s +33%
polyveck_caddq ✅ 4s 6s -33%
polyveck_chknorm ✅ 4s 6s -33%
polyz_unpack_c ✅ 4s 13s -69%
rej_uniform_eta_native_x86_64 ✅ 4s - new
sign_verify ✅ 4s 3s +33%
sign_verify_pre_hash_shake256 ✅ 4s 5s -20%
unpack_sk ✅ 4s 3s +33%
decompose ✅ 3s 1s +200%
keccak_f1600_x1_native_aarch64 ✅ 3s 2s +50%
keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid ✅ 3s 2s +50%
keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid ✅ 3s 2s +50%
keccak_init ✅ 3s 1s +200%
keccakf1600_extract_bytes (big endian) ✅ 3s 2s +50%
keccakf1600x4_xor_bytes_native ✅ 3s 3s +0%
mld_ct_cmask_nonzero_u8 ✅ 3s 3s +0%
mld_ct_get_optblocker_i64 ✅ 3s 2s +50%
mld_ct_sel_int32 ✅ 3s 3s +0%
mld_h ✅ 3s 2s +50%
mld_keccakf1600_extract_bytes ✅ 3s 1s +200%
mld_keccakf1600x4_extract_bytes_c ✅ 3s 3s +0%
ntt_native_aarch64 ✅ 3s 2s +50%
ntt_native_x86_64 ✅ 3s 2s +50%
pack_sig_h ✅ 3s 5s -40%
pack_sk_rho_key_tr_s2 ✅ 3s 2s +50%
pointwise_acc_native_aarch64 ✅ 3s 6s -50%
pointwise_acc_native_x86_64 ✅ 3s 8s -62%
poly_add ✅ 3s 9s -67%
poly_caddq_c ✅ 3s 2s +50%
poly_caddq_native_aarch64 ✅ 3s 2s +50%
poly_decompose ✅ 3s 2s +50%
poly_ntt ✅ 3s 2s +50%
poly_reduce ✅ 3s 3s +0%
poly_use_hint ✅ 3s 3s +0%
polyt0_pack ✅ 3s 3s +0%
polyt1_unpack ✅ 3s 5s -40%
polyvec_matrix_pointwise_montgomery_row ✅ 3s 1s +200%
polyveck_reduce ✅ 3s 4s -25%
polyvecl_pack_eta ✅ 3s 3s +0%
polyvecl_pointwise_acc_montgomery_native ✅ 3s 2s +50%
polyvecl_uniform_gamma1 ✅ 3s 2s +50%
polyvecl_uniform_gamma1_serial ✅ 3s 3s +0%
polyvecl_unpack_eta ✅ 3s 3s +0%
polyw1_pack_32 ✅ 3s 4s -25%
polyw1_pack_88 ✅ 3s 2s +50%
polyz_unpack_17_native_aarch64 ✅ 3s 3s +0%
rej_eta_c ✅ 3s 5s -40%
rej_eta_native ✅ 3s 3s +0%
rej_uniform_eta_native_aarch64 ✅ 3s 4s -25%
shake256 ✅ 3s 2s +50%
shake256_release ✅ 3s 2s +50%
sign_keypair ✅ 3s 3s +0%
sign_signature_extmu ✅ 3s 2s +50%
sign_signature_pre_hash_internal ✅ 3s 3s +0%
unpack_sk_t0hat ✅ 3s 5s -40%
caddq ✅ 2s 3s -33%
intt_native_x86_64 ✅ 2s 3s -33%
keccak_absorb ✅ 2s 3s -33%
keccak_f1600_x1_native_aarch64_v84a ✅ 2s 3s -33%
keccak_f1600_x4_native_aarch64_v84a ✅ 2s 4s -50%
keccak_finalize ✅ 2s 2s +0%
keccak_squeezeblocks_x4 ✅ 2s 5s -60%
keccakf1600_permute ✅ 2s 2s +0%
keccakf1600_permute_native ✅ 2s 3s -33%
keccakf1600x4_extract_bytes ✅ 2s 4s -50%
keccakf1600x4_extract_bytes_native ✅ 2s 4s -50%
mld_ct_get_optblocker_u8 ✅ 2s 2s +0%
mld_ct_memcmp ✅ 2s 2s +0%
mld_keccakf1600_permute_c ✅ 2s 6s -67%
mld_polymat_expand_entry ✅ 2s 4s -50%
mld_sign_finish ✅ 2s - new
mld_value_barrier_i64 ✅ 2s 2s +0%
mld_value_barrier_u32 ✅ 2s 3s -33%
mld_value_barrier_u8 ✅ 2s 3s -33%
pack_sig_z ✅ 2s 2s +0%
pack_sk_s1 ✅ 2s 5s -60%
pointwise_native_aarch64 ✅ 2s 5s -60%
pointwise_native_x86_64 ✅ 2s 3s -33%
poly_caddq ✅ 2s 2s +0%
poly_caddq_native_x86_64 ✅ 2s 3s -33%
poly_challenge ✅ 2s 6s -67%
poly_chknorm ✅ 2s 4s -50%
poly_chknorm_native_x86_64 ✅ 2s 3s -33%
poly_decompose_native_x86_64 ✅ 2s 3s -33%
poly_invntt_tomont ✅ 2s 3s -33%
poly_ntt_native ✅ 2s 4s -50%
poly_permute_bitrev_to_custom_optional ✅ 2s 2s +0%
poly_permute_bitrev_to_custom_optional_native ✅ 2s 4s -50%
poly_pointwise_montgomery ✅ 2s 3s -33%
poly_shiftl ✅ 2s 3s -33%
poly_uniform_gamma1 ✅ 2s 3s -33%
poly_use_hint_native ✅ 2s 2s +0%
polyeta_unpack ✅ 2s 8s -75%
polyveck_invntt_tomont ✅ 2s 8s -75%
polyveck_pack_eta ✅ 2s 4s -50%
polyveck_pack_w1 ✅ 2s 3s -33%
polyveck_unpack_eta ✅ 2s 6s -67%
polyvecl_pointwise_acc_montgomery ✅ 2s 3s -33%
polyvecl_unpack_z ✅ 2s 3s -33%
polyw1_pack ✅ 2s 4s -50%
polyz_pack ✅ 2s 3s -33%
polyz_unpack ✅ 2s 3s -33%
polyz_unpack_19_native_aarch64 ✅ 2s 3s -33%
polyz_unpack_native ✅ 2s 4s -50%
polyz_unpack_native_x86_64 ✅ 2s 3s -33%
reduce32 ✅ 2s 3s -33%
rej_eta ✅ 2s 2s +0%
rej_uniform_native ✅ 2s 4s -50%
shake128_absorb ✅ 2s 2s +0%
shake128_release ✅ 2s 3s -33%
shake128x4_absorb_once ✅ 2s 3s -33%
shake128x4_squeezeblocks ✅ 2s 3s -33%
shake256_absorb ✅ 2s 2s +0%
shake256x4_absorb_once ✅ 2s 3s -33%
sign_verify_extmu ✅ 2s 3s -33%
sk_s1hat_get_poly ✅ 2s 6s -67%
sk_t0hat_get_poly ✅ 2s 2s +0%
sys_check_capability ✅ 2s 4s -50%
unpack_pk_t1 ✅ 2s 5s -60%
unpack_sk_s1hat ✅ 2s 2s +0%
intt_native_aarch64 ✅ 1s 3s -67%
keccak_f1600_x4_native_avx2 ✅ 1s 2s -50%
keccak_squeeze ✅ 1s 4s -75%
keccakf1600_xor_bytes ✅ 1s 2s -50%
keccakf1600_xor_bytes (big endian) ✅ 1s 2s -50%
keccakf1600x4_permute ✅ 1s 4s -75%
keccakf1600x4_xor_bytes ✅ 1s 1s +0%
make_hint ✅ 1s 2s -50%
mld_ct_abs_i32 ✅ 1s 2s -50%
mld_ct_cmask_neg_i32 ✅ 1s 2s -50%
mld_ct_get_optblocker_u32 ✅ 1s 3s -67%
mld_prepare_domain_separation_prefix ✅ 1s 2s -50%
montgomery_reduce ✅ 1s 4s -75%
pack_sig_c ✅ 1s 5s -80%
poly_caddq_native ✅ 1s 2s -50%
poly_chknorm_native_aarch64 ✅ 1s 3s -67%
poly_decompose_32_native_aarch64 ✅ 1s 3s -67%
poly_decompose_88_native_aarch64 ✅ 1s 1s +0%
poly_decompose_native ✅ 1s 3s -67%
poly_pointwise_montgomery_native ✅ 1s 3s -67%
poly_sub ✅ 1s 3s -67%
poly_uniform ✅ 1s 4s -75%
polyt1_pack ✅ 1s 3s -67%
power2round ✅ 1s 1s +0%
rej_uniform_native_aarch64 ✅ 1s 3s -67%
shake128_finalize ✅ 1s 1s +0%
shake128_init ✅ 1s 2s -50%
shake128_squeeze ✅ 1s 2s -50%
shake256_finalize ✅ 1s 1s +0%
shake256_init ✅ 1s 2s -50%
shake256_squeeze ✅ 1s 3s -67%
shake256x4_squeezeblocks ✅ 1s 2s -50%
sign_verify_pre_hash_internal ✅ 1s 5s -80%
sk_s2hat_get_poly ✅ 1s 2s -50%
unpack_sk_s2hat ✅ 1s 4s -75%
use_hint ✅ 1s 2s -50%
yvec_get_poly ✅ 1s 3s -67%
yvec_init ✅ 1s 3s -67%

mkannwischer added a commit that referenced this pull request Aug 30, 2026
Add a lint check deriving the theorem names each proof file should declare
from its filename, so a missing or misnamed theorem fails linting instead of
going unnoticed.

The theorems are enumerated with the same list_thms.sh mlkem-native uses; both
scripts are now identical across the two repositories.

 - Depends on proof alignment in #1404

Co-authored-by: Andreas Hatziiliou <andreas.hatziiliou@savoirfairelinux.com>
Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
@oqs-bot

oqs-bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

CBMC Results (ML-DSA-87)

⚠️ Attention Required

Proof Status Current Previous Change
**TOTAL** ⚠️ 3022s 2151s +40.5%
compute_pack_t0_t1 ⚠️ 200s 19s +953%
mld_attempt_signature_generation ⚠️ 326s 55s +493%
sig_unpack_hints ⚠️ 28s 3s +833%
sign_keypair_internal ⚠️ 53s 6s +783%
sign_pk_from_sk ⚠️ 49s 6s +717%
sign_signature_internal ⚠️ 345s 42s +721%
sign_verify_internal ⚠️ 809s 97s +734%
Full Results (210 proofs)
Proof Status Current Previous Change
**TOTAL** ⚠️ 3022s 2151s +40.5%
sign_verify_internal ⚠️ 809s 97s +734%
sign_signature_internal ⚠️ 345s 42s +721%
mld_attempt_signature_generation ⚠️ 326s 55s +493%
polyvecl_pointwise_acc_montgomery_c ✅ 243s 353s -31%
compute_pack_t0_t1 ⚠️ 200s 19s +953%
poly_pointwise_montgomery_c ✅ 157s 144s +9%
polyvec_matrix_expand ✅ 85s 324s -74%
mld_invntt_layer ✅ 60s 115s -48%
sign_keypair_internal ⚠️ 53s 6s +783%
sign_pk_from_sk ⚠️ 49s 6s +717%
sig_unpack_hints ⚠️ 28s 3s +833%
fqmul ✅ 23s 43s -47%
mld_ntt_layer ✅ 23s 45s -49%
polyvec_matrix_expand_serial ✅ 23s 38s -39%
keccakf1600x4_permute_native ✅ 12s 23s -48%
mld_ntt_butterfly_block ✅ 11s 24s -54%
poly_ntt_c ✅ 11s 21s -48%
polyt0_unpack ✅ 11s 14s -21%
polyvec_matrix_pointwise_montgomery_yvec ✅ 10s 18s -44%
polyveck_decompose ✅ 9s 13s -31%
poly_chknorm_c ✅ 7s 15s -53%
poly_invntt_tomont_c ✅ 7s 12s -42%
polyeta_unpack ✅ 7s 17s -59%
rej_uniform ✅ 7s 15s -53%
rej_uniform_c ✅ 7s 19s -63%
rej_uniform_native ✅ 7s 8s -12%
rej_uniform_native_x86_64 ✅ 7s - new
mld_check_pct ✅ 6s 16s -62%
ntt_native_x86_64 ✅ 6s 2s +200%
poly_power2round ✅ 6s 3s +100%
poly_uniform_eta_4x ✅ 6s 11s -45%
sign_signature_pre_hash_internal ✅ 6s 5s +20%
sign_signature_pre_hash_shake256 ✅ 6s 6s +0%
keccak_absorb ✅ 5s 3s +67%
mld_sample_s1_s2_serial ✅ 5s 8s -38%
pack_sk_s1 ✅ 5s 1s +400%
poly_uniform ✅ 5s 4s +25%
poly_uniform_4x ✅ 5s 13s -62%
polyveck_caddq ✅ 5s 8s -38%
polyveck_invntt_tomont ✅ 5s 9s -44%
polyvecl_chknorm ✅ 5s 7s -29%
polyw1_pack_32 ✅ 5s 4s +25%
polyz_unpack_c ✅ 5s 3s +67%
sign_keypair ✅ 5s 4s +25%
fqscale ✅ 4s 3s +33%
keccak_absorb_once_x4 ✅ 4s 9s -56%
keccakf1600_xor_bytes (big endian) ✅ 4s 2s +100%
mld_compute_pack_z ✅ 4s 8s -50%
mld_h ✅ 4s 3s +33%
mld_keccakf1600_permute_c ✅ 4s 7s -43%
mld_sample_s1_s2 ✅ 4s 6s -33%
montgomery_reduce ✅ 4s 3s +33%
nttunpack_native_x86_64 ✅ 4s 3s +33%
pack_sk_rho_key_tr_s2 ✅ 4s 3s +33%
pointwise_acc_native_aarch64 ✅ 4s 6s -33%
pointwise_acc_native_x86_64 ✅ 4s 6s -33%
pointwise_native_x86_64 ✅ 4s 2s +100%
poly_caddq_native ✅ 4s 4s +0%
poly_caddq_native_aarch64 ✅ 4s 3s +33%
poly_chknorm_native_x86_64 ✅ 4s 2s +100%
poly_decompose_c ✅ 4s 5s -20%
poly_permute_bitrev_to_custom_optional_native ✅ 4s 5s -20%
poly_use_hint_c ✅ 4s 2s +100%
polyveck_unpack_eta ✅ 4s 4s +0%
polyvecl_ntt ✅ 4s 7s -43%
power2round ✅ 4s 4s +0%
shake256_squeeze ✅ 4s 2s +100%
sign_verify ✅ 4s 5s -20%
sign_verify_pre_hash_shake256 ✅ 4s 3s +33%
sk_s1hat_get_poly ✅ 4s 3s +33%
unpack_sk_t0hat ✅ 4s 7s -43%
keccak_squeezeblocks_x4 ✅ 3s 4s -25%
keccakf1600x4_extract_bytes_native ✅ 3s 2s +50%
keccakf1600x4_permute ✅ 3s 3s +0%
make_hint ✅ 3s 3s +0%
mld_ct_abs_i32 ✅ 3s 3s +0%
mld_ct_cmask_nonzero_u32 ✅ 3s 2s +50%
mld_ct_cmask_nonzero_u8 ✅ 3s 3s +0%
mld_keccakf1600_extract_bytes ✅ 3s 4s -25%
mld_sign_finish ✅ 3s - new
mld_sign_resume ✅ 3s - new
mld_value_barrier_u8 ✅ 3s 3s +0%
pack_sig_h ✅ 3s 4s -25%
pack_sig_z ✅ 3s 5s -40%
poly_caddq_c ✅ 3s 3s +0%
poly_decompose ✅ 3s 3s +0%
poly_decompose_32_native_aarch64 ✅ 3s 5s -40%
poly_decompose_native_x86_64 ✅ 3s 2s +50%
poly_invntt_tomont ✅ 3s 1s +200%
poly_invntt_tomont_native ✅ 3s 5s -40%
poly_ntt ✅ 3s 3s +0%
poly_permute_bitrev_to_custom_optional ✅ 3s 3s +0%
poly_pointwise_montgomery ✅ 3s 4s -25%
poly_reduce ✅ 3s 2s +50%
poly_uniform_eta ✅ 3s 4s -25%
poly_uniform_gamma1_4x ✅ 3s 3s +0%
poly_use_hint ✅ 3s 1s +200%
poly_use_hint_native ✅ 3s 3s +0%
polyt0_pack ✅ 3s 4s -25%
polyvec_matrix_pointwise_montgomery_row ✅ 3s 3s +0%
polyveck_ntt ✅ 3s 11s -73%
polyz_unpack ✅ 3s 2s +50%
polyz_unpack_17_native_aarch64 ✅ 3s 3s +0%
polyz_unpack_native ✅ 3s 4s -25%
rej_eta_c ✅ 3s 5s -40%
rej_eta_native ✅ 3s 6s -50%
rej_uniform_eta_native_aarch64 ✅ 3s 5s -40%
rej_uniform_eta_native_x86_64 ✅ 3s - new
shake128_init ✅ 3s 1s +200%
shake128_release ✅ 3s 4s -25%
shake128x4_absorb_once ✅ 3s 5s -40%
shake256_finalize ✅ 3s 2s +50%
shake256x4_squeezeblocks ✅ 3s 1s +200%
sign_signature ✅ 3s 5s -40%
sign_signature_extmu ✅ 3s 4s -25%
unpack_sk_s2hat ✅ 3s 3s +0%
caddq ✅ 2s 4s -50%
decompose ✅ 2s 3s -33%
intt_native_aarch64 ✅ 2s 3s -33%
keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid ✅ 2s 4s -50%
keccak_f1600_x4_native_avx2 ✅ 2s 2s +0%
keccak_finalize ✅ 2s 1s +100%
keccak_squeeze ✅ 2s 2s +0%
keccakf1600_extract_bytes (big endian) ✅ 2s 3s -33%
keccakf1600_permute ✅ 2s 3s -33%
keccakf1600_xor_bytes ✅ 2s 3s -33%
keccakf1600x4_extract_bytes ✅ 2s 2s +0%
keccakf1600x4_xor_bytes ✅ 2s 3s -33%
mld_ct_sel_int32 ✅ 2s 3s -33%
mld_keccakf1600x4_xor_bytes_c ✅ 2s 4s -50%
mld_polymat_expand_entry ✅ 2s 3s -33%
ntt_native_aarch64 ✅ 2s 6s -67%
pack_sig_c ✅ 2s 4s -50%
pointwise_native_aarch64 ✅ 2s 5s -60%
poly_add ✅ 2s 6s -67%
poly_caddq_native_x86_64 ✅ 2s 2s +0%
poly_chknorm_native ✅ 2s 4s -50%
poly_chknorm_native_aarch64 ✅ 2s 4s -50%
poly_decompose_88_native_aarch64 ✅ 2s 2s +0%
poly_decompose_native ✅ 2s 2s +0%
poly_ntt_native ✅ 2s 3s -33%
poly_pointwise_montgomery_native ✅ 2s 5s -60%
poly_sub ✅ 2s 3s -33%
poly_uniform_gamma1 ✅ 2s 4s -50%
poly_use_hint_native_aarch64 ✅ 2s 2s +0%
polyt1_pack ✅ 2s 3s -33%
polyveck_chknorm ✅ 2s 3s -33%
polyveck_pack_eta ✅ 2s 6s -67%
polyveck_pack_w1 ✅ 2s 3s -33%
polyvecl_pack_eta ✅ 2s 3s -33%
polyvecl_pointwise_acc_montgomery ✅ 2s 5s -60%
polyvecl_uniform_gamma1_serial ✅ 2s 4s -50%
polyvecl_unpack_eta ✅ 2s 5s -60%
polyw1_pack ✅ 2s 4s -50%
polyw1_pack_88 ✅ 2s 3s -33%
polyz_pack ✅ 2s 5s -60%
polyz_unpack_native_x86_64 ✅ 2s 3s -33%
reduce32 ✅ 2s 3s -33%
rej_eta ✅ 2s 4s -50%
rej_uniform_native_aarch64 ✅ 2s 2s +0%
shake128_squeeze ✅ 2s 2s +0%
shake128x4_squeezeblocks ✅ 2s 3s -33%
shake256_absorb ✅ 2s 2s +0%
shake256_release ✅ 2s 3s -33%
shake256x4_absorb_once ✅ 2s 2s +0%
sign_verify_extmu ✅ 2s 3s -33%
sk_s2hat_get_poly ✅ 2s 3s -33%
sk_t0hat_get_poly ✅ 2s 4s -50%
unpack_pk_t1 ✅ 2s 1s +100%
unpack_sk ✅ 2s 5s -60%
use_hint ✅ 2s 3s -33%
yvec_get_poly ✅ 2s 4s -50%
yvec_init ✅ 2s 4s -50%
intt_native_x86_64 ✅ 1s 3s -67%
keccak_f1600_x1_native_aarch64 ✅ 1s 1s +0%
keccak_f1600_x1_native_aarch64_v84a ✅ 1s 1s +0%
keccak_f1600_x4_native_aarch64_v84a ✅ 1s 4s -75%
keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid ✅ 1s 3s -67%
keccak_init ✅ 1s 3s -67%
keccakf1600_permute_native ✅ 1s 4s -75%
keccakf1600x4_xor_bytes_native ✅ 1s 3s -67%
mld_ct_cmask_neg_i32 ✅ 1s 4s -75%
mld_ct_get_optblocker_i64 ✅ 1s 3s -67%
mld_ct_get_optblocker_u32 ✅ 1s 2s -50%
mld_ct_get_optblocker_u8 ✅ 1s 3s -67%
mld_ct_memcmp ✅ 1s 3s -67%
mld_keccakf1600x4_extract_bytes_c ✅ 1s 2s -50%
mld_prepare_domain_separation_prefix ✅ 1s 4s -75%
mld_sign_attempt ✅ 1s - new
mld_value_barrier_i64 ✅ 1s 1s +0%
mld_value_barrier_u32 ✅ 1s 2s -50%
poly_caddq ✅ 1s 2s -50%
poly_challenge ✅ 1s 5s -80%
poly_chknorm ✅ 1s 3s -67%
poly_shiftl ✅ 1s 4s -75%
poly_use_hint_native_x86_64 ✅ 1s - new
polyeta_pack ✅ 1s 4s -75%
polyt1_unpack ✅ 1s 4s -75%
polyveck_reduce ✅ 1s 3s -67%
polyvecl_pointwise_acc_montgomery_native ✅ 1s 3s -67%
polyvecl_uniform_gamma1 ✅ 1s 2s -50%
polyvecl_unpack_z ✅ 1s 4s -75%
polyz_unpack_19_native_aarch64 ✅ 1s 4s -75%
shake128_absorb ✅ 1s 4s -75%
shake128_finalize ✅ 1s 2s -50%
shake256 ✅ 1s 2s -50%
shake256_init ✅ 1s 2s -50%
sign_verify_pre_hash_internal ✅ 1s 3s -67%
sys_check_capability ✅ 1s 3s -67%
unpack_sk_s1hat ✅ 1s 2s -50%

@mkannwischer
mkannwischer marked this pull request as ready for review August 30, 2026 08:35
@mkannwischer
mkannwischer requested a review from a team as a code owner August 30, 2026 08:35
REWRITE_TAC[MAYCHANGE_REGS_AND_FLAGS_PERMITTED_BY_ABI; SOME_FLAGS] THEN
PROVE_SAFETY_SPEC_TAC ~public_vars:public_vars
MLDSA_INTT_TMC_EXEC));;
let full_spec =

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't yet see the necessity of this rewrite. This is an interim result, not a top-level statement, or not?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rewrite is only to make linting easier: #1009

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(as stated in the commit message)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think we should not lint interim results?

@hanno-becker hanno-becker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this cleanup. I'd appreciate if we could inspect what this type_invention ref manipulation is about -- it seems wrong -- but I'm also OK opening a follow-up issue for that.

@mkannwischer
mkannwischer enabled auto-merge August 31, 2026 05:18
@mkannwischer
mkannwischer added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit 0d8e6a2 Aug 31, 2026
429 checks passed
@mkannwischer
mkannwischer deleted the mjk/hol-light-safe-decl-shape branch August 31, 2026 07:18
mkannwischer added a commit that referenced this pull request Aug 31, 2026
Add a lint check deriving the theorem names each proof file should declare
from its filename, so a missing or misnamed theorem fails linting instead of
going unnoticed.

The theorems are enumerated with the same list_thms.sh mlkem-native uses; both
scripts are now identical across the two repositories.

 - Depends on proof alignment in #1404

Co-authored-by: Andreas Hatziiliou <andreas.hatziiliou@savoirfairelinux.com>
Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants