Merge
authorpaulson <lp15@cam.ac.uk>
Wed, 29 Jan 2014 17:09:46 +0000
changeset 55166 4d80d91cb447
parent 55165 f4791db20067 (current diff)
parent 55164 409b2b2e7c5a (diff)
child 55167 f3ac344284ff
Merge
--- a/src/HOL/BNF_Def.thy	Wed Jan 29 17:09:01 2014 +0000
+++ b/src/HOL/BNF_Def.thy	Wed Jan 29 17:09:46 2014 +0000
@@ -110,10 +110,11 @@
   by auto
 
 lemma Collect_split_mono_strong: 
-  "\<lbrakk>\<forall>a\<in>fst ` A. \<forall>b \<in> snd ` A. P a b \<longrightarrow> Q a b; A \<subseteq> Collect (split P)\<rbrakk> \<Longrightarrow>
+  "\<lbrakk>X = fst ` A; Y = snd ` A; \<forall>a\<in>X. \<forall>b \<in> Y. P a b \<longrightarrow> Q a b; A \<subseteq> Collect (split P)\<rbrakk> \<Longrightarrow>
   A \<subseteq> Collect (split Q)"
   by fastforce
 
+
 lemma predicate2_eqD: "A = B \<Longrightarrow> A a b \<longleftrightarrow> B a b"
 by metis
 
--- a/src/HOL/Tools/BNF/bnf_def_tactics.ML	Wed Jan 29 17:09:01 2014 +0000
+++ b/src/HOL/Tools/BNF/bnf_def_tactics.ML	Wed Jan 29 17:09:46 2014 +0000
@@ -189,9 +189,10 @@
     unfold_tac ctxt [in_rel] THEN
     REPEAT_DETERM (eresolve_tac [exE, CollectE, conjE] 1) THEN
     hyp_subst_tac ctxt 1 THEN
-    unfold_tac ctxt set_maps THEN
     EVERY' [rtac exI, rtac @{thm conjI[OF CollectI conjI[OF refl refl]]},
-      CONJ_WRAP' (K (etac @{thm Collect_split_mono_strong} THEN' atac)) set_maps] 1;
+      CONJ_WRAP' (fn thm =>
+        (etac (@{thm Collect_split_mono_strong} OF [thm, thm]) THEN' atac))
+      set_maps] 1;
 
 fun mk_map_transfer_tac rel_mono in_rel set_maps map_cong0 map_comp
   {context = ctxt, prems = _} =