[isabelle-dev] Variable "?n" has two distinct types

Makarius makarius at sketis.net
Sun Feb 6 13:45:45 CET 2011

On Sun, 6 Feb 2011, Gerwin Klein wrote:

> I've managed to get the following error message with Isabelle2011 when 
> running simp:
> *** exception TYPE raised (line 109 of "envir.ML"): Variable "?n" has 
> two distinct types *** At command "apply" (line 14 of 
> "/Users/kleing/Simp.thy")
> The end of the simplifier trace shows this rule being produced, which 
> indeed has "?n" with different types:
> [1]Procedure "defined EX" produced rewrite rule: \<exists>x. ?n (?p S) = 
> Some x \<and> ?n S = x \<equiv> \<exists>x. ?n S = x \<and> ?n (?p S) = 
> Some x

Quick inspection of the sources + history reveals abc655166d61 "now works 
for schematic terms as well".

Before that change, the global context ProofContext.init_global thy was 
sufficient for the Goal.prove due to absence of local operations.  With 
Variable.import_terms and Variable.export one needs to take the context 
seriously, i.e. pass it through the Quantifier1 tool suite as explicit 
argument, which should be a trivial exercise in "localization".

BTW, the naming convention "global" indicates that one needs to watch out 
for problems with lack of context (this is now made explicit in the Isar 
implementation manual).


More information about the isabelle-dev mailing list