Brian Huffman wrote:
*My* first idea was that "typedef" didn't need to be defining a set
constant at all.

(I would appreciate if we could keep this discussion focused. To discuss typedef, please start a new thread.)


Makarius wrote:
When we speak about "users" of packages it covers both ML and Isar theory sources, e.g. the function package is a user of the inductive package. It is important to keep modularity here.

The system is able to distinguish between things that are visible in the source vs. internal uses of the same specifciation mechanisms to some extent, but one needs to look very closely at that when modifying the behaviour here.

I think there is a formal difference here that is beyond "Isar" vs. "ML":

a) If function calls inductive, then it is exclusively interested in getting an inhabitant of a specification in the auxiliary context (which I nowadays prefer to call the "package context"). Its interpretation in the target is really arbitrary. Local_Theory.define does this uniformly.

b) A user invocation of inductive via the Isar command does not care about the package context, which is discarded immediately. Here the target is what counts. In particular, the image in the target is very irregular at the moment, since the type arguments are only inserted in very special situations.

It may be worthwhile to make this distinction explicit somehow, but I want to do a bit of reading before suggesting a concrete solution.

In general, composability of packages is one of my "favorite" problems. We are still at the beginning here: whenever a package is used for the first time by some other code, amusing problems come to light. Maybe at some point we will arrive at a set of general conventions for modular packages...

Alex
_______________________________________________
isabelle-dev mailing list
[email protected]
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to