Skip to content

ML-DSA: F*: add specs and proofs to the trait layer#1279

Draft
W95Psp wants to merge 50 commits intomainfrom
libcrux-ml-dsa-prove-trait-operations
Draft

ML-DSA: F*: add specs and proofs to the trait layer#1279
W95Psp wants to merge 50 commits intomainfrom
libcrux-ml-dsa-prove-trait-operations

Conversation

@W95Psp
Copy link
Contributor

@W95Psp W95Psp commented Jan 12, 2026

Libcrux's ML-DSA delegates lower-level operations to simd::trait::Operations, a trait that defines parallel operations that can be performed by various "backends": avx2 on Intel CPUs, or portable otherwise.

In this repo, the proofs are mostly about functions below that abstraction.
The Operations trait lacks specifications, and its portable and avx2 implementations lacks glue proofs.
Some of the higher-level operations lack proofs: they rely on this Operations trait, that are often lacking specifications.

This PR aims at propagating specifications and proofs from the lower-level concrete (e.g. avx2 or portable) operations to the Operations trait, and then to the higher-level operations.

This PR (mostly by @clementblaudeau) is a start. This PR:

  • adds some specifications to the trait
  • adds some glue proofs between the implementations of the traits and the concrete (already proven) operations
  • add a few proofs on higher-level operations, demonstrating that the proofs propagate correctly through the trait abstraction

This work is very partial, more specifications and proofs need to be added.

@jschneider-bensch jschneider-bensch added the waiting-on-author Status: This is awaiting some action from the author. label Jan 20, 2026
clementblaudeau and others added 21 commits March 3, 2026 11:04
The assume was particularly bad because this inserts `False` in VCs in every pre- and post-conditions, making every proof trivial.
Added some pre-conditions in the definitions of post-conditions. It broke a
proof in the [avx2] implementation
@clementblaudeau clementblaudeau force-pushed the libcrux-ml-dsa-prove-trait-operations branch from b73f055 to 36a8c7b Compare March 13, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-on-author Status: This is awaiting some action from the author.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants