src/HOL/Cardinals/Bounded_Set.thy
changeset 67399 eab6ce8368fa
parent 63167 0909deb8059b
child 75624 22d1c5f2b9f4
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
    86   fix X f g
    86   fix X f g
    87   assume "\<And>z. z \<in> set_bset X \<Longrightarrow> f z = g z"
    87   assume "\<And>z. z \<in> set_bset X \<Longrightarrow> f z = g z"
    88   then show "map_bset f X = map_bset g X" by transfer force
    88   then show "map_bset f X = map_bset g X" by transfer force
    89 next
    89 next
    90   fix f
    90   fix f
    91   show "set_bset \<circ> map_bset f = op ` f \<circ> set_bset" by (rule ext, transfer) auto
    91   show "set_bset \<circ> map_bset f = (`) f \<circ> set_bset" by (rule ext, transfer) auto
    92 next
    92 next
    93   fix X :: "'a set['k]"
    93   fix X :: "'a set['k]"
    94   show "|set_bset X| \<le>o natLeq +c |UNIV :: 'k set|"
    94   show "|set_bset X| \<le>o natLeq +c |UNIV :: 'k set|"
    95     by transfer (blast dest: ordLess_imp_ordLeq)
    95     by transfer (blast dest: ordLess_imp_ordLeq)
    96 next
    96 next
   167   "rel_bset R (bset_of_option x1) (bset_of_option x2) = rel_option R x1 x2"
   167   "rel_bset R (bset_of_option x1) (bset_of_option x2) = rel_option R x1 x2"
   168   unfolding bset_of_option_def bsingleton_def[abs_def]
   168   unfolding bset_of_option_def bsingleton_def[abs_def]
   169   by transfer (auto simp: rel_set_def split: option.splits)
   169   by transfer (auto simp: rel_set_def split: option.splits)
   170 
   170 
   171 lemma rel_bgraph[simp]:
   171 lemma rel_bgraph[simp]:
   172   "rel_bset (rel_prod (op =) R) (bgraph f1) (bgraph f2) = rel_fun (op =) (rel_option R) f1 f2"
   172   "rel_bset (rel_prod (=) R) (bgraph f1) (bgraph f2) = rel_fun (=) (rel_option R) f1 f2"
   173   apply transfer
   173   apply transfer
   174   apply (auto simp: rel_fun_def rel_option_iff rel_set_def split: option.splits)
   174   apply (auto simp: rel_fun_def rel_option_iff rel_set_def split: option.splits)
   175   using option.collapse apply fastforce+
   175   using option.collapse apply fastforce+
   176   done
   176   done
   177 
   177 
   193   apply (rule ordLeq_ordLess_trans[OF card_of_mono1[OF subset_UNIV]])
   193   apply (rule ordLeq_ordLess_trans[OF card_of_mono1[OF subset_UNIV]])
   194   apply (rule ordLess_ordLeq_trans[OF card_of_set_type])
   194   apply (rule ordLess_ordLeq_trans[OF card_of_set_type])
   195   apply (rule ordLeq_csum2[OF card_of_Card_order])
   195   apply (rule ordLeq_csum2[OF card_of_Card_order])
   196   done
   196   done
   197 
   197 
   198 lift_definition bmember :: "'a \<Rightarrow> 'a set['k] \<Rightarrow> bool" is "op \<in>" .
   198 lift_definition bmember :: "'a \<Rightarrow> 'a set['k] \<Rightarrow> bool" is "(\<in>)" .
   199 
   199 
   200 lemma bmember_bCollect[simp]: "bmember a (bCollect P) = P a"
   200 lemma bmember_bCollect[simp]: "bmember a (bCollect P) = P a"
   201   by transfer simp
   201   by transfer simp
   202 
   202 
   203 lemma bset_eq_iff: "A = B \<longleftrightarrow> (\<forall>a. bmember a A = bmember a B)"
   203 lemma bset_eq_iff: "A = B \<longleftrightarrow> (\<forall>a. bmember a A = bmember a B)"