Formally verifying the complexity of OCaml programs with CFML -- interlude
- July 30, 2015
- Last updated on 2015/08/03
This small interlude post is not about Coq nor CFML: I present a data structure from Okasaki’s Purely functional data structures, implemented in OCaml.
It comes as a preliminary explanation for an incoming formalization of it in CFML (see next post), including an complexity analysis!

Formally verifying the complexity of OCaml programs with CFML -- part 1
- July 18, 2015
- Last updated on 2015/08/03
In a recent
paper, Arthur Charguéraud and François Pottier present a formal
proof of an OCaml implementation of Tarjan’s union-find algorithm. The
proof covers two aspects: first, functional correctness (“the algorithm
is correct”), but also asymptotic complexity. For example, one of the
results of the paper is that the link
function runs in
O(α(n)) elementary steps, α being the inverse of the Ackermann
function.
Actually, the complexity results of the paper are not presented using the “big-O” notation, commonly used in asymptotic complexity proofs: the various constants are explicit and manipulated through the proof.
In these blog posts (current, interlude and final), I’ll describe a tentative extension of CFML, the Coq library François and Arthur used for their proof. Its goal is to enable asymptotic reasoning, big-O notations and such to be used to prove complexity of programs.
