# HG changeset patch # User Christian Urban # Date 1257332388 -3600 # Node ID bdedfb51778d02fdc46d6732524827e28846e70f # Parent 37636f2b1c198a5198f7663c9ce64fa3c8f7e9ae# Parent 783d6c940e4594e97a4e5fb20eb0012e52e2dc31 merged diff -r 37636f2b1c19 -r bdedfb51778d FSet.thy --- a/FSet.thy Wed Nov 04 11:59:15 2009 +0100 +++ b/FSet.thy Wed Nov 04 11:59:48 2009 +0100 @@ -333,7 +333,7 @@ term list_rec quotient_def - fset_rec::"'a \ ('b \ 'b fset \ 'a \ 'a) \ 'a fset \ 'b" + fset_rec::"'a \ ('b \ 'b fset \ 'a \ 'a) \ 'b fset \ 'a" where "fset_rec \ list_rec" @@ -351,8 +351,8 @@ ML {* val (trans2, reps_same, absrep, quot) = lookup_quot_thms @{context} "fset" *} -ML {* val ind_r_a = atomize_thm @{thm card1_suc} *} -(* prove {* build_regularize_goal ind_r_a rty rel @{context} *} +ML {* val ind_r_a = atomize_thm @{thm map_append} *} + prove {* build_regularize_goal ind_r_a rty rel @{context} *} ML_prf {* fun tac ctxt = (FIRST' [ rtac rel_refl, diff -r 37636f2b1c19 -r bdedfb51778d IntEx.thy --- a/IntEx.thy Wed Nov 04 11:59:15 2009 +0100 +++ b/IntEx.thy Wed Nov 04 11:59:48 2009 +0100 @@ -43,6 +43,7 @@ term PLUS thm PLUS_def +ML {* prop_of @{thm PLUS_def} *} fun my_neg :: "(nat \ nat) \ (nat \ nat)" @@ -128,10 +129,6 @@ lift_thm lthy qty ty_name rsp_thms defs t *} -ML {* - val (rty, rel, rel_refl, rel_eqv) = lookup_quot_data @{context} qty; -*} - ML {* lift_thm_my_int @{context} @{thm plus_sym_pre} *} lemma plus_assoc_pre: @@ -151,18 +148,43 @@ + + text {* Below is the construction site code used if things do not work *} -ML {* val (trans2, reps_same, quot) = lookup_quot_thms @{context} "my_int" *} +ML {* val (rty, rel, rel_refl, rel_eqv) = lookup_quot_data @{context} qty *} +ML {* val (trans2, reps_same, absrep, quot) = lookup_quot_thms @{context} "my_int" *} ML {* val abs = findabs rty (prop_of (atomize_thm @{thm plus_sym_pre})) *} ML {* val simp_lam_prs_thms = map (make_simp_prs_thm @{context} quot @{thm LAMBDA_PRS}) abs *} ML {* val defs_sym = add_lower_defs @{context} defs *} +(* ML {* val consts = [@{const_name my_plus}] *}*) ML {* val consts = lookup_quot_consts defs *} -ML {* val t_a = atomize_thm @{thm plus_sym_pre} *} -ML {* val t_r = regularize t_a rty rel rel_eqv rel_refl @{context} *} -ML {* val t_t = repabs @{context} t_r consts rty qty quot rel_refl trans2 rsp_thms *} -ML {* val t_l = repeat_eqsubst_thm @{context} simp_lam_prs_thms t_t *} -ML {* val t_a = simp_allex_prs quot [] t_l *} -ML {* val t_d = repeat_eqsubst_thm @{context} defs_sym t_a *} +ML {* val t_a = atomize_thm @{thm ho_tst} *} +prove t_r: {* build_regularize_goal t_a rty rel @{context} *} +ML_prf {* fun tac ctxt = + (ObjectLogic.full_atomize_tac) THEN' + REPEAT_ALL_NEW (FIRST' [ + rtac rel_refl, + atac, + rtac @{thm universal_twice}, + (rtac @{thm impI} THEN' atac), + (*rtac @{thm equality_twice},*) + EqSubst.eqsubst_tac ctxt [0] + [(@{thm equiv_res_forall} OF [rel_eqv]), + (@{thm equiv_res_exists} OF [rel_eqv])], + (rtac @{thm impI} THEN' (asm_full_simp_tac (Simplifier.context ctxt HOL_ss)) THEN' rtac rel_refl), + (rtac @{thm RIGHT_RES_FORALL_REGULAR}) + ]);*} +apply (atomize(full)) +apply (tactic {* tac @{context} 1 *}) +apply (auto) +sorry +(*ML {* val t_r = regularize t_a rty rel rel_eqv rel_refl @{context} *}*) +ML {* val t_t = Toplevel.program (fn () => repabs @{context} @{thm t_r} consts rty qty quot rel_refl trans2 rsp_thms) *} +ML {* val (alls, exs) = findallex rty qty (prop_of t_a) *} +ML {* val allthms = map (make_allex_prs_thm @{context} quot @{thm FORALL_PRS}) alls *} +ML {* val t_a = MetaSimplifier.rewrite_rule (allthms) t_t *} +ML {* val t_l = repeat_eqsubst_thm @{context} simp_lam_prs_thms t_a *} +ML {* val t_d = repeat_eqsubst_thm @{context} defs_sym t_l *} ML {* val t_r = MetaSimplifier.rewrite_rule [reps_same] t_d *} ML {* ObjectLogic.rulify t_r *}