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