Newsgroups: comp.object,comp.lang.eiffel,comp.lang.c++,comp.lang.smalltalk
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!oitnews.harvard.edu!purdue!lerc.nasa.gov!magnus.acs.ohio-state.edu!math.ohio-state.edu!howland.reston.ans.net!newsfeed.internetmci.com!news.sprintlink.net!in1.uu.net!allegra!alice!ark
From: ark@research.att.com (Andrew Koenig)
Subject: Re: Why is one OO language more productive than another?
Message-ID: <DF08CL.1pE@research.att.com>
Organization: AT&T Bell Laboratories, Murray Hill NJ
References: <DEuJFu.M6w@nntpa.cb.att.com> <437goo$3vfe@tigger.cc.uic.edu> <DEy4Hv.8yr@nntpa.cb.att.com>
Date: Sat, 16 Sep 1995 15:29:09 GMT
Lines: 32
Xref: glinda.oz.cs.cmu.edu comp.object:38375 comp.lang.eiffel:10901 comp.lang.c++:149203 comp.lang.smalltalk:28416

In article <DEy4Hv.8yr@nntpa.cb.att.com> arw@mtatm.mt.att.com (Aaron Waters) writes:

> I misspoke.  You can prove things about programs in the normal
> mathematical sense (like in ACM Journal of Algorithms, etc.).
> I was refering to automated formal proofs.

Formal proofs are murky waters, and trying to figure out how to
produce them usefully is an exceedingly informal process.

The reason stems, in part, from three facts:

	1. It is impossible to determine, in general, whether or
	   not a given statement is provably true.

	2. If a given statement is provably true, it is always
	   possible to determine that in finite time.

	3. People are not willing to wait forever for results.

At first, (1) and (2) seem to contradict each other.  The reason they
do not is that if you try to prove something and haven't succeeded
yet, there is no way to distinguish the case where what you're
trying to prove is false from the case where it's true and the
proof just hasn't shown up yet.

Combine this with (3) and the problem of proving algorithms suddenly
becomes not one of proving them but figuring out which things can
reasonably be proved in short enough time that people are willing
to wait for it.
-- 
				--Andrew Koenig
				  ark@research.att.com
