src/HOL/Library/Multiset.thy
changeset 30729 461ee3e49ad3
parent 30663 0b6aff7451b2
child 32438 620a5d8cfa78
equal deleted inserted replaced
30728:f0aeca99b5d9 30729:461ee3e49ad3
  1075 apply (subst elem_imp_eq_diff_union[symmetric])
  1075 apply (subst elem_imp_eq_diff_union[symmetric])
  1076  apply (simp add: nth_mem_multiset_of)
  1076  apply (simp add: nth_mem_multiset_of)
  1077 apply simp
  1077 apply simp
  1078 done
  1078 done
  1079 
  1079 
  1080 interpretation mset_order!: order "op \<le>#" "op <#"
  1080 interpretation mset_order: order "op \<le>#" "op <#"
  1081 proof qed (auto intro: order.intro mset_le_refl mset_le_antisym
  1081 proof qed (auto intro: order.intro mset_le_refl mset_le_antisym
  1082   mset_le_trans simp: mset_less_def)
  1082   mset_le_trans simp: mset_less_def)
  1083 
  1083 
  1084 interpretation mset_order_cancel_semigroup!:
  1084 interpretation mset_order_cancel_semigroup:
  1085   pordered_cancel_ab_semigroup_add "op +" "op \<le>#" "op <#"
  1085   pordered_cancel_ab_semigroup_add "op +" "op \<le>#" "op <#"
  1086 proof qed (erule mset_le_mono_add [OF mset_le_refl])
  1086 proof qed (erule mset_le_mono_add [OF mset_le_refl])
  1087 
  1087 
  1088 interpretation mset_order_semigroup_cancel!:
  1088 interpretation mset_order_semigroup_cancel:
  1089   pordered_ab_semigroup_add_imp_le "op +" "op \<le>#" "op <#"
  1089   pordered_ab_semigroup_add_imp_le "op +" "op \<le>#" "op <#"
  1090 proof qed simp
  1090 proof qed simp
  1091 
  1091 
  1092 
  1092 
  1093 lemma mset_lessD: "A \<subset># B \<Longrightarrow> x \<in># A \<Longrightarrow> x \<in># B"
  1093 lemma mset_lessD: "A \<subset># B \<Longrightarrow> x \<in># A \<Longrightarrow> x \<in># B"
  1431 subsection {* Image *}
  1431 subsection {* Image *}
  1432 
  1432 
  1433 definition [code del]:
  1433 definition [code del]:
  1434  "image_mset f = fold_mset (op + o single o f) {#}"
  1434  "image_mset f = fold_mset (op + o single o f) {#}"
  1435 
  1435 
  1436 interpretation image_left_comm!: left_commutative "op + o single o f"
  1436 interpretation image_left_comm: left_commutative "op + o single o f"
  1437   proof qed (simp add:union_ac)
  1437   proof qed (simp add:union_ac)
  1438 
  1438 
  1439 lemma image_mset_empty [simp]: "image_mset f {#} = {#}"
  1439 lemma image_mset_empty [simp]: "image_mset f {#} = {#}"
  1440 by (simp add: image_mset_def)
  1440 by (simp add: image_mset_def)
  1441 
  1441