[isabelle-dev] Naming context of ROOT.ML and similar.

Thomas Sewell Thomas.Sewell at nicta.com.au
Fri Feb 12 05:37:45 CET 2010


It would appear that with Isabelle-2009-1, the ROOT.ML or similar ML 
file called by isabelle usedir isn't allowed to do anything. Or at 
least, it's not allowed to know about any useful structures.

The clearest example we have is if I put the following in CKERNEL.ML (a 
ROOT.ML-like file in our repository).

use_thy "~/path-to-repository/lib/Crunch";

Crunch.crunch;

If I now run isabelle usedir -f CKERNEL.ML ., the log will conclude with 
these lines:

Loading theory "Crunch"
structure Crunch :
(contents of structure)
val it = () : unit
Error: Structure (Crunch) has not been declared
Crunch.crunch
At (line 3 of "CKERNEL.ML")
Exception- Fail "Static Errors" raised
*** ML error

I take it that all structures are somehow being purged from the context 
of the ML files called by usedir. Why? Do I need to have ROOT.ML and 
similar use_thy a Root.thy file just so it can use a ACTUAL_ROOT.ML file 
in order to get any work done? I suppose I only really need two files, 
since I could fold ACTUAL_ROOT.ML into an ML {* *} block in Root.thy. 
Still seems silly.

All I wanted was to enable Record.timing so the log would keep better 
track of progress while the image builds ...

Yours,
    Thomas.




More information about the isabelle-dev mailing list