230 |> fold_rev Cla.add_safe @{thms allR exL} |
230 |> fold_rev Cla.add_safe @{thms allR exL} |
231 |> fold_rev Cla.add_unsafe @{thms allL exR the_equality} |
231 |> fold_rev Cla.add_unsafe @{thms allL exR the_equality} |
232 |> Cla.get_pack; |
232 |> Cla.get_pack; |
233 *} |
233 *} |
234 |
234 |
235 ML {* |
|
236 fun lemma_tac th i = |
|
237 rtac (@{thm thinR} RS @{thm cut}) i THEN |
|
238 REPEAT (rtac @{thm thinL} i) THEN |
|
239 rtac th i; |
|
240 *} |
|
241 |
|
242 |
|
243 method_setup fast_prop = |
235 method_setup fast_prop = |
244 {* Scan.succeed (fn ctxt => SIMPLE_METHOD' (Cla.fast_tac (Cla.put_pack prop_pack ctxt))) *} |
236 {* Scan.succeed (fn ctxt => SIMPLE_METHOD' (Cla.fast_tac (Cla.put_pack prop_pack ctxt))) *} |
245 |
237 |
246 method_setup fast_dup = |
238 method_setup fast_dup = |
247 {* Scan.succeed (fn ctxt => SIMPLE_METHOD' (Cla.fast_tac (Cla.put_pack LK_dup_pack ctxt))) *} |
239 {* Scan.succeed (fn ctxt => SIMPLE_METHOD' (Cla.fast_tac (Cla.put_pack LK_dup_pack ctxt))) *} |
248 |
240 |
249 method_setup best_dup = |
241 method_setup best_dup = |
250 {* Scan.succeed (fn ctxt => SIMPLE_METHOD' (Cla.best_tac (Cla.put_pack LK_dup_pack ctxt))) *} |
242 {* Scan.succeed (fn ctxt => SIMPLE_METHOD' (Cla.best_tac (Cla.put_pack LK_dup_pack ctxt))) *} |
|
243 |
|
244 method_setup lem = {* |
|
245 Attrib.thm >> (fn th => fn _ => |
|
246 SIMPLE_METHOD' (fn i => |
|
247 rtac (@{thm thinR} RS @{thm cut}) i THEN |
|
248 REPEAT (rtac @{thm thinL} i) THEN |
|
249 rtac th i)) |
|
250 *} |
251 |
251 |
252 |
252 |
253 lemma mp_R: |
253 lemma mp_R: |
254 assumes major: "$H |- $E, $F, P --> Q" |
254 assumes major: "$H |- $E, $F, P --> Q" |
255 and minor: "$H |- $E, $F, P" |
255 and minor: "$H |- $E, $F, P" |