equal
deleted
inserted
replaced
32 |
32 |
33 lemma [code, code del]: "msetsum = msetsum" .. |
33 lemma [code, code del]: "msetsum = msetsum" .. |
34 |
34 |
35 lemma [code, code del]: "msetprod = msetprod" .. |
35 lemma [code, code del]: "msetprod = msetprod" .. |
36 |
36 |
37 lemma [code, code del]: "set_of = set_of" .. |
37 lemma [code, code del]: "set_mset = set_mset" .. |
38 |
38 |
39 lemma [code, code del]: "sorted_list_of_multiset = sorted_list_of_multiset" .. |
39 lemma [code, code del]: "sorted_list_of_multiset = sorted_list_of_multiset" .. |
40 |
40 |
41 lemma [code, code del]: "subset_mset = subset_mset" .. |
41 lemma [code, code del]: "subset_mset = subset_mset" .. |
42 |
42 |
401 show "n + x = (Suc ^^ n) x" |
401 show "n + x = (Suc ^^ n) x" |
402 by (induct n) auto |
402 by (induct n) auto |
403 qed |
403 qed |
404 |
404 |
405 |
405 |
406 lemma set_of_fold: "set_of A = fold_mset insert {} A" (is "_ = fold_mset ?f _ _") |
406 lemma set_mset_fold: "set_mset A = fold_mset insert {} A" (is "_ = fold_mset ?f _ _") |
407 proof - |
407 proof - |
408 interpret comp_fun_commute ?f by default auto |
408 interpret comp_fun_commute ?f by default auto |
409 show ?thesis by (induct A) auto |
409 show ?thesis by (induct A) auto |
410 qed |
410 qed |
411 |
411 |
412 lemma set_of_Bag[code]: |
412 lemma set_mset_Bag[code]: |
413 "set_of (Bag ms) = DAList_Multiset.fold (\<lambda>a n. (if n = 0 then (\<lambda>m. m) else insert a)) {} ms" |
413 "set_mset (Bag ms) = DAList_Multiset.fold (\<lambda>a n. (if n = 0 then (\<lambda>m. m) else insert a)) {} ms" |
414 unfolding set_of_fold |
414 unfolding set_mset_fold |
415 proof (rule comp_fun_commute.DAList_Multiset_fold, unfold_locales, (auto simp: ac_simps)[1]) |
415 proof (rule comp_fun_commute.DAList_Multiset_fold, unfold_locales, (auto simp: ac_simps)[1]) |
416 fix a n x |
416 fix a n x |
417 show "(if n = 0 then \<lambda>m. m else insert a) x = (insert a ^^ n) x" (is "?l n = ?r n") |
417 show "(if n = 0 then \<lambda>m. m else insert a) x = (insert a ^^ n) x" (is "?l n = ?r n") |
418 proof (cases n) |
418 proof (cases n) |
419 case 0 |
419 case 0 |