Thank you very much for sharing this marvelous experience. Being in other (non-math) fields, I’m particularly interested in the process and tools used to develop the book.

How did you -with and/or others- convinced or helped authors to use git(hub)? What help did you had to offer, on what areas, and what tools where used for such a distributed version control system?

The same applies to the editor: what ones were used? What kind of support you had to give the authors?

I’m sure those learnings can be of great value for many other similar teams.

In any case, thank you all very much. This is a great and inspiring example of what can we collectively achieve if we collaborate a little more. :)

Best…

—

e

For instance, McBride $\mathsf{evil}$ is Bauer’s g, with $f = \mathsf{succ}$ inlined. If you match up the equations by renaming the matching ingredient, McBride proves $\mathsf{evil}\, 666 = \mathsf{succ} (\mathsf{evil}\, 666)$, that is (strictly speaking) becomes $f(u_{\nu \to \tau}\, n\, n) = f(f(u_{\nu \to \tau}\, n\, n))$, while Bauer uses $u_{\nu \to \tau}\, n\, n$ directly. Of course, once the proof is complete, these are all the same number, so it’s a very minor difference.

Critically, the assumed setting is different: McBride uses only what Bauer would call $u_{N \to N}: N \to N \to N$ (that is, $u_{\tau}: \nu \to \tau$ with $\nu = N$ and $\tau = N \to N$), while Bauer is more general (you could modify his proof to give only fixpoints for types $\tau$ where $u_\tau$ exists, if you wanted to do this weakening).

]]>The second reason is that it is okay, in my opinion, to use the word “provably” in negative positions (i.e., on the left-hand side of an implication). An example of a negative occurrence is: “The goal is to have a provably correct algorithm”. Or more explicitly: “If we had a provably correct algorithm, then we’d have reached our goal”. There seems to me to be a clear difference between “I want my algorithm to be correct” and “I want to be able to prove it”.

In positive statements, it is more iffy. I agree that it is mostly redundant to say in the title of your paper that it contains a “provable theorem”. It would be equally silly to say that it contains a “true theorem”. On the other hand, redundancy is not always a bad thing, depending on who might be the audience. In many parts of non-theoretical computer science, heuristic algorithms might be the norm, and testing might be an accepted means to establishing correctness, so someone might want to say that their algorithm is “provably correct” to emphasize that point and to set themselves apart from that community.

Also, if I say “I cannot solve 3-SAT in polynomial time”, it’s just a statement of personal inadequacy, but if I say “I provably cannot solve 3-SAT in polynomial time”, it’s a revolutionary claim.

]]>