English

Verifying the Fisher-Yates Shuffle Algorithm in Dafny

Cryptography and Security 2025-01-13 v1

Abstract

The Fisher-Yates shuffle is a well-known algorithm for shuffling a finite sequence, such that every permutation is equally likely. Despite its simplicity, it is prone to implementation errors that can introduce bias into the generated permutations. We verify its correctness in Dafny as follows. First, we define a functional model that operates on sequences and streams of random bits. Second, we establish that the functional model has the desired distribution. Third, we define an executable imperative implementation that operates on arrays and prove it equivalent to the functional model. The approach may serve as a blueprint for the verification of more complex algorithms.

Keywords

Cite

@article{arxiv.2501.06084,
  title  = {Verifying the Fisher-Yates Shuffle Algorithm in Dafny},
  author = {Stefan Zetzsche and Jean-Baptiste Tristan and Tancrede Lepoint and Mikael Mayer},
  journal= {arXiv preprint arXiv:2501.06084},
  year   = {2025}
}
R2 v1 2026-06-28T21:02:48.041Z