tuned;
authorwenzelm
Fri, 19 Dec 2014 22:53:43 +0100
changeset 59158 05cb83f083b9
parent 59157 949829bae42a
child 59159 9312710451f5
tuned;
src/HOL/Tools/coinduction.ML
--- a/src/HOL/Tools/coinduction.ML	Fri Dec 19 21:59:18 2014 +0100
+++ b/src/HOL/Tools/coinduction.ML	Fri Dec 19 22:53:43 2014 +0100
@@ -14,9 +14,6 @@
 structure Coinduction : COINDUCTION =
 struct
 
-open Ctr_Sugar_Util
-open Ctr_Sugar_General_Tactics
-
 fun filter_in_out _ [] = ([], [])
   | filter_in_out P (x :: xs) =
       let
@@ -79,21 +76,23 @@
           val phi = eqs @ map (HOLogic.dest_Trueprop o prop_of) prems
             |> try (Library.foldr1 HOLogic.mk_conj)
             |> the_default @{term True}
-            |> list_exists_free vars
+            |> Ctr_Sugar_Util.list_exists_free vars
             |> Term.map_abs_vars (Variable.revert_fixed ctxt)
             |> fold_rev Term.absfree (names ~~ Ts)
-            |> certify ctxt;
-          val thm = cterm_instantiate_pos [SOME phi] raw_thm;
+            |> Ctr_Sugar_Util.certify ctxt;
+          val thm = Ctr_Sugar_Util.cterm_instantiate_pos [SOME phi] raw_thm;
           val e = length eqs;
           val p = length prems;
         in
           HEADGOAL (EVERY' [resolve_tac [thm],
             EVERY' (map (fn var =>
-              resolve_tac [cterm_instantiate_pos [NONE, SOME (certify ctxt var)] exI]) vars),
-            if p = 0 then CONJ_WRAP' (K (resolve_tac [refl])) eqs
+              resolve_tac
+                [Ctr_Sugar_Util.cterm_instantiate_pos
+                  [NONE, SOME (Ctr_Sugar_Util.certify ctxt var)] exI]) vars),
+            if p = 0 then Ctr_Sugar_Util.CONJ_WRAP' (K (resolve_tac [refl])) eqs
             else
               REPEAT_DETERM_N e o (resolve_tac [conjI] THEN' resolve_tac [refl]) THEN'
-              CONJ_WRAP' (resolve_tac o single) prems,
+              Ctr_Sugar_Util.CONJ_WRAP' (resolve_tac o single) prems,
             K (ALLGOALS_SKIP skip
                (REPEAT_DETERM_N (length vars) o (eresolve_tac [exE] THEN' rotate_tac ~1) THEN'
                DELETE_PREMS_AFTER 0 (Subgoal.FOCUS (fn {prems, params, context = ctxt, ...} =>
@@ -110,7 +109,7 @@
                         val assms = assms' @ drop e inv_thms
                       in
                         HEADGOAL (Method.insert_tac (assms @ case_prems)) THEN
-                        unfold_thms_tac ctxt eqs
+                        Ctr_Sugar_General_Tactics.unfold_thms_tac ctxt eqs
                       end)) ctxt)))])
         end) ctxt) THEN'
       K (prune_params_tac ctxt))
@@ -137,7 +136,8 @@
   named_rule Induct.setN (Args.const {proper = false, strict = false}) get_pred ||
   Scan.lift (Args.$$$ ruleN -- Args.colon) |-- Attrib.thms;
 
-val coinduct_rule = rule Induct.lookup_coinductT Induct.lookup_coinductP >> single_rule;
+val coinduct_rule =
+  rule Induct.lookup_coinductT Induct.lookup_coinductP >> single_rule;
 
 fun unless_more_args scan = Scan.unless (Scan.lift
   ((Args.$$$ arbitraryN || Args.$$$ Induct.typeN ||