src/HOL/Library/Multiset.thy
changeset 67332 cb96edae56ef
parent 67051 e7e54a0b9197
child 67398 5eb932e604a2
equal deleted inserted replaced
67331:a8770603a269 67332:cb96edae56ef
  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"