[isabelle-dev] Performance of "class" command

ballarin at in.tum.de ballarin at in.tum.de
Wed Feb 25 21:42:28 CET 2009


Quoting Brian Huffman <brianh at cs.pdx.edu>:

> Sometimes the "class" command can be rather slow, for example:
>
> class archimedean_field = ordered_field +
>   assumes ex_less_of_nat: "EX n. x < of_nat n"
>
> ### command "class"
> ### User 2.596  All 2.604 secs
>
> For comparison, deriving from earlier classes is a lot faster:
>
> class archimedean_field = semiring_1 + ord +
>   assumes ex_less_of_nat: "EX n. x < of_nat n"
>
> ### command "class"
> ### User 0.272  All 0.272 secs

Processing times in this order of magnitude indicate that the locale  
(underlying the class construction) contains (theorem) declarations  
that are inherently slow to process (for example, with attributes  
[simplified] or [folded]).  The diagnostic command

   print_locale! L

will print all theorems of locale L (along with its parameters and  
assumptions).  I just cannot remember from the top of my head what the  
locale underlying class C is called: C, C_class, C_locale, but you can  
use

   print_locales

to obtain a list of all locales.

> And finally, a temptation to just give up and use "axclass":
>
> axclass archimedean_field < ordered_field
>   ex_less_of_nat: "EX n. x < of_nat n"
>
> ### command "axclass"
> ### User 0.008  All 0.008 secs

Now that, of course, would be heresy ;-)  Better to buy a faster computer ...

Clemens




More information about the isabelle-dev mailing list