[isabelle-dev] Specification packages in Isabelle/HOL, particularly primrec

Florian Haftmann florian.haftmann at informatik.tu-muenchen.de
Thu Feb 21 16:05:39 CET 2019

Hi all,

after 3bfa28b3a5b2  (followed-up by AFP  d058960a13d6) the matter of
affairs with specification packages is as as follows:

The prototypical specification interface is of shape

  val add_specification: spec -> local_theory -> result * local_theory

where »spec« is the input specification and »result« a characterization
of the definitional extension with enough information to build on it in
derived tools.

The corresponding package is supposed to provide a morphism lifter for

  val transform: morphism -> result -> result

The local theory stemming from add_specification may still contain
hypothetical results of the specification construction (I left this
untouched contrary to an idea I have expressed earlier on this
mailinglist); to get a proper close-up, there is a set of combinators:

* Local_Theory.subtarget_result for regular nested local theory;
* Named_Target.theory_map_result for global specifications;
* Overloading.theory_map_result for global overloaded specifications;
* Class.theory_map_result for global overloaded specifications relating
to type class instantiation.

Hence various *_global variants for specification packages have been

What I have left untouched are the various variants of primrec. Is there
still an ongoing work or plan to get rid of the old datatype / primrec
layer, or at least to have that retreat further? Otherwise I would have
a closer look a it to get an idea what can be done there.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <https://mailmanbroy.informatik.tu-muenchen.de/pipermail/isabelle-dev/attachments/20190221/80ed7532/attachment.asc>

More information about the isabelle-dev mailing list