equal
deleted
inserted
replaced
181 val (th'' :: vs) = (th' :: map (Drule.mk_term o cert) (map Logic.mk_type tfrees @ frees)) |
181 val (th'' :: vs) = (th' :: map (Drule.mk_term o cert) (map Logic.mk_type tfrees @ frees)) |
182 |> Variable.export ctxt thy_ctxt |
182 |> Variable.export ctxt thy_ctxt |
183 |> Drule.zero_var_indexes_list; |
183 |> Drule.zero_var_indexes_list; |
184 |
184 |
185 (*thm definition*) |
185 (*thm definition*) |
186 val result = PureThy.name_thm true (name, Goal.close_result th''); |
186 val result = th'' |
|
187 |> PureThy.name_thm true true "" |
|
188 |> Goal.close_result |
|
189 |> PureThy.name_thm true true name; |
187 |
190 |
188 (*import fixes*) |
191 (*import fixes*) |
189 val (tvars, vars) = |
192 val (tvars, vars) = |
190 chop (length tfrees) (map (Thm.term_of o Drule.dest_term) vs) |
193 chop (length tfrees) (map (Thm.term_of o Drule.dest_term) vs) |
191 |>> map Logic.dest_type; |
194 |>> map Logic.dest_type; |
200 val assm_tac = FIRST' (map (fn assm => Tactic.compose_tac (false, assm, 0)) assms); |
203 val assm_tac = FIRST' (map (fn assm => Tactic.compose_tac (false, assm, 0)) assms); |
201 val result'' = |
204 val result'' = |
202 (case SINGLE (Seq.INTERVAL assm_tac 1 nprems) result' of |
205 (case SINGLE (Seq.INTERVAL assm_tac 1 nprems) result' of |
203 NONE => raise THM ("Failed to re-import result", 0, [result']) |
206 NONE => raise THM ("Failed to re-import result", 0, [result']) |
204 | SOME res => res) COMP (concl_conv COMP_INCR Drule.equal_elim_rule2) |
207 | SOME res => res) COMP (concl_conv COMP_INCR Drule.equal_elim_rule2) |
205 |> Goal.norm_result; |
208 |> Goal.norm_result |
|
209 |> PureThy.name_thm false false name; |
206 |
210 |
207 in (result'', result) end; |
211 in (result'', result) end; |
208 |
212 |
209 fun notes loc kind facts lthy = |
213 fun notes loc kind facts lthy = |
210 let |
214 let |