1

I'm using Isabelle 2019 and got some troubles regarding locals:

I'm constructing a locale with an abbrevation, e.g.:

interpretation myInstance : myLocale "abbreviation"

I'm using this with a function from the locale, e.g.:

myInstance.getter myinput

But apply simp now "simplifies" the goal to something like this

myLocale.getter "abbreviation" myinput

How can I avoid simp to do this? (I'm pretty sure, this is the reason, why my code takes ages to process)...

Best

Kevin
  • 27
  • 1
  • 4

1 Answers1

2

This is a known issue and there is no perfect solution. Some partial solutions:

  • live with it/avoid using something that can be simplified. Use a definition instead of an abbreviation (and eventually mark the definition as simp to automatically unfold it).

  • add a congruence rule (as mentioned): ⋀a b. myLocale.getter a b == myLocale.getter "abbreviation" myinput a b. It does not always work.

  • Define a new constant and lift all theorems to that constant. This is annoying (and can make sledgehammer less powerful).

Mathias Fleury
  • 2,221
  • 5
  • 12