Hi all,

thanks for pointing this out, Lars. And thanks for looking at the sources, 
Jasmin.

The problem seems to only show up when the declaration in question is inside of 
a class context. Here is a reduced version that does not involve primrec at all.

context linorder begin

context fixes b :: nat begin

definition c where "c = b"

end

end

@Makarius: What is the rationale behind disallowing the definition of c? Or is 
this not an expected behavior?

Dmitriy

> On 31 May 2018, at 11:17, Blanchette, J.C. <j.c.blanche...@vu.nl> wrote:
> 
> Hi Lars,
> 
> Thanks for the heads-up. Makarius's change e0cd57aeb60c is clearly the 
> immediate source of the problem, but the more profound cause seems to be some 
> nonstandard handling of variables. The "illegal fixed variable" in question, 
> "s1", seems to originate from line 397 in "bnf_fp_n2m.ML":
> 
>      |> Variable.add_fixes (mk_names n "s")
> 
> Dmitriy, since this is your code, could you take a look at it? The line in 
> question seems to have been added as part of an optimization you did in 2016 
> (see 8053ef5a0174).
> 
> Cheers,
> 
> Jasmin
> 
>> On 31. May 2018, at 10:28, Lars Hupel <hu...@in.tum.de> wrote:
>> 
>> since approximately Isabelle/e0cd57aeb60c (~1 week):
>> 
>> *** Malformed global fact
>> "Misc_N2M.linorder_class.f1_t.n2m_t_ctor_fold_dict"
>> *** Illegal fixed variable: "s1"
>> *** At command "primrec" (line 164 of
>> "~~/src/Benchmarks/Datatype_Benchmark/Misc_N2M.thy")
>> _______________________________________________
>> isabelle-dev mailing list
>> isabelle-...@in.tum.de
>> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev
> 

_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to