equal
deleted
inserted
replaced
903 list_all ((fst r,rT)::vars, |
903 list_all ((fst r,rT)::vars, |
904 app_bounds (n - 1) ((Free P)$Bound n))); |
904 app_bounds (n - 1) ((Free P)$Bound n))); |
905 val prove_standard = quick_and_dirty_prove true thy; |
905 val prove_standard = quick_and_dirty_prove true thy; |
906 val thm = prove_standard [] prop (fn prems => |
906 val thm = prove_standard [] prop (fn prems => |
907 EVERY [rtac equal_intr_rule 1, |
907 EVERY [rtac equal_intr_rule 1, |
908 norm_hhf_tac 1,REPEAT (etac meta_allE 1), atac 1, |
908 Goal.norm_hhf_tac 1,REPEAT (etac meta_allE 1), atac 1, |
909 norm_hhf_tac 1,REPEAT (etac meta_allE 1), atac 1]); |
909 Goal.norm_hhf_tac 1,REPEAT (etac meta_allE 1), atac 1]); |
910 in thm end |
910 in thm end |
911 | mk_fun_apply_eq t thy = raise TERM ("mk_fun_apply_eq",[t]); |
911 | mk_fun_apply_eq t thy = raise TERM ("mk_fun_apply_eq",[t]); |
912 |
912 |
913 in |
913 in |
914 (* During proof of theorems produced by record_simproc you can end up in |
914 (* During proof of theorems produced by record_simproc you can end up in |
1647 simp_tac (HOL_basic_ss addsimps dest_convs_standard) 1])); |
1647 simp_tac (HOL_basic_ss addsimps dest_convs_standard) 1])); |
1648 val surjective = timeit_msg "record extension surjective proof:" surjective_prf; |
1648 val surjective = timeit_msg "record extension surjective proof:" surjective_prf; |
1649 |
1649 |
1650 fun split_meta_prf () = |
1650 fun split_meta_prf () = |
1651 prove_standard [] split_meta_prop (fn prems => |
1651 prove_standard [] split_meta_prop (fn prems => |
1652 EVERY [rtac equal_intr_rule 1, norm_hhf_tac 1, |
1652 EVERY [rtac equal_intr_rule 1, Goal.norm_hhf_tac 1, |
1653 etac meta_allE 1, atac 1, |
1653 etac meta_allE 1, atac 1, |
1654 rtac (prop_subst OF [surjective]) 1, |
1654 rtac (prop_subst OF [surjective]) 1, |
1655 REPEAT (etac meta_allE 1), atac 1]); |
1655 REPEAT (etac meta_allE 1), atac 1]); |
1656 val split_meta = timeit_msg "record extension split_meta proof:" split_meta_prf; |
1656 val split_meta = timeit_msg "record extension split_meta proof:" split_meta_prf; |
1657 |
1657 |
2056 THEN simp_all_tac HOL_basic_ss [unit_all_eq1]); |
2056 THEN simp_all_tac HOL_basic_ss [unit_all_eq1]); |
2057 val cases = timeit_msg "record cases proof:" cases_prf; |
2057 val cases = timeit_msg "record cases proof:" cases_prf; |
2058 |
2058 |
2059 fun split_meta_prf () = |
2059 fun split_meta_prf () = |
2060 prove false [] split_meta_prop (fn prems => |
2060 prove false [] split_meta_prop (fn prems => |
2061 EVERY [rtac equal_intr_rule 1, norm_hhf_tac 1, |
2061 EVERY [rtac equal_intr_rule 1, Goal.norm_hhf_tac 1, |
2062 etac meta_allE 1, atac 1, |
2062 etac meta_allE 1, atac 1, |
2063 rtac (prop_subst OF [surjective]) 1, |
2063 rtac (prop_subst OF [surjective]) 1, |
2064 REPEAT (etac meta_allE 1), atac 1]); |
2064 REPEAT (etac meta_allE 1), atac 1]); |
2065 val split_meta = timeit_msg "record split_meta proof:" split_meta_prf; |
2065 val split_meta = timeit_msg "record split_meta proof:" split_meta_prf; |
2066 val split_meta_standard = standard split_meta; |
2066 val split_meta_standard = standard split_meta; |