On Feb 4, 4:08 pm, Nick Keighley <
[email protected]>
wrote:
From what I remember, proving a given program correct was equivalent
That is not correct. The Halting Problem is a proof that a Turing
Machine cannot be constructed that will be able to detect whether any
other TM will halt. Whereas programs can be proven correct (for much
the same reason we proved the negative truth of the Halting Problem).
It's amazing that in "break room [or Hooters] bullshit sessions",
programmers have in my experience regularly confused "writing a proof
that a program is correct" with "writing a program that can determine
algorithmically whether another program is correct". The latter is an
instance of the Halting problem. The former is applied mathematics.
Indeed, there is (probably?) no such thing as a correct program that
cannot be proven correct, especially if we're mathematical
intuitionists or pragmatists. If the "halting problem" on the Toyota
is traced to software then program correctness proving may get new
life.
[I really miss the late Dik Winter, familiar to many readers here.
He'd jump me using a Dutch rule: if you speak of things that come from
Holland, such as Intuitionism, you'd better be Dutch. Otherwise you
probably don't understand them. A variant in fine of what
Shakespeare's Captain MacMorris says in Henry V: what is my nation?]
For all sorts of correctness proofs of programs see the Edsger W
Dijkstra archive:
http://www.cs.utexas.edu/users/EWD.
"Beware of 'the real world'. A speaker's appeal to it is always an
invitation not to challenge his tacit assumptions. When a speaker
refers to the real world, a useful counterploy is pointing out that he
only refers to HIS perception of it. We find it nowadays hyphenated in
'real-world problems'; please remember that those are typically the
ones we are left with when we have refused to apply their effective
solutions."
Edsger W Dijkstra, 1982
to solving the halting problem. Nevertheless, a team of researchers
some time ago (under Gernot Heiser, iirc) claimed to have proven a
7,5k LOC kernel formally correct in about 250 LOC per man-year. Linux
& Windows probably have more than 50 MLOC, which would take something
like 200.000 years to verify, assuming no increased complexity from,
well, the increased complexity..
This reasoning is absurd. Dijkstra had a lot of laughs at its expense:
"We have shown her representatives what measures we had taken, such as
our ISAPS (Interactive Semi-Automatic Proof System) and even the more
impressive TDF (Theory Development Facility). The first one enables an
average mathematician to increase his proof productivity from 30 to 60
lines a month, the second one allows a mathematician with a minimum of
skills to produce up to a 100 times as much text as he has keyed in."
The silliness is imposing bureaucracy, bullshit and bullying on
software development. If you force the programmers to check a working
if at first minimal system at 5:00 PM every day, along with an
informal correctness proof in the form of minutes of a 4:00 PM
structured walkthrough, you'd have your OS in about the same amount of
time...simply by not dividing the work of proving from that of coding,
an alienation which is based on a silly respect for specialization and
a contempt for humanity.