src/HOL/Library/Multiset_Order.thy
changeset 63040 eb4ddd18d635
parent 62430 9527ff088c15
child 63310 caaacf37943f
equal deleted inserted replaced
63039:1a20fd9cf281 63040:eb4ddd18d635
   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)