[isabelle-dev] "Exception." fun oddity in Isabelle 2009-2

Alexander Krauss krauss at in.tum.de
Mon Dec 6 11:53:36 CET 2010


Hi Lucas,

Nice failure :-)

> datatype Ta = C_2 "nat" "nat" | C_1 "Ta" "nat"
> 
> fun f where
>   "f (C_2 a b) c = c"
> | "f (C_1 a b) c = f a (f a (f a (f (C_1 a b) b)))"
> 
> (* ... after a long time...
> 
> constants
>   f :: "Ta ⇒ nat ⇒ nat"
> Exception.
> At command "fun".
> *)

This is the termination prover looping. It keeps applying the 
psimp-rules, which are still in the simpset in Isabelle2009-2.

I took them out in 150f831ce4a3 since they caused other confusion, so it 
is no longer a problem in the next release. Now you can work around it 
by taking them out yourself.

I am not sure about the exception. It could be some "physical" interrupt 
due to hitting some ressource bound, which aborts the whole toplevel 
transaction, so you cannot handle it. But I am just guessing.

Alex



More information about the isabelle-dev mailing list