Other Readings
This page provides details about additional readings
beyond the required textbook.
Proving Programs
Correct
The first reading is the paper "An
Axiomatic Basis for Computer Programming"
by Tony Hoare. With this paper Hoare essentially
founded the field of
program verification, that is, of proving that
programs satisfy a
formal specification. Essentially the same techniques
are still used
today, although they have been refined. The notation
that Hoare
introduces here
predicate1 {program
statement} predicate2
has generally been superseded by the notation
{predicate1} program
statement {predicate2}
which
has the very practical advantage that the { and } can
be treated as a
kind of special comment or annotation bracket, and the
proof (in the braces) can then be
interpolated throughout the program.
This retrospective
is also worthwhile reading, but not required.
Direct Link: http://dl.acm.org/citation.cfm?id=363259
The second reading is the paper "Proof
of a Program: FIND",
also by Hoare. The FIND program is very similar to the
partition phase
of quicksort, and indeed not long afterwards, Foley
& Hoare
published a proof
of Quicksort that used this proof. Still, for
the purposes of an example, FIND is simpler.
Direct Link: http://dl.acm.org/citation.cfm?id=362489
Note:
to download these articles for free, you may need to
be on campus, or
connected to campus using the VPN, or to get them from
the library
website using your PSU ID. You can also use your ACM
membership to get
access. (If you are not a student
member of the ACM, consider joining: it’s a
bargain!)
Most recently modified on Friday 6 March 2015 at 00:40
Andrew P. Black