How I came to write THAT paper with Leslie Lamport
Machine Logic
At the junction of computation, logic and mathematics
How I came to write THAT paper with Leslie Lamport
21 Aug 2026
general
type theory
set theory
memories
As people grow older, they grow wiser, or at least they think they do.<br>Then it becomes their duty to impart their accumulated wisdom to the younger generation.<br>Leslie Lamport made his name in distributed systems and fault tolerance.<br>For many he is better known as the author of LaTeX,<br>the famous macro package that makes Donald Knuth’s<br>legendary TeX typesetting system usable<br>for the rest of us.<br>As Leslie grew older, he felt impelled to write a series<br>of fairly wacky papers with titles such as “How to Write a Long Formula”.<br>Another of these papers was called “Types Considered Harmful”, a diatribe against types in specification languages.<br>Its title was an echo of a famous letter,<br>“go to statement considered harmful”,<br>by Edsger Dijkstra. The title of that letter (chosen by the journal editor) was subsequently borrowed by many authors who were against lots of things.<br>Leslie was against types. But how did I get involved?
Types considered harmful
Leslie‘s thesis was that specification languages should be based on an untyped formalism (a sort of set theory) as opposed to a typed formalism. He advanced several arguments in favour: that untyped formalisms were more flexible; that typed formalisms raised numerous anomalies and issues; that what we would view as a type error in a specification would be detected anyway during verification.
There was some sense in this thesis.<br>Type systems were in a state of flux in 1992 when that note was written.<br>Coq (now Rocq) had only just appeared,<br>and big changes were happening to Martin-Löf type theory.<br>As for simple type theories, early implementations of HOL had been around only for a couple of years.<br>It wasn’t clear what any typed calculus could do.<br>Proof assistants did not yet support type classes.<br>John Harrison was years away from introducing his trick to get<br>low-budget dependent types,<br>which works well enough to express $T^n$.
On the other hand, Lamport’s note was a mess. He seemed to be unfamiliar with any actual typed formalism and devoted most of his note to knocking down straw men.<br>So when he submitted his note to TOPLAS<br>for publication and it reached me to referee, my verdict was to reject.<br>The other referee, David McAllester, reached the same verdict.<br>That should’ve been that, but the editor, Andrew Appel, had other ideas.
“Put lipstick on it”
Debate is good, he said. These ideas deserve airing, or something of that sort. But we can’t allow errors in TOPLAS. Why don’t you join with Lamport as co-authors and transform the paper into something technically accurate but in the same spirit? I was game: I knew a fair bit about type systems and I also had my own untyped set-theoretic formalism<br>(Isabelle/ZF),<br>which I was happy to promote.<br>David went along for a bit but soon dropped out.<br>He was smart.1
Leslie and I worked on the paper for a good while.<br>It was a weird form of unwilling co-authorship, but somehow we managed.<br>The new paper captured the core of Leslie‘s thesis while including a saner description of how types worked.<br>Along the way, I witnessed Leslie’s unrivalled TeX mastery:<br>low-level tricks that I have never encountered since.
A second round of review, oh God
Meanwhile, Andrew Appel had stepped down as TOPLAS editor.<br>The new editor, Carl Gunter, had not been informed about the special status of this paper.<br>So when it reached him, he sent it to fresh referees.<br>This was not part of the plan. And the new referees also decided to reject the paper.<br>One of the reports was incoherent.<br>It obviously had been written while its author was suffering a fit of apoplexy.<br>So then I contacted Carl and said, wait a minute, my rejection is worth nothing and this guy‘s rejection is somehow valid? Plus, he’s literally insane. So the paper appeared after all, with a disclaimer expressing wishes<br>for a lively debate, etc. etc. etc.<br>I’m not sure the debate ever happened.
In retrospect
And now we can ask how well Leslie’s thesis holds up 27 years later. It’s fair to say, not so well. Type systems have evolved considerably and they have proved their worth in numerous specification and verification tasks, some on an industrial scale.
the CompCert verified C compiler
seL4: “both the world’s most highly assured and the world’s fastest operating system kernel”
Amazon’s Nitro Isolation Engine
Meanwhile, little progress has been made on the issues that plague set-theoretic formalisms.<br>Without types you don’t have overloading of notation,<br>which is trivial in principle (you can just use lots of different symbols),<br>but a big deal in practice.<br>And worse, the ability to write absolutely anything is mostly an invitation to make mistakes.<br>Verification is an extremely expensive way to find such mistakes,<br>and those you do not find could render your proofs...