* Ever since I learned a little bit of Coq I wanted to learn to write a Coq proof of the so-called division algorithm that is actually a logical proposition: `forall n m : nat, exists q : nat, exists r : nat, n = q * m + r`
* I recently accomplished that task using what I learned from [Software Foundations](http://www.cis.upenn.edu/~bcpierce/sf/).
* Coq being a system for developing constructive proofs, my proof is in effect a method to construct suitable values `q` and `r` from values `m` and `n`.
* Coq has an intriguing facility for "extracting" an algorithm in Coq's algorithm language (Gallina) to general-purpose functional programming languages including Haskell.
* Separately I have managed to write the divmod operation as a Gallina `Fixpoint` and extract that. I want to note carefully that that task is not what I'm considering here.
* Adam Chlipala has written in [Certified Programming with Dependent Types](http://adam.chlipala.net/cpdt/) that "Many fans of the Curry-Howard correspondence support the idea of extracting programs from proofs. In reality, few users of Coq and related tools do any such thing."

Is it even possible to extract the algorithm implicit in my proof to Haskell? If it is possible, how would it be done?