equal
deleted
inserted
replaced
1190 "{#} = Bag (DAList.empty)" |
1190 "{#} = Bag (DAList.empty)" |
1191 by (simp add: multiset_eq_iff alist.Alist_inverse DAList.empty_def) |
1191 by (simp add: multiset_eq_iff alist.Alist_inverse DAList.empty_def) |
1192 |
1192 |
1193 lemma single_Bag [code]: |
1193 lemma single_Bag [code]: |
1194 "{#x#} = Bag (DAList.update x 1 DAList.empty)" |
1194 "{#x#} = Bag (DAList.update x 1 DAList.empty)" |
1195 by (simp add: multiset_eq_iff alist.Alist_inverse impl_of_update impl_of_empty) |
1195 by (simp add: multiset_eq_iff alist.Alist_inverse update_code_eqn empty_code_eqn) |
1196 |
1196 |
1197 lemma union_Bag [code]: |
1197 lemma union_Bag [code]: |
1198 "Bag xs + Bag ys = Bag (join (\<lambda>x (n1, n2). n1 + n2) xs ys)" |
1198 "Bag xs + Bag ys = Bag (join (\<lambda>x (n1, n2). n1 + n2) xs ys)" |
1199 by (rule multiset_eqI) (simp add: count_of_join_raw alist.Alist_inverse distinct_join_raw join_def) |
1199 by (rule multiset_eqI) (simp add: count_of_join_raw alist.Alist_inverse distinct_join_raw join_def) |
1200 |
1200 |
1203 by (rule multiset_eqI) |
1203 by (rule multiset_eqI) |
1204 (simp add: count_of_subtract_entries_raw alist.Alist_inverse distinct_subtract_entries_raw subtract_entries_def) |
1204 (simp add: count_of_subtract_entries_raw alist.Alist_inverse distinct_subtract_entries_raw subtract_entries_def) |
1205 |
1205 |
1206 lemma filter_Bag [code]: |
1206 lemma filter_Bag [code]: |
1207 "Multiset.filter P (Bag xs) = Bag (DAList.filter (P \<circ> fst) xs)" |
1207 "Multiset.filter P (Bag xs) = Bag (DAList.filter (P \<circ> fst) xs)" |
1208 by (rule multiset_eqI) (simp add: count_of_filter impl_of_filter) |
1208 by (rule multiset_eqI) (simp add: count_of_filter filter_code_eqn) |
1209 |
1209 |
1210 lemma mset_less_eq_Bag [code]: |
1210 lemma mset_less_eq_Bag [code]: |
1211 "Bag xs \<le> A \<longleftrightarrow> (\<forall>(x, n) \<in> set (DAList.impl_of xs). count_of (DAList.impl_of xs) x \<le> count A x)" |
1211 "Bag xs \<le> A \<longleftrightarrow> (\<forall>(x, n) \<in> set (DAList.impl_of xs). count_of (DAList.impl_of xs) x \<le> count A x)" |
1212 (is "?lhs \<longleftrightarrow> ?rhs") |
1212 (is "?lhs \<longleftrightarrow> ?rhs") |
1213 proof |
1213 proof |