src/HOL/Library/Multiset.thy
changeset 39314 aecb239a2bbc
parent 39302 d7728f65b353
child 39533 91a0ff0ff237
equal deleted inserted replaced
39313:41ce0b56d858 39314:aecb239a2bbc
  1379 lemma fold_mset_equality: "fold_msetG f z A y \<Longrightarrow> fold_mset f z A = y"
  1379 lemma fold_mset_equality: "fold_msetG f z A y \<Longrightarrow> fold_mset f z A = y"
  1380 unfolding fold_mset_def by (blast intro: fold_msetG_determ)
  1380 unfolding fold_mset_def by (blast intro: fold_msetG_determ)
  1381 
  1381 
  1382 lemma fold_mset_insert:
  1382 lemma fold_mset_insert:
  1383   "fold_mset f z (A + {#x#}) = f x (fold_mset f z A)"
  1383   "fold_mset f z (A + {#x#}) = f x (fold_mset f z A)"
  1384 apply (simp add: fold_mset_def fold_mset_insert_aux add_commute)  
       
  1385 apply (rule the_equality)
       
  1386  apply (auto cong add: conj_cong 
       
  1387      simp add: fold_mset_def [symmetric] fold_mset_equality fold_msetG_nonempty)
       
  1388 done
       
  1389 
       
  1390 lemma fold_mset_insert_idem:
       
  1391   "fold_mset f z (A + {#a#}) = f a (fold_mset f z A)"
       
  1392 apply (simp add: fold_mset_def fold_mset_insert_aux)
  1384 apply (simp add: fold_mset_def fold_mset_insert_aux)
  1393 apply (rule the_equality)
  1385 apply (rule the_equality)
  1394  apply (auto cong add: conj_cong 
  1386  apply (auto cong add: conj_cong 
  1395      simp add: fold_mset_def [symmetric] fold_mset_equality fold_msetG_nonempty)
  1387      simp add: fold_mset_def [symmetric] fold_mset_equality fold_msetG_nonempty)
  1396 done
  1388 done