src/HOL/Library/DAList_Multiset.thy
changeset 61585 a9599d3d7610
parent 61115 3a4400985780
child 63040 eb4ddd18d635
equal deleted inserted replaced
61584:f06e5a5a4b46 61585:a9599d3d7610
   204 
   204 
   205 
   205 
   206 lemma mset_eq [code]: "HOL.equal (m1::'a::equal multiset) m2 \<longleftrightarrow> m1 \<le># m2 \<and> m2 \<le># m1"
   206 lemma mset_eq [code]: "HOL.equal (m1::'a::equal multiset) m2 \<longleftrightarrow> m1 \<le># m2 \<and> m2 \<le># m1"
   207   by (metis equal_multiset_def subset_mset.eq_iff)
   207   by (metis equal_multiset_def subset_mset.eq_iff)
   208 
   208 
   209 text \<open>By default the code for @{text "<"} is @{prop"xs < ys \<longleftrightarrow> xs \<le> ys \<and> \<not> xs = ys"}.
   209 text \<open>By default the code for \<open><\<close> is @{prop"xs < ys \<longleftrightarrow> xs \<le> ys \<and> \<not> xs = ys"}.
   210 With equality implemented by @{text"\<le>"}, this leads to three calls of  @{text"\<le>"}.
   210 With equality implemented by \<open>\<le>\<close>, this leads to three calls of  \<open>\<le>\<close>.
   211 Here is a more efficient version:\<close>
   211 Here is a more efficient version:\<close>
   212 lemma mset_less[code]: "xs <# (ys :: 'a multiset) \<longleftrightarrow> xs \<le># ys \<and> \<not> ys \<le># xs"
   212 lemma mset_less[code]: "xs <# (ys :: 'a multiset) \<longleftrightarrow> xs \<le># ys \<and> \<not> ys \<le># xs"
   213   by (rule subset_mset.less_le_not_le)
   213   by (rule subset_mset.less_le_not_le)
   214 
   214 
   215 lemma mset_less_eq_Bag0:
   215 lemma mset_less_eq_Bag0: