:14 Tomas Petricek
to accept that program correctness proofs are of a dierent epistemological nature. For example,
mechanised proofs are perhaps better seen as technological artifacts [Turner and Angius 2017].
These two approaches can be seen as two sides of the mathematical culture of programming and
we will refer to them as the mechanist culture and the intuitionalist culture.
The split between the mechanist culture and the intuitionalist culture can be traced (at least) to
the birth of articial intelligence and the rst use of computers for automated theorem proving in
1950s. The Logic Theory Machine designed by Newell and Simon (which would eventually prove
38 of the rst 52 theorems in Principia Mathematica) captured heuristic rules that humans use and
was designed to understand how human beings reason. The work aimed at human understanding
and the prover later produced new proofs, regarded as elegant by human readers. In contrast,
methods advocated by logicians such as Wang [1960] used exhaustive search methods that were
inscrutinizable, but were able to prove all of the 52 theorems much faster than the method of Newell
and Simon [MacKenzie 2001, p.73]. As in the context of program correctness later, the proponents
of the intuitionalist culture such as Newell and Simon focused on human understanding while
Wang and other advocates of the mechanist culture focused on using computers in a way that is
not accessible to humans.
The cleanroom software engineering methodology, developed by Dyer and Mills [[n. d.]] com-
bines the intuitionalist mathematical culture, with its focus on convincing humans via social
processes, with a managerial culture that shifts focus from individuals to organizations. The
methodology proposes “a technical and organizational approach to software development with
certiable reliability”. It aims to prevent defects, as opposed to debugging them later, by using
software specications and rigorous proof. However, the goal of a proof was to convince fellow
team members that the program was correct. This was done through a social process akin to modern
code reviews. The social processes that were lacking in proofs of program correctness are restored
through the business organization, which recognized that additional time spent while reviewing
(perhaps tedious) conformance to the specication will save time later. The process of proving
in the cleanroom methodology is fundamentally human. “It is obvious” is an acceptable proof if
everyone agrees. It does not provide an absolute certainty, but when practiced well, it does notably
decrease the defect rate [MacKenzie 2004].
The proponents of the mechanist culture were not satised with proofs checked by humans
and argued, as McCarthy did in 1962 that proofs of program correctness should, themselves, be
checked by a computer program. Unlike the early work in AI on automatic theorem proving, which
was able to obtain some, albeit limited, results automatically, verication of non-trivial programs
required (and still requires) human input. The computer thus “does not act as an oracle that certies
bewildering arguments for inscrutable reasons but as an implacable skeptic that insists on all
assumptions being stated and all claims justied.” [MacKenzie 2004, p.272]
The rst tool that was born from the mechanistic mathematical culture was the LCF theorem
prover, introduced by Milner [1972]. The work on LCF was motivated by program correctness and,
more specically, compiler correctness proof [Milner 1979]. To simplify construction of LCF proofs,
Milner’s group developed a meta-language (ML) which could be used to develop proof procedures.
Those were, in turn, checked to be correct by the ML type checker. This powerful combination
gave rise to a family of interactive theorem provers that are still popular today (HOL, Coq, Nuprl
[Constable 1986; Coquand and Huet 1988; Gordon 1988]) that directly follow in the mechanist
mathematical tradition. However, the ideas developed as part of the ML metalanguage soon took a
new form as a stand-alone programming language.
Mechanized proofs developed using LCF and similar tools are no longer the complex human
constructs that mathematicians know as proofs that require social processes for their verication.
Instead, they are a computer representation of a sequences of propositions where a prover program
, Vol. 1, No. 1, Article . Publication date: January 2019.