src/HOL/Library/FSet.thy
changeset 63092 a949b2a5f51d
parent 63040 eb4ddd18d635
child 63331 247eac9758dd
equal deleted inserted replaced
63091:54f16a0a3069 63092:a949b2a5f51d
   853   using rel_set_transfer[unfolded rel_fun_def,rule_format, Transfer.transferred, where A = A and B = B]
   853   using rel_set_transfer[unfolded rel_fun_def,rule_format, Transfer.transferred, where A = A and B = B]
   854   by simp
   854   by simp
   855 
   855 
   856 lemma bind_transfer [transfer_rule]:
   856 lemma bind_transfer [transfer_rule]:
   857   "(rel_fset A ===> (A ===> rel_fset B) ===> rel_fset B) fbind fbind"
   857   "(rel_fset A ===> (A ===> rel_fset B) ===> rel_fset B) fbind fbind"
   858   using assms unfolding rel_fun_def
   858   unfolding rel_fun_def
   859   using bind_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   859   using bind_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   860 
   860 
   861 text \<open>Rules requiring bi-unique, bi-total or right-total relations\<close>
   861 text \<open>Rules requiring bi-unique, bi-total or right-total relations\<close>
   862 
   862 
   863 lemma fmember_transfer [transfer_rule]:
   863 lemma fmember_transfer [transfer_rule]:
   883   using assms unfolding rel_fun_def
   883   using assms unfolding rel_fun_def
   884   using subset_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   884   using subset_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   885 
   885 
   886 lemma fSup_transfer [transfer_rule]:
   886 lemma fSup_transfer [transfer_rule]:
   887   "bi_unique A \<Longrightarrow> (rel_set (rel_fset A) ===> rel_fset A) Sup Sup"
   887   "bi_unique A \<Longrightarrow> (rel_set (rel_fset A) ===> rel_fset A) Sup Sup"
   888   using assms unfolding rel_fun_def
   888   unfolding rel_fun_def
   889   apply clarify
   889   apply clarify
   890   apply transfer'
   890   apply transfer'
   891   using Sup_fset_transfer[unfolded rel_fun_def] by blast
   891   using Sup_fset_transfer[unfolded rel_fun_def] by blast
   892 
   892 
   893 (* FIXME: add right_total_fInf_transfer *)
   893 (* FIXME: add right_total_fInf_transfer *)
   906   using assms unfolding rel_fun_def
   906   using assms unfolding rel_fun_def
   907   using Lifting_Set.filter_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   907   using Lifting_Set.filter_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   908 
   908 
   909 lemma card_transfer [transfer_rule]:
   909 lemma card_transfer [transfer_rule]:
   910   "bi_unique A \<Longrightarrow> (rel_fset A ===> op =) fcard fcard"
   910   "bi_unique A \<Longrightarrow> (rel_fset A ===> op =) fcard fcard"
   911   using assms unfolding rel_fun_def
   911   unfolding rel_fun_def
   912   using card_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   912   using card_transfer[unfolded rel_fun_def, rule_format, Transfer.transferred] by blast
   913 
   913 
   914 end
   914 end
   915 
   915 
   916 lifting_update fset.lifting
   916 lifting_update fset.lifting