RSSAmplifier

Blog

(untitled)

Machine Logic is Lawrence Paulson's blog on Isabelle/HOL and related topics.

lawrencecpaulson.github.ioRSS feed ↗10 posts

Latest posts

Why is it all in the kernel?

Sensational news! The Collatz conjecture has just been refuted. Ramana Kumar has proved its negation. The proof has been checked in Lean and double‑checked using the independent Nanoda type checker. Unfortunately, the proof is wrong. It exploited a bug in the Lean kernel. Somehow, Nanoda didn’t detect the error either. Now I am not writing to gloat about this. Soundness bugs have been discovered…

The Dottie Number

Once upon a time, goes the story , a lady named Dottie got bored and started playing with her calculator, pressing the cosine key over and over again. At first the numbers fluctuated wildly, but over time they always settled down to approximately 0.739085. (This only works if your calculator is set to radians, not degrees.) She had discovered the unique fixed point of the cosine function. The…

Nullius in verba: the motto of the Royal Society

Nullius in verba (“take nobody’s word for it”) is the motto of the Royal Society, and as they explain , is “an expression of the determination of Fellows to withstand the domination of authority and to verify all statements by an appeal to facts determined by experiment.” At first glance, this motto is wildly hypocritical: why then does the Royal Society promote meetings and lectures? Why does it…

Mizar: the first usable proof assistant for mathematics

In two recent blogposts I have outlined the history of our field, one on the history of proof assistants and another specifically about earlier work on the formalisation of mathematics by machine . And yet, bizarrely, I overlooked one of the earliest and most influential proof assistants for mathematics: Mizar . Here, to make amends, are a few words on Mizar and its influence on our field. I only…

"Why not just use Lean?"

I have been told that when proposing to formalise mathematics these days, you have to explain why you are not using Lean. And that reminds me why I left the dependent-typed world 40 years ago: its cultism, insularity and conformity. Lean is a great language with good tools, a large library and a huge, enthusiastic user community that has lately accomplished astounding things. But let’s not forget…

Memories: doing my PhD at Stanford, under John L Hennessy

When young researchers get together, one topic of conversation is “who supervised your PhD?” Back in the day, Rod Burstall was often named. Also mentioned were Robin Milner, Dana Scott and Gordon Plotkin. Then it would be my turn: “ John Hennessy ”. Who? Even today, while everyone has heard of Mark Zuckerberg and Bill Gates, few people can name the guy who is in charge of Google’s sprawling…

Broken proofs and broken provers

People expect perfection. Consider the reaction when someone who has been vaccinated against a particular disease nevertheless dies of it. Mathematical proof carries the aura of perfection, but again people’s expectations will sometimes be dashed. As outlined in an earlier post , the verification of a real world system is never finished. We can seldom capture 100% of reality, so failure remains…

50 years of proof assistants

Crackpots ranging from billionaire Peter Thiel to random YouTube influencers claim that science has been stagnating for the past 50 years. They admit that computing is an exception: they don’t pretend that my personal 32GB laptop is not an advance over the 16MB mainframe that served the whole Caltech community when I was there. Instead they claim that advances in computing were driven solely by…

Set theory with types

It is known that mathematics is heavily reliant on set theory, but no one can agree on what set theory is. Many people today understand that we have a choice between set theory and type theory , but they don’t know what type theory is either. Many think that type theory refers to some sort of dependent type theory, as found in Lean or Agda, while everything else is set theory. But prior to 1980 or…

"Why don't you use dependent types?"

To be fair, nobody asks me this exact question. But people have regularly asked why Isabelle dispenses with proof objects. The two questions are essentially the same, because proof objects are intrinsic to all the usual type theories. They are also completely unnecessary and a huge waste of space. As described in an earlier post , type checking in the implementation language (rather than in the…