[isabelle-dev] proper use of "error" channel

Alexander Krauss krauss at in.tum.de
Tue Mar 23 00:04:26 CET 2010


Makarius wrote:
> A few hints on using the "error" function in Isabelle/ML properly.
> 
> The ERROR exceptions being produced here are treated by the Isar 
> toplevel as "user-level error messages", i.e. are posted in clear text 
> with certain markup.  This is meant for the end-user, no references to 
> internal ML entities should be given here (no function names, no ML 
> notation).
> 
> The easiest way to indicate generic program failure -- not user errors 
> -- is via (raise Fail "blah").  Here the toplevel clearly indicates that 
> this is a low-level exception, and also prints the source position of 
> the ML raise statement.  Thus old-style messages like "foo_bar: bad 
> argument" to refer to some function foo_bar are no longer necessary.
> 
> Kernel exceptions TYPE, TERM, THM also have their place in situations 
> where kernel-like operations are involved.  The printing is similar as 
> for Fail, although there is some special treatment when Toplevel.debug 
> is enabled.

How does the "sys_error" function fit into this picture? I have been 
using this in cases where you are suggesting to raise Fail.

Alex



More information about the isabelle-dev mailing list