the error occurs in APPLY_RSP_TAC where the wrong quotient (for LIST_REL) is applied
--- a/FSet.thy Thu Dec 03 15:03:31 2009 +0100
+++ b/FSet.thy Thu Dec 03 19:06:14 2009 +0100
@@ -408,7 +408,86 @@
thm quotient_thm
lemma "P (x :: 'a list) (EMPTY :: 'c fset) \<Longrightarrow> (\<And>e t. P x t \<Longrightarrow> P x (INSERT e t)) \<Longrightarrow> P x l"
-apply (tactic {* lift_tac_fset @{context} @{thm list_induct_part} 1 *})
+apply (tactic {* (ObjectLogic.full_atomize_tac THEN' gen_frees_tac @{context}) 1 *})
+apply(tactic {* procedure_tac @{context} @{thm list_induct_part} 1 *})
+apply(tactic {* regularize_tac @{context} [rel_eqv] 1 *})
+prefer 2
+apply(tactic {* clean_tac @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* APPLY_RSP_TAC @{context} 1*})
+thm quotient_thm
+apply(rule quotient_thm(3))
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* APPLY_RSP_TAC @{context} 1*})
+thm quotient_thm
+apply(rule quotient_thm(3))
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* APPLY_RSP_TAC @{context} 1*})
+thm quotient_thm
+apply(rule quotient_thm(3))
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* APPLY_RSP_TAC @{context} 1*})
+thm quotient_thm
+apply(rule quotient_thm(3))
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(rule quotient_thm)
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+apply(tactic {* inj_repabs_tac_fset @{context} 1 *})
+(* apply (tactic {* lift_tac_fset @{context} @{thm list_induct_part} 1 *}) *)
done
lemma "P (x :: 'a fset) (EMPTY :: 'c fset) \<Longrightarrow> (\<And>e t. P x t \<Longrightarrow> P x (INSERT e t)) \<Longrightarrow> P x l"
@@ -434,8 +513,8 @@
"INSERT2 \<equiv> op #"
ML {* val quot = @{thms QUOTIENT_fset QUOTIENT_fset2} *}
-ML {* fun inj_repabs_tac_fset lthy = inj_repabs_tac lthy quot [rel_refl] [trans2] *}
-ML {* fun lift_tac_fset lthy t = lift_tac lthy t [rel_eqv] quot *}
+ML {* fun inj_repabs_tac_fset lthy = inj_repabs_tac lthy [rel_refl] [trans2] *}
+ML {* fun lift_tac_fset lthy t = lift_tac lthy t [rel_eqv] *}
lemma "P (x :: 'a fset2) (EMPTY :: 'c fset) \<Longrightarrow> (\<And>e t. P x t \<Longrightarrow> P x (INSERT e t)) \<Longrightarrow> P x l"
apply (tactic {* lift_tac_fset @{context} @{thm list_induct_part} 1 *})
@@ -469,7 +548,7 @@
sorry
ML {* val rsp_thms = @{thms list_rec_rsp list_case_rsp} @ rsp_thms *}
-ML {* fun lift_tac_fset lthy t = lift_tac lthy t [rel_eqv] quot *}
+ML {* fun lift_tac_fset lthy t = lift_tac lthy t [rel_eqv] *}
lemma "fset_rec (f1::'t) x (INSERT a xa) = x a xa (fset_rec f1 x xa)"
apply (tactic {* lift_tac_fset @{context} @{thm list.recs(2)} 1 *})
--- a/QuotMain.thy Thu Dec 03 15:03:31 2009 +0100
+++ b/QuotMain.thy Thu Dec 03 19:06:14 2009 +0100
@@ -741,6 +741,7 @@
CHANGED o (simp_tac ((Simplifier.context ctxt empty_ss) addsimps @{thms id_simps}))])
*}
+
lemma FUN_REL_I:
assumes a: "\<And>x y. R1 x y \<Longrightarrow> R2 (f x) (g y)"
shows "(R1 ===> R2) f g"