
diff -r 86fba2c4eeef -r 57bde65f6eb2 LamEx.thy
--- a/LamEx.thy	Wed Nov 25 10:52:21 2009 +0100
+++ b/LamEx.thy	Wed Nov 25 11:41:42 2009 +0100
@@ -176,7 +176,6 @@
 ML {* val rsp_thms = @{thms perm_rsp fresh_rsp rVar_rsp rApp_rsp rLam_rsp rfv_rsp} @
   @{thms ho_all_prs ho_ex_prs} *}
 
-ML {* fun lift_thm_lam lthy t = lift_thm lthy qty "lam" rsp_thms defs t *}
 ML {* val (rty, rel, rel_refl, rel_eqv) = lookup_quot_data @{context} qty *}
 ML {* val consts = lookup_quot_consts defs *}
 ML {* val (trans2, reps_same, absrep, quot) = lookup_quot_thms @{context} "lam" *}
@@ -268,101 +267,6 @@
 
 (* Construction Site code *)
 
-ML {* val (rty, rel, rel_refl, rel_eqv) = lookup_quot_data @{context} qty *}
-ML {* val consts = lookup_quot_consts defs *}
-ML {* val (trans2, reps_same, absrep, quot) = lookup_quot_thms @{context} "lam" *}
-
-ML {* val t_a = atomize_thm @{thm alpha.cases} *}
-(* prove {* build_regularize_goal t_a rty rel @{context}  *}
-ML_prf {*  fun tac ctxt =
-     (FIRST' [
-      rtac rel_refl,
-      atac,
-      rtac @{thm universal_twice},
-      (rtac @{thm impI} THEN' atac),
-      rtac @{thm implication_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 (tactic {* tac @{context} 1 *}) *)
-ML {* val t_r = regularize t_a rty rel rel_eqv rel_refl @{context} *}
-
-ML {*
-  val rt = build_repabs_term @{context} t_r consts rty qty
-  val rg = Logic.mk_equals ((Thm.prop_of t_r), rt);
-*}
-prove rg
-apply(atomize(full))
-(*ML_prf {*
-fun r_mk_comb_tac ctxt rty quot_thm reflex_thm trans_thm rsp_thms =
-  (FIRST' [
-    rtac trans_thm,
-    LAMBDA_RES_TAC ctxt,
-    res_forall_rsp_tac ctxt,
-    res_exists_rsp_tac ctxt,
-    (
-     (simp_tac ((Simplifier.context ctxt HOL_ss) addsimps rsp_thms))
-     THEN_ALL_NEW (fn _ => no_tac)
-    ),
-    (instantiate_tac @{thm REP_ABS_RSP(1)} ctxt THEN' (RANGE [quotient_tac quot_thm])),
-    rtac refl,
-    (APPLY_RSP_TAC rty ctxt THEN' (RANGE [quotient_tac quot_thm, quotient_tac quot_thm])),
-    Cong_Tac.cong_tac @{thm cong},
-    rtac @{thm ext},
-    rtac reflex_thm,
-    atac,
-    (
-     (simp_tac ((Simplifier.context ctxt HOL_ss) addsimps @{thms FUN_REL.simps}))
-     THEN_ALL_NEW (fn _ => no_tac)
-    ),
-    WEAK_LAMBDA_RES_TAC ctxt
-    ]);
-*}*)
-ML_prf {*
-  fun r_mk_comb_tac_lam lthy = r_mk_comb_tac lthy rty quot rel_refl trans2 rsp_thms
-*}
-apply (tactic {* (r_mk_comb_tac_lam @{context}) 1 *})
-
-
-
-
-
-
-apply (tactic {* REPEAT_ALL_NEW (r_mk_comb_tac_lam @{context}) 1 *})
-
-
-ML {* val t_t = repabs @{context} t_r consts rty qty quot rel_refl trans2 rsp_thms *}
-ML {* val abs = findabs rty (prop_of (atomize_thm @{thm alpha.induct})) *}
-ML {* val aps = findaps rty (prop_of (atomize_thm @{thm alpha.induct})) *}
-ML {* val (alls, exs) = findallex rty qty (prop_of (atomize_thm @{thm alpha.induct})) *}
-ML {* val allthms = map (make_allex_prs_thm @{context} quot @{thm FORALL_PRS} ) alls *}
-ML {* val exthms = map (make_allex_prs_thm @{context} quot @{thm EXISTS_PRS} ) exs *}
-ML {* val t_a = MetaSimplifier.rewrite_rule allthms t_t *}
-ML {* val simp_app_prs_thms = map (make_simp_prs_thm @{context} quot @{thm APP_PRS}) aps *}
-ML {* val simp_lam_prs_thms = map (make_simp_prs_thm @{context} quot @{thm LAMBDA_PRS}) abs *}
-ML {* val t_l = repeat_eqsubst_thm @{context} (simp_lam_prs_thms) t_a *}
-ML {* val t_l1 = repeat_eqsubst_thm @{context} simp_app_prs_thms t_l *}
-ML {* val defs_sym = add_lower_defs @{context} defs; *}
-ML {* val defs_sym_eq = map (fn x => eq_reflection OF [x]) defs_sym *}
-ML {* val t_d0 = MetaSimplifier.rewrite_rule defs_sym_eq t_l1 *}
-ML {* val t_d = repeat_eqsubst_thm @{context} defs_sym t_d0 *}
-ML {* val t_r = MetaSimplifier.rewrite_rule [reps_same] t_d *}
-ML {* val t_r1 = repeat_eqsubst_thm @{context} @{thms fun_map.simps} t_r *}
-ML {* val t_r2 = MetaSimplifier.rewrite_rule @{thms QUOT_TYPE_I_lam.thm10} t_r1 *}
-ML {* val t_r3 = MetaSimplifier.rewrite_rule @{thms eq_reflection[OF id_apply]} t_r2 *}
-ML {* val alpha_induct = ObjectLogic.rulify t_r3 *}
-
-(*local_setup {*
-  Quotient.note (@{binding "alpha_induct"}, alpha_induct) #> snd
-*}*)
-
-thm alpha_induct
-thm alpha.induct
-
 
 
 
@@ -384,6 +288,9 @@
 
 declare [[map noption = (option_map, option_rel)]]
 
+lemma "option_map id = id"
+sorry
+
 lemma OPT_QUOTIENT:
   assumes q: "QUOTIENT R Abs Rep"
   shows "QUOTIENT (option_rel R) (option_map Abs) (option_map Rep)"




