# HG changeset patch # User wenzelm # Date 979049728 -3600 # Node ID b74566c667c74f836957bb1cdcb5ca8c93087da2 # Parent b207d6d1bedcf9604a86837b8fbcea228947dee8 split_all operation; diff -r b207d6d1bedc -r b74566c667c7 src/HOL/Product_Type.ML --- a/src/HOL/Product_Type.ML Tue Jan 09 13:54:44 2001 +0100 +++ b/src/HOL/Product_Type.ML Tue Jan 09 15:15:28 2001 +0100 @@ -138,13 +138,14 @@ | exists_paired_all (t $ u) = exists_paired_all t orelse exists_paired_all u | exists_paired_all (Abs (_, _, t)) = exists_paired_all t | exists_paired_all _ = false; - val split_tac = full_simp_tac - (HOL_basic_ss - addsimps [split_paired_all, unit_all_eq2, unit_abs_eta_conv] - addsimprocs [unit_eq_proc]); + val ss = HOL_basic_ss + addsimps [split_paired_all, unit_all_eq2, unit_abs_eta_conv] + addsimprocs [unit_eq_proc]; in val split_all_tac = SUBGOAL (fn (t, i) => - if exists_paired_all t then split_tac i else no_tac); + if exists_paired_all t then full_simp_tac ss i else no_tac); + fun split_all th = + if exists_paired_all (#prop (Thm.rep_thm th)) then full_simplify ss th else th; end; claset_ref() := claset() @@ -568,8 +569,7 @@ (*Attempts to remove occurrences of split, and pair-valued parameters*) -val remove_split = rewrite_rule [split RS eq_reflection] o - rule_by_tactic (TRYALL split_all_tac); +val remove_split = rewrite_rule [split RS eq_reflection] o split_all; local @@ -599,7 +599,6 @@ val split_rule_var = standard o remove_split o split_rule_var'; (*Curries ALL function variables occurring in a rule's conclusion*) -fun split_rule rl = remove_split (foldr split_rule_var' (term_vars (concl_of rl), rl)) - |> standard; +fun split_rule rl = standard (remove_split (foldr split_rule_var' (term_vars (concl_of rl), rl))); end;