equal
deleted
inserted
replaced
2167 from bfs have birr: "\<forall>b \<in> set bs. irreducible G b" by (fast elim: wfactorsE) |
2167 from bfs have birr: "\<forall>b \<in> set bs. irreducible G b" by (fast elim: wfactorsE) |
2168 |
2168 |
2169 have "\<exists>c cs. c \<in> carrier G \<and> set cs \<subseteq> carrier G \<and> wfactors G cs c \<and> fmset G cs = fmset G bs - fmset G as" |
2169 have "\<exists>c cs. c \<in> carrier G \<and> set cs \<subseteq> carrier G \<and> wfactors G cs c \<and> fmset G cs = fmset G bs - fmset G as" |
2170 proof (intro mset_wfactorsEx, simp) |
2170 proof (intro mset_wfactorsEx, simp) |
2171 fix X |
2171 fix X |
2172 assume "count (fmset G as) X < count (fmset G bs) X" |
2172 assume "X \<in># fmset G bs - fmset G as" |
2173 hence "0 < count (fmset G bs) X" by simp |
2173 hence "X \<in># fmset G bs" by (rule in_diffD) |
2174 hence "X \<in> set_mset (fmset G bs)" by simp |
|
2175 hence "X \<in> set (map (assocs G) bs)" by (simp add: fmset_def) |
2174 hence "X \<in> set (map (assocs G) bs)" by (simp add: fmset_def) |
2176 hence "\<exists>x. x \<in> set bs \<and> X = assocs G x" by (induct bs) auto |
2175 hence "\<exists>x. x \<in> set bs \<and> X = assocs G x" by (induct bs) auto |
2177 from this obtain x |
2176 from this obtain x |
2178 where xbs: "x \<in> set bs" |
2177 where xbs: "x \<in> set bs" |
2179 and X: "X = assocs G x" |
2178 and X: "X = assocs G x" |
2593 |
2592 |
2594 have "\<exists>c cs. c \<in> carrier G \<and> set cs \<subseteq> carrier G \<and> wfactors G cs c \<and> |
2593 have "\<exists>c cs. c \<in> carrier G \<and> set cs \<subseteq> carrier G \<and> wfactors G cs c \<and> |
2595 fmset G cs = fmset G as #\<inter> fmset G bs" |
2594 fmset G cs = fmset G as #\<inter> fmset G bs" |
2596 proof (intro mset_wfactorsEx) |
2595 proof (intro mset_wfactorsEx) |
2597 fix X |
2596 fix X |
2598 assume "X \<in> set_mset (fmset G as #\<inter> fmset G bs)" |
2597 assume "X \<in># fmset G as #\<inter> fmset G bs" |
2599 hence "X \<in> set_mset (fmset G as)" by (simp add: multiset_inter_def) |
2598 hence "X \<in># fmset G as" by simp |
2600 hence "X \<in> set (map (assocs G) as)" by (simp add: fmset_def) |
2599 hence "X \<in> set (map (assocs G) as)" by (simp add: fmset_def) |
2601 hence "\<exists>x. X = assocs G x \<and> x \<in> set as" by (induct as) auto |
2600 hence "\<exists>x. X = assocs G x \<and> x \<in> set as" by (induct as) auto |
2602 from this obtain x |
2601 from this obtain x |
2603 where X: "X = assocs G x" |
2602 where X: "X = assocs G x" |
2604 and xas: "x \<in> set as" |
2603 and xas: "x \<in> set as" |
2671 |
2670 |
2672 have "\<exists>c cs. c \<in> carrier G \<and> set cs \<subseteq> carrier G \<and> wfactors G cs c \<and> |
2671 have "\<exists>c cs. c \<in> carrier G \<and> set cs \<subseteq> carrier G \<and> wfactors G cs c \<and> |
2673 fmset G cs = (fmset G as - fmset G bs) + fmset G bs" |
2672 fmset G cs = (fmset G as - fmset G bs) + fmset G bs" |
2674 proof (intro mset_wfactorsEx) |
2673 proof (intro mset_wfactorsEx) |
2675 fix X |
2674 fix X |
2676 assume "X \<in> set_mset ((fmset G as - fmset G bs) + fmset G bs)" |
2675 assume "X \<in># (fmset G as - fmset G bs) + fmset G bs" |
2677 hence "X \<in> set_mset (fmset G as) \<or> X \<in> set_mset (fmset G bs)" |
2676 hence "X \<in># fmset G as \<or> X \<in># fmset G bs" |
2678 by (cases "X :# fmset G bs", simp, simp) |
2677 by (auto dest: in_diffD) |
2679 moreover |
2678 moreover |
2680 { |
2679 { |
2681 assume "X \<in> set_mset (fmset G as)" |
2680 assume "X \<in> set_mset (fmset G as)" |
2682 hence "X \<in> set (map (assocs G) as)" by (simp add: fmset_def) |
2681 hence "X \<in> set (map (assocs G) as)" by (simp add: fmset_def) |
2683 hence "\<exists>x. x \<in> set as \<and> X = assocs G x" by (induct as) auto |
2682 hence "\<exists>x. x \<in> set as \<and> X = assocs G x" by (induct as) auto |