[isabelle-dev] Local_Theory.open_target instead of Local_Theory.restore

Dmitriy Traytel traytel at in.tum.de
Tue Apr 7 22:28:07 CEST 2015

Hi Makarius,

thanks, this is the hint I was looking for a long time now.

I will do the replacement in the BNF package, but I don't think that I 
will have time for it before the approaching release.


On 07.04.2015 17:47, Makarius wrote:
> Just a short note on Local_Theory.open_target (for Isabelle/83071f4c8ae6)
> versus old uses of Local_Theory.restore.
> Local_Theory.open_target is the internal version of "context begin", 
> where Local_Theory.close_target is "end".  The ML signature is now a 
> bit more concise form than before.  It has already been used 
> successfully in Eisbach, to lay out a local situation for the internal 
> construction.
> Here is a quick example that shows how to get polymorphic constants 
> out of local theory specifications, with such official context nesting:
> context fixes x :: 'a
> begin
> declare [[show_types]]
> ML_val ‹
>   val lthy = @{context};
>   val (_, lthy1) = lthy |> Local_Theory.open_target;
>   val ((t, (_, th)), lthy2) = lthy1
>     |> Local_Theory.define ((@{binding c}, NoSyn), 
> (Attrib.empty_binding, @{term "λy. x"}));
>   val lthy3 = lthy2 |> Local_Theory.close_target;
>   val thy_ctxt = Proof_Context.init_global (Proof_Context.theory_of 
> lthy3);
>   val th' = th |> singleton (Proof_Context.export lthy2 lthy3);
>   val th'' = th' |> singleton (Proof_Context.export lthy3 thy_ctxt);
>   writeln (Display.string_of_thm lthy2 th);  (*monomorphic*)
>   writeln (Display.string_of_thm lthy3 th');  (*partly polymorphic*)
>   writeln (Display.string_of_thm thy_ctxt th'');  (*fully polymorphic*)
> Thus the brute-force Local_Theory.restore is avoided, which only works 
> properly at the boundary of local theory command transactions anyway.
> Eliminating Local_Theory.restore is one of these continuous reform 
> projects that can be done now or later.  Note that it would also 
> achieve better results for "private datatype", because 
> Local_Theory.restore disrupts the continuity of the naming policy.
> It is up to the BNF guys to say if they intend to do something for the 
> Isabelle2015 release, or just leave the status quo.  It is unlikely 
> that anybody will notice fine points of private datatype definitions 
> before the next release after Isabelle2015.
>     Makarius
> _______________________________________________
> isabelle-dev mailing list
> isabelle-dev at in.tum.de
> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman46.in.tum.de/pipermail/isabelle-dev/attachments/20150407/1a758016/attachment-0002.html>

More information about the isabelle-dev mailing list