src/ZF/Datatype.thy
changeset 82967 73af47bc277c
parent 80636 4041e7c8059d
equal deleted inserted replaced
82966:55a71dd13ca0 82967:73af47bc277c
   102        if Config.get ctxt trace then tracing ("NEW = " ^ Syntax.string_of_term ctxt new)
   102        if Config.get ctxt trace then tracing ("NEW = " ^ Syntax.string_of_term ctxt new)
   103        else ();
   103        else ();
   104      val goal = Logic.mk_equals (old, new);
   104      val goal = Logic.mk_equals (old, new);
   105      val thm = Goal.prove ctxt [] [] goal
   105      val thm = Goal.prove ctxt [] [] goal
   106        (fn _ => resolve_tac ctxt @{thms iff_reflection} 1 THEN
   106        (fn _ => resolve_tac ctxt @{thms iff_reflection} 1 THEN
   107          simp_tac (put_simpset datatype_ss ctxt addsimps
   107          simp_tac (put_simpset datatype_ss ctxt
   108           (map (Thm.transfer thy) (#free_iffs lcon_info))) 1)
   108           |> Simplifier.add_simps (map (Thm.transfer thy) (#free_iffs lcon_info))) 1)
   109        handle ERROR msg =>
   109        handle ERROR msg =>
   110        (warning (msg ^ "\ndata_free simproc:\nfailed to prove " ^ Syntax.string_of_term ctxt goal);
   110        (warning (msg ^ "\ndata_free simproc:\nfailed to prove " ^ Syntax.string_of_term ctxt goal);
   111         raise Match)
   111         raise Match)
   112   in SOME thm end
   112   in SOME thm end
   113   handle Match => NONE;
   113   handle Match => NONE;