From: Andrej Bauer <Andrej.Bauer@fmf.uni-lj.si>
To: skaller <skaller@users.sourceforge.net>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Unsoundness is essential
Date: Thu, 04 Oct 2007 17:29:29 +0200 [thread overview]
Message-ID: <470506D9.3080704@fmf.uni-lj.si> (raw)
In-Reply-To: <1191509355.6518.104.camel@rosella.wigram>
At the danger of repeating myself (for which I apologize), I would like
to convince skaller that he does not want unsound type systems. (What
skaller calls "sound" I call "safety property" in my previous post.)
Skaller, you want something like this:
(a) expressive power (dependent types, subsets, you-name-it)
(b) soundness, in the following form:
* the compiler rejects obvious nonsense
* the result of a compilation is a program and a list of
assertions which the compiler was unable to verify
This I would call "controlled unsoundness" which at least allows the
human to see what needs to be verified to guarantee soundness. It's much
better than the sort of unsoundness that skaller seems to be advocating.
There is actually a new minor point I want to make: you cannot postpone
all problems with typechecking to runtime. Only very simple conditions,
such as bounds checks, can be checked at runtime.
It is very easy to come up with preconditions that are computationally
unverifiable. For example, you might have a numerical method for
zero-finding which only works if the input is a function satisfying a
funky condition, e.g., "the function is convex". How are you going to
check that at runtime?
Or to give you a much more simplistic example:
fun find_zero (f: int -> int where not (forall n:int, f(n) != 0)) {
int i = 0;
while (f(i) != 0) { i++; }
return i;
}
How will you verify the precondition on f at runtime? In this case I
would expect the compiler to list all uses of find_zero applied to
functions which are not known not have a zero. Let the human worry.
Andrej
next prev parent reply other threads:[~2007-10-04 15:28 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-03 8:35 Locally-polymorphic exceptions [was: folding over a file] oleg
2007-10-03 11:27 ` kirillkh
2007-10-03 11:48 ` [Caml-list] " Daniel de Rauglaudre
2007-10-03 12:19 ` kirillkh
2007-10-03 12:32 ` Daniel de Rauglaudre
2007-10-03 14:34 ` kirillkh
2007-10-03 20:39 ` Christophe Raffalli
2007-10-03 22:50 ` Unsoundness is essential skaller
2007-10-03 23:13 ` [Caml-list] " Jacques Carette
2007-10-04 1:24 ` skaller
2007-10-04 11:26 ` David Allsopp
2007-10-04 12:45 ` Vincent Hanquez
2007-10-04 15:07 ` skaller
2007-10-03 23:13 ` Vincent Aravantinos
2007-10-04 1:49 ` skaller
2007-10-03 23:28 ` Joshua D. Guttman
2007-10-04 1:52 ` skaller
2007-10-04 2:35 ` Brian Hurt
2007-10-04 7:46 ` Christophe Raffalli
2007-10-04 8:56 ` Arnaud Spiwack
2007-10-04 14:49 ` skaller
2007-10-04 15:00 ` Harrison, John R
2007-10-04 15:29 ` Andrej Bauer [this message]
2007-10-04 16:25 ` skaller
2007-10-04 18:17 ` Arnaud Spiwack
2007-10-04 20:54 ` skaller
2007-10-04 22:24 ` Arnaud Spiwack
2007-10-04 16:37 ` skaller
2007-10-04 18:59 ` Christophe Raffalli
2007-10-04 15:04 ` Andrej Bauer
2007-10-04 15:57 ` Christophe Raffalli
2007-10-04 16:03 ` skaller
2007-10-04 20:02 ` Ken Rose
2007-10-04 21:00 ` skaller
2007-10-04 15:31 ` Lukasz Stafiniak
2007-10-04 17:56 ` rossberg
2007-10-04 19:56 ` skaller
2007-10-04 21:07 ` rossberg
2007-10-04 22:23 ` skaller
2007-10-05 2:48 ` Bárður Árantsson
2007-10-04 2:16 ` Locally-polymorphic exceptions [was: folding over a file] oleg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=470506D9.3080704@fmf.uni-lj.si \
--to=andrej.bauer@fmf.uni-lj.si \
--cc=Andrej.Bauer@andrej.com \
--cc=caml-list@inria.fr \
--cc=skaller@users.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).