equal
deleted
inserted
replaced
227 lemma bi_uniqueI: "left_unique R \<Longrightarrow> right_unique R \<Longrightarrow> bi_unique R" |
227 lemma bi_uniqueI: "left_unique R \<Longrightarrow> right_unique R \<Longrightarrow> bi_unique R" |
228 unfolding bi_unique_alt_def .. |
228 unfolding bi_unique_alt_def .. |
229 |
229 |
230 end |
230 end |
231 |
231 |
232 subsection \<open>Equality restricted by a predicate\<close> |
232 |
233 |
|
234 definition eq_onp :: "('a \<Rightarrow> bool) \<Rightarrow> 'a \<Rightarrow> 'a \<Rightarrow> bool" |
|
235 where "eq_onp R = (\<lambda>x y. R x \<and> x = y)" |
|
236 |
|
237 lemma eq_onp_Grp: "eq_onp P = BNF_Def.Grp (Collect P) id" |
|
238 unfolding eq_onp_def Grp_def by auto |
|
239 |
|
240 lemma eq_onp_to_eq: |
|
241 assumes "eq_onp P x y" |
|
242 shows "x = y" |
|
243 using assms by (simp add: eq_onp_def) |
|
244 |
|
245 lemma eq_onp_top_eq_eq: "eq_onp top = op=" |
|
246 by (simp add: eq_onp_def) |
|
247 |
|
248 lemma eq_onp_same_args: |
|
249 shows "eq_onp P x x = P x" |
|
250 using assms by (auto simp add: eq_onp_def) |
|
251 |
|
252 lemma Ball_Collect: "Ball A P = (A \<subseteq> (Collect P))" |
|
253 by auto |
|
254 |
233 |
255 ML_file "Tools/Transfer/transfer.ML" |
234 ML_file "Tools/Transfer/transfer.ML" |
256 declare refl [transfer_rule] |
235 declare refl [transfer_rule] |
257 |
236 |
258 hide_const (open) Rel |
237 hide_const (open) Rel |
555 shows "((A ===> B ===> op =) ===> op =) left_unique left_unique" |
534 shows "((A ===> B ===> op =) ===> op =) left_unique left_unique" |
556 unfolding left_unique_def[abs_def] by transfer_prover |
535 unfolding left_unique_def[abs_def] by transfer_prover |
557 |
536 |
558 lemma prod_pred_parametric [transfer_rule]: |
537 lemma prod_pred_parametric [transfer_rule]: |
559 "((A ===> op =) ===> (B ===> op =) ===> rel_prod A B ===> op =) pred_prod pred_prod" |
538 "((A ===> op =) ===> (B ===> op =) ===> rel_prod A B ===> op =) pred_prod pred_prod" |
560 unfolding pred_prod_def[abs_def] Basic_BNFs.fsts_def Basic_BNFs.snds_def fstsp.simps sndsp.simps |
539 unfolding prod.pred_set[abs_def] Basic_BNFs.fsts_def Basic_BNFs.snds_def fstsp.simps sndsp.simps |
561 by simp transfer_prover |
540 by simp transfer_prover |
562 |
541 |
563 lemma apfst_parametric [transfer_rule]: |
542 lemma apfst_parametric [transfer_rule]: |
564 "((A ===> B) ===> rel_prod A C ===> rel_prod B C) apfst apfst" |
543 "((A ===> B) ===> rel_prod A C ===> rel_prod B C) apfst apfst" |
565 unfolding apfst_def[abs_def] by transfer_prover |
544 unfolding apfst_def[abs_def] by transfer_prover |