src/Pure/Isar/local_defs.ML
changeset 21687 f689f729afab
parent 21684 e8c135b166b3
child 21699 9395071cc5c5
equal deleted inserted replaced
21686:4f5f6c685ab4 21687:f689f729afab
   181         val frees = Term.fold_aterms (fn Free (x, _) =>
   181         val frees = Term.fold_aterms (fn Free (x, _) =>
   182           if Variable.is_fixed ctxt' x then I else insert (op =) x | _ => I) prop [];
   182           if Variable.is_fixed ctxt' x then I else insert (op =) x | _ => I) prop [];
   183       in
   183       in
   184         Goal.prove ctxt' frees [] prop (K (ALLGOALS
   184         Goal.prove ctxt' frees [] prop (K (ALLGOALS
   185           (meta_rewrite_tac ctxt' THEN'
   185           (meta_rewrite_tac ctxt' THEN'
   186             Tactic.rewrite_goal_tac [def] THEN'
   186             Goal.rewrite_goal_tac [def] THEN'
   187             Tactic.resolve_tac [Drule.reflexive_thm])))
   187             Tactic.resolve_tac [Drule.reflexive_thm])))
   188         handle ERROR msg => cat_error msg "Failed to prove definitional specification."
   188         handle ERROR msg => cat_error msg "Failed to prove definitional specification."
   189       end;
   189       end;
   190   in (((c, T), rhs), prove) end;
   190   in (((c, T), rhs), prove) end;
   191 
   191