On Mon, 30 Sep 2013, Brian Huffman wrote:

1. Always avoid generalizing free variables that are locale
parameters. The problem is that I don't know how to query the context
to find out what they are. (Suggestions, anyone?)

Locale parameters are just one example of regular "fixed variables". "Free variables" don't really exist within the logical context, this is only an intermediate phase of certain syntax mechanisms (e.g. "auto fix").

According to the normal context discipline, free variables are always fixed, like a local const. We have a few tools that violate that principle and consequently cause confusion, e.g. the Simplifier. There are sometimes historical reasons for that, and little hope for reforms.

Is this also the case for transfer?


The "for" notation routinely helps in situations where users need to indicate an adhoc context extension to make frees essentially arbitrary, instead of fixed. E.g. see the "ind_cases" method or the "lemmas" command. The "induct" method has its own way to make a context of fixes explicit.


For now, you can just use "apply (transfer fixing: uminus)" as a workaround.

That looks like the complement of a regular "for" context, e.g. as seen in "ind_cases". Such a positive form of indicating the context has the advantage of compositionality -- it allows the enclosing context to be extended later.


        Makarius

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

Reply via email to