# HG changeset patch # User wenzelm # Date 1272963163 -7200 # Node ID 7a0990473e0382836bac0c0e01c4a114fa42ad3f # Parent ed80839302039442affa774cdb5e268d412bb0f8 specification goal: eliminated redundant Thm.legacy_freezeT -- the goal is properly declared and should always produce fixed types in the result; specification result: replaced Thm.legacy_freezeT by Thm.unvarify_global -- the final result appears to be a closed term that is globally exported; diff -r ed8083930203 -r 7a0990473e03 src/HOL/Tools/choice_specification.ML --- a/src/HOL/Tools/choice_specification.ML Mon May 03 22:00:06 2010 +0200 +++ b/src/HOL/Tools/choice_specification.ML Tue May 04 10:52:43 2010 +0200 @@ -78,10 +78,9 @@ | NONE => mk_definitional cos arg end -fun add_specification axiomatic cos arg = - arg |> apsnd Thm.legacy_freezeT - |> proc_exprop axiomatic cos - |> apsnd Drule.export_without_context +fun add_specification axiomatic cos = + proc_exprop axiomatic cos + #> apsnd Drule.export_without_context (* Collect all intances of constants in term *) @@ -217,15 +216,16 @@ then writeln "specification" else () in - arg |> apsnd Thm.legacy_freezeT + arg |> apsnd Thm.unvarify_global |> process_all (zip3 alt_names rew_imps frees) end - fun after_qed [[thm]] = ProofContext.theory (fn thy => - #1 (post_process (add_specification axiomatic (zip3 names cnames overloaded) (thy, thm)))); + fun after_qed [[thm]] = (ProofContext.theory (fn thy => + #1 (post_process (add_specification axiomatic (zip3 names cnames overloaded) (thy, thm))))); in thy |> ProofContext.init_global + |> Variable.declare_term ex_prop |> Proof.theorem NONE after_qed [[(HOLogic.mk_Trueprop ex_prop, [])]] end;