[isabelle-dev] Recent instabilities of HOL-Decision_Procs

Makarius makarius at sketis.net
Wed Sep 1 15:40:00 CEST 2010


For some week or so there are sparadic failures of HOL-Decision_Procs like 
this:

HOL-Decision_Procs FAILED
(see also /Users/makarius/.isabelle/heaps//polyml-5.4.0_x86_64-darwin/log/HOL-Decision_Procs)
            (Var 0))))))
  (replicate 3 None) [0, 0, 0]
approx_tse_form 30 3 1
  (Bound (Var 0) (Num (Float 0 0)) (Num (Float 1 0))
    (LessEqual (Power (Var 0) 2) (Var 0)))
### Ignoring duplicate rewrite rule:
### Suc ?n1 == ?n1 + 1
### Ignoring duplicate rewrite rule:
### Suc ?n1 == ?n1 + 1
### Ignoring duplicate rewrite rule:
### Suc ?n1 == ?n1 + 1
### Ignoring duplicate rewrite rule:
### Suc ?n1 == ?n1 + 1
### Ignoring duplicate rewrite rule:
### Suc ?n1 == ?n1 + 1
*** Theory loader: undefined theory entry for "Approximation_Ex"
*** Failed to finish proof
*** At command "by" (line 42 of 
"/Users/makarius/isabelle/repos/src/HOL/Decision_Procs/ex/Approximation_Ex.thy")
Exception- TOPLEVEL_ERROR raised
*** ML error

This only happenes when running in parallel mode, which is the default on 
modern hardware for quite some time already.  I estimate the probability 
of the incident 5-10% -- which makes it a bit hard to bisect in the change 
history.

The line 42 above is an invocation of the "approximation" method, but it 
might also happen in other places.

Does anybody have any idea what could be wrong in this particular 
situation?


In general there are two main ways to make the behaviour of proof tools 
depend on the weather:

   * real-time timeouts

   * Unsynchronized.ref

The latter are being shot at since 2-3 years already, and need to 
disappear altogether for tools that care about surviving the next big 
reform in user interaction, where the assumption of a single execution 
path is plain wrong.  (For the moment Proof General still incurs a drastic 
sequentialization that makes unsafes tool appear to work.)


The "configuration option" concept introduced some time ago provides an 
easy drop-in replacement for bool/int/string options, even with the 
possibility for process-global defaults (such as for simp trace etc.). It 
also does the proper job concerning "localization".  This avoids one 
obsolete concept (Unsynchronized.ref) being replaced by another one 
(global theory-only parameters).

Going beyond bool/in/string is also possible, but requires a bit extra 
work with attribute syntax (and Generic_Data).


 	Makarius



More information about the isabelle-dev mailing list