Huffman
October 31, 2025 · View on GitHub
This projects contains a Rocq proof of the correctness of the Huffman coding algorithm, as described in David A. Huffman's paper A Method for the Construction of Minimum-Redundancy Codes, Proc. IRE, pp. 1098-1101, September 1952.
Meta
- Author(s):
- Rocq-community maintainer(s):
- Karl Palmskog (@palmskog)
- License: GNU Lesser General Public License v2.1 or later
- Compatible Rocq/Coq versions: 8.12 or later
- Additional dependencies: none
- Rocq/Coq namespace:
Huffman - Related publication(s):
Building and installation instructions
The easiest way to install the latest released version of Huffman is via OPAM:
opam repo add rocq-released https://rocq-prover.org/opam/released
opam install coq-huffman
To instead build and install manually, do:
git clone https://github.com/rocq-community/huffman.git
cd huffman
make # or make -j <number-of-cores-on-your-machine>
make install
Documentation
For more information about the project, see the technical report describing the formalization.
Running extracted code
To extract code and obtain the program, run
make run_huffman.ml
Next, open an OCaml toplevel (e.g., ocaml) and do
#use "run_huffman.ml";;
To get the code that gives the frequency string:
let code = huffman "abbcccddddeeeee";;
To code a string:
let c = encode code "abcde";;
To decode a string:
decode code c;;