equal
deleted
inserted
replaced
68 from step(3) have "M \<noteq> N" and |
68 from step(3) have "M \<noteq> N" and |
69 **: "\<And>y. count N y < count M y \<Longrightarrow> (\<exists>x>y. count M x < count N x)" |
69 **: "\<And>y. count N y < count M y \<Longrightarrow> (\<exists>x>y. count M x < count N x)" |
70 by (simp_all add: less_multiset\<^sub>H\<^sub>O_def) |
70 by (simp_all add: less_multiset\<^sub>H\<^sub>O_def) |
71 from step(2) obtain M0 a K where |
71 from step(2) obtain M0 a K where |
72 *: "P = add_mset a M0" "N = M0 + K" "a \<notin># K" "\<And>b. b \<in># K \<Longrightarrow> b < a" |
72 *: "P = add_mset a M0" "N = M0 + K" "a \<notin># K" "\<And>b. b \<in># K \<Longrightarrow> b < a" |
73 by (blast elim: mult1_lessE) |
73 by (auto elim: mult1_lessE) |
74 from \<open>M \<noteq> N\<close> ** *(1,2,3) have "M \<noteq> P" by (force dest: *(4) elim!: less_asym split: if_splits ) |
74 from \<open>M \<noteq> N\<close> ** *(1,2,3) have "M \<noteq> P" by (force dest: *(4) elim!: less_asym split: if_splits ) |
75 moreover |
75 moreover |
76 { assume "count P a \<le> count M a" |
76 { assume "count P a \<le> count M a" |
77 with \<open>a \<notin># K\<close> have "count N a < count M a" unfolding *(1,2) |
77 with \<open>a \<notin># K\<close> have "count N a < count M a" unfolding *(1,2) |
78 by (auto simp add: not_in_iff) |
78 by (auto simp add: not_in_iff) |