equal
deleted
inserted
replaced
81 | Free _ => |
81 | Free _ => |
82 Subgoal.FOCUS_PREMS (fn {context, params = params, prems, asms, concl, schematics} => |
82 Subgoal.FOCUS_PREMS (fn {context, params = params, prems, asms, concl, schematics} => |
83 let |
83 let |
84 val prems' = maps dest_conjunct_prem (take nargs prems) |
84 val prems' = maps dest_conjunct_prem (take nargs prems) |
85 in |
85 in |
86 Simplifier.rewrite_goal_tac |
86 rewrite_goal_tac (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
87 (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
|
88 end) ctxt 1 |
87 end) ctxt 1 |
89 | Abs _ => raise Fail "prove_param: No valid parameter term" |
88 | Abs _ => raise Fail "prove_param: No valid parameter term" |
90 in |
89 in |
91 REPEAT_DETERM (rtac @{thm ext} 1) |
90 REPEAT_DETERM (rtac @{thm ext} 1) |
92 THEN print_tac options "prove_param" |
91 THEN print_tac options "prove_param" |
167 THEN asm_simp_tac (put_simpset HOL_basic_ss' ctxt) 1 |
166 THEN asm_simp_tac (put_simpset HOL_basic_ss' ctxt) 1 |
168 THEN TRY ( |
167 THEN TRY ( |
169 let |
168 let |
170 val prems' = maps dest_conjunct_prem (take nargs prems) |
169 val prems' = maps dest_conjunct_prem (take nargs prems) |
171 in |
170 in |
172 Simplifier.rewrite_goal_tac |
171 rewrite_goal_tac |
173 (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
172 (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
174 end |
173 end |
175 THEN REPEAT_DETERM (rtac @{thm refl} 1)) |
174 THEN REPEAT_DETERM (rtac @{thm refl} 1)) |
176 THEN print_tac options "after if simp; in SUBPROOF") ctxt 1)))) |
175 THEN print_tac options "after if simp; in SUBPROOF") ctxt 1)))) |
177 THEN print_tac options "after if simplification" |
176 THEN print_tac options "after if simplification" |
208 THEN Subgoal.FOCUS_PREMS |
207 THEN Subgoal.FOCUS_PREMS |
209 (fn {context, params, prems, asms, concl, schematics} => |
208 (fn {context, params, prems, asms, concl, schematics} => |
210 let |
209 let |
211 val prems' = maps dest_conjunct_prem (take nargs prems) |
210 val prems' = maps dest_conjunct_prem (take nargs prems) |
212 in |
211 in |
213 Simplifier.rewrite_goal_tac |
212 rewrite_goal_tac (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
214 (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
|
215 end) ctxt 1 |
213 end) ctxt 1 |
216 THEN (rtac (if null clause_out_ts then @{thm singleI_unit} else @{thm singleI}) 1) |
214 THEN (rtac (if null clause_out_ts then @{thm singleI_unit} else @{thm singleI}) 1) |
217 | prove_prems out_ts ((p, deriv) :: ps) = |
215 | prove_prems out_ts ((p, deriv) :: ps) = |
218 let |
216 let |
219 val premposition = (find_index (equal p) clauses) + nargs |
217 val premposition = (find_index (equal p) clauses) + nargs |