src/HOL/Library/Multiset.thy
changeset 28823 dcbef866c9e2
parent 28708 a1a436f09ec6
child 29125 d41182a8135c
child 29233 ce6d35a0bed6
equal deleted inserted replaced
28822:7ca11ecbc4fb 28823:dcbef866c9e2
  1083 interpretation mset_order: order ["op \<le>#" "op <#"]
  1083 interpretation mset_order: order ["op \<le>#" "op <#"]
  1084 proof qed (auto intro: order.intro mset_le_refl mset_le_antisym
  1084 proof qed (auto intro: order.intro mset_le_refl mset_le_antisym
  1085   mset_le_trans simp: mset_less_def)
  1085   mset_le_trans simp: mset_less_def)
  1086 
  1086 
  1087 interpretation mset_order_cancel_semigroup:
  1087 interpretation mset_order_cancel_semigroup:
  1088     pordered_cancel_ab_semigroup_add ["op +" "op \<le>#" "op <#"]
  1088   pordered_cancel_ab_semigroup_add ["op +" "op \<le>#" "op <#"]
  1089 proof qed (erule mset_le_mono_add [OF mset_le_refl])
  1089 proof qed (erule mset_le_mono_add [OF mset_le_refl])
  1090 
  1090 
  1091 interpretation mset_order_semigroup_cancel:
  1091 interpretation mset_order_semigroup_cancel:
  1092     pordered_ab_semigroup_add_imp_le ["op +" "op \<le>#" "op <#"]
  1092   pordered_ab_semigroup_add_imp_le ["op +" "op \<le>#" "op <#"]
  1093 proof qed simp
  1093 proof qed simp
  1094 
  1094 
  1095 
  1095 
  1096 lemma mset_lessD: "A \<subset># B \<Longrightarrow> x \<in># A \<Longrightarrow> x \<in># B"
  1096 lemma mset_lessD: "A \<subset># B \<Longrightarrow> x \<in># A \<Longrightarrow> x \<in># B"
  1097 apply (clarsimp simp: mset_le_def mset_less_def)
  1097 apply (clarsimp simp: mset_le_def mset_less_def)
  1435 
  1435 
  1436 definition [code del]:
  1436 definition [code del]:
  1437  "image_mset f = fold_mset (op + o single o f) {#}"
  1437  "image_mset f = fold_mset (op + o single o f) {#}"
  1438 
  1438 
  1439 interpretation image_left_comm: left_commutative ["op + o single o f"]
  1439 interpretation image_left_comm: left_commutative ["op + o single o f"]
  1440 by (unfold_locales) (simp add:union_ac)
  1440   proof qed (simp add:union_ac)
  1441 
  1441 
  1442 lemma image_mset_empty [simp]: "image_mset f {#} = {#}"
  1442 lemma image_mset_empty [simp]: "image_mset f {#} = {#}"
  1443 by (simp add: image_mset_def)
  1443 by (simp add: image_mset_def)
  1444 
  1444 
  1445 lemma image_mset_single [simp]: "image_mset f {#x#} = {#f x#}"
  1445 lemma image_mset_single [simp]: "image_mset f {#x#} = {#f x#}"