src/Pure/Isar/specification.ML
changeset 24734 ff617b6711f4
parent 24724 0df74bb87a13
child 24848 5dbbd33c3236
equal deleted inserted replaced
24733:59e0b49688fb 24734:ff617b6711f4
   114 
   114 
   115     val (vars, vars_ctxt) = ctxt |> prep_vars raw_vars;
   115     val (vars, vars_ctxt) = ctxt |> prep_vars raw_vars;
   116     val (xs, params_ctxt) = vars_ctxt |> ProofContext.add_fixes_i vars;
   116     val (xs, params_ctxt) = vars_ctxt |> ProofContext.add_fixes_i vars;
   117 
   117 
   118     val Asss = (map o map) (map (parse_prop params_ctxt) o snd) raw_specss;
   118     val Asss = (map o map) (map (parse_prop params_ctxt) o snd) raw_specss;
   119     val idx = (fold o fold o fold) Term.maxidx_term Asss ~1 + 1;
   119     val names = Variable.names_of (params_ctxt |> (fold o fold o fold) Variable.declare_term Asss)
       
   120       |> fold Name.declare xs;
       
   121     val Asss' = #1 ((fold_map o fold_map o fold_map) Term.free_dummy_patterns Asss names);
       
   122     val idx = (fold o fold o fold) Term.maxidx_term Asss' ~1 + 1;
   120     val specs =
   123     val specs =
   121       (if do_close then
   124       (if do_close then
   122         #1 (fold_map (fn Ass => fn i => (burrow (close_forms params_ctxt i []) Ass, i + 1)) Asss idx)
   125         #1 (fold_map
   123       else Asss)
   126             (fn Ass => fn i => (burrow (close_forms params_ctxt i []) Ass, i + 1)) Asss' idx)
       
   127       else Asss')
   124       |> flat |> burrow (Syntax.check_props params_ctxt);
   128       |> flat |> burrow (Syntax.check_props params_ctxt);
   125     val specs_ctxt = params_ctxt |> (fold o fold) Variable.declare_term specs;
   129     val specs_ctxt = params_ctxt |> (fold o fold) Variable.declare_term specs;
   126 
   130 
   127     val vs = specs_ctxt |> fold_map ProofContext.inferred_param xs |> fst;
   131     val vs = specs_ctxt |> fold_map ProofContext.inferred_param xs |> fst;
   128     val params = vs ~~ map #3 vars;
   132     val params = vs ~~ map #3 vars;