471 val simp_args = Method.only_sectioned_args simp_modifiers'; |
471 val simp_args = Method.only_sectioned_args simp_modifiers'; |
472 |
472 |
473 fun simp_meth thin cut tac ctxt = Method.METHOD (fn facts => |
473 fun simp_meth thin cut tac ctxt = Method.METHOD (fn facts => |
474 FIRSTGOAL |
474 FIRSTGOAL |
475 ((if thin then REPEAT_DETERM o etac Drule.thin_rl else K all_tac) |
475 ((if thin then REPEAT_DETERM o etac Drule.thin_rl else K all_tac) |
476 THEN' (if cut then Method.same_tac facts else K all_tac) |
476 THEN' (if cut then Method.insert_tac facts else K all_tac) |
477 THEN' tac (get_local_simpset ctxt))); |
477 THEN' tac (get_local_simpset ctxt))); |
478 |
478 |
479 val simp_method = simp_args ooo simp_meth; |
479 val simp_method = simp_args ooo simp_meth; |
480 |
480 |
481 |
481 |
482 (* setup_methods *) |
482 (* setup_methods *) |
483 |
483 |
484 val setup_methods = Method.add_methods |
484 val setup_methods = Method.add_methods |
485 [(simpN, simp_method true true (CHANGED oo asm_full_simp_tac), "simplification"), |
485 [(simpN, simp_method true true (CHANGED oo asm_full_simp_tac), |
|
486 "full simplification (including facts, excluding assumptions)"), |
486 (asm_simpN, simp_method false true (CHANGED oo asm_full_simp_tac), |
487 (asm_simpN, simp_method false true (CHANGED oo asm_full_simp_tac), |
487 "simplification (including assumption)"), |
488 "full simplification (including facts and assumptions)"), |
488 ("simp_tac", simp_method false false simp_tac, "simp_tac (improper!)"), |
489 ("simp_tac", simp_method false false simp_tac, "simp_tac (improper!)"), |
489 ("asm_simp_tac", simp_method false false asm_simp_tac, "asm_simp_tac (improper!)"), |
490 ("asm_simp_tac", simp_method false false asm_simp_tac, "asm_simp_tac (improper!)"), |
490 ("full_simp_tac", simp_method false false full_simp_tac, "full_simp_tac (improper!)"), |
491 ("full_simp_tac", simp_method false false full_simp_tac, "full_simp_tac (improper!)"), |
491 ("asm_full_simp_tac", simp_method false false asm_full_simp_tac, "asm_full_simp_tac (improper!)"), |
492 ("asm_full_simp_tac", simp_method false false asm_full_simp_tac, "asm_full_simp_tac (improper!)"), |
492 ("asm_lr_simp_tac", simp_method false false asm_lr_simp_tac, "asm_lr_simp_tac (improper!)")]; |
493 ("asm_lr_simp_tac", simp_method false false asm_lr_simp_tac, "asm_lr_simp_tac (improper!)")]; |