equal
deleted
inserted
replaced
193 THEN trace_tac ctxt options "before single intro rule" |
193 THEN trace_tac ctxt options "before single intro rule" |
194 THEN Subgoal.FOCUS_PREMS |
194 THEN Subgoal.FOCUS_PREMS |
195 (fn {context = ctxt', prems, ...} => |
195 (fn {context = ctxt', prems, ...} => |
196 let |
196 let |
197 val prems' = maps dest_conjunct_prem (take nargs prems) |
197 val prems' = maps dest_conjunct_prem (take nargs prems) |
|
198 |> filter is_equationlike |
198 in |
199 in |
199 rewrite_goal_tac ctxt' (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
200 rewrite_goal_tac ctxt' (map (fn th => th RS @{thm sym} RS @{thm eq_reflection}) prems') 1 |
200 end) ctxt 1 |
201 end) ctxt 1 |
201 THEN (resolve_tac ctxt [if null clause_out_ts then @{thm singleI_unit} else @{thm singleI}] 1) |
202 THEN (resolve_tac ctxt [if null clause_out_ts then @{thm singleI_unit} else @{thm singleI}] 1) |
202 | prove_prems out_ts ((p, deriv) :: ps) = |
203 | prove_prems out_ts ((p, deriv) :: ps) = |