equal
  deleted
  inserted
  replaced
  
    
    
|    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; |