equal
deleted
inserted
replaced
155 unfolding less_multiset\<^sub>D\<^sub>M_def |
155 unfolding less_multiset\<^sub>D\<^sub>M_def |
156 proof (intro iffI exI conjI) |
156 proof (intro iffI exI conjI) |
157 assume "less_multiset\<^sub>H\<^sub>O M N" |
157 assume "less_multiset\<^sub>H\<^sub>O M N" |
158 then obtain z where z: "count M z < count N z" |
158 then obtain z where z: "count M z < count N z" |
159 unfolding less_multiset\<^sub>H\<^sub>O_def by (auto simp: multiset_eq_iff nat_neq_iff) |
159 unfolding less_multiset\<^sub>H\<^sub>O_def by (auto simp: multiset_eq_iff nat_neq_iff) |
160 def X \<equiv> "N - M" |
160 define X where "X = N - M" |
161 def Y \<equiv> "M - N" |
161 define Y where "Y = M - N" |
162 from z show "X \<noteq> {#}" unfolding X_def by (auto simp: multiset_eq_iff not_less_eq_eq Suc_le_eq) |
162 from z show "X \<noteq> {#}" unfolding X_def by (auto simp: multiset_eq_iff not_less_eq_eq Suc_le_eq) |
163 from z show "X \<le># N" unfolding X_def by auto |
163 from z show "X \<le># N" unfolding X_def by auto |
164 show "M = (N - X) + Y" unfolding X_def Y_def multiset_eq_iff count_union count_diff by force |
164 show "M = (N - X) + Y" unfolding X_def Y_def multiset_eq_iff count_union count_diff by force |
165 show "\<forall>k. k \<in># Y \<longrightarrow> (\<exists>a. a \<in># X \<and> k < a)" |
165 show "\<forall>k. k \<in># Y \<longrightarrow> (\<exists>a. a \<in># X \<and> k < a)" |
166 proof (intro allI impI) |
166 proof (intro allI impI) |