equal
deleted
inserted
replaced
3867 rel_mset'.induct[unfolded rel_mset_rel_mset'[symmetric]] |
3867 rel_mset'.induct[unfolded rel_mset_rel_mset'[symmetric]] |
3868 |
3868 |
3869 |
3869 |
3870 subsection \<open>Size setup\<close> |
3870 subsection \<open>Size setup\<close> |
3871 |
3871 |
3872 lemma multiset_size_o_map: "size_multiset g \<circ> image_mset f = size_multiset (g \<circ> f)" |
3872 lemma size_multiset_o_map: "size_multiset g \<circ> image_mset f = size_multiset (g \<circ> f)" |
3873 apply (rule ext) |
3873 apply (rule ext) |
3874 subgoal for x by (induct x) auto |
3874 subgoal for x by (induct x) auto |
3875 done |
3875 done |
3876 |
3876 |
3877 setup \<open> |
3877 setup \<open> |
3878 BNF_LFP_Size.register_size_global @{type_name multiset} @{const_name size_multiset} |
3878 BNF_LFP_Size.register_size_global @{type_name multiset} @{const_name size_multiset} |
3879 @{thm size_multiset_overloaded_def} |
3879 @{thm size_multiset_overloaded_def} |
3880 @{thms size_multiset_empty size_multiset_single size_multiset_union size_empty size_single |
3880 @{thms size_multiset_empty size_multiset_single size_multiset_union size_empty size_single |
3881 size_union} |
3881 size_union} |
3882 @{thms multiset_size_o_map} |
3882 @{thms size_multiset_o_map} |
3883 \<close> |
3883 \<close> |
3884 |
3884 |
3885 subsection \<open>Lemmas about Size\<close> |
3885 subsection \<open>Lemmas about Size\<close> |
3886 |
3886 |
3887 lemma size_mset_SucE: "size A = Suc n \<Longrightarrow> (\<And>a B. A = {#a#} + B \<Longrightarrow> size B = n \<Longrightarrow> P) \<Longrightarrow> P" |
3887 lemma size_mset_SucE: "size A = Suc n \<Longrightarrow> (\<And>a B. A = {#a#} + B \<Longrightarrow> size B = n \<Longrightarrow> P) \<Longrightarrow> P" |