equal
deleted
inserted
replaced
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)" |