equal
deleted
inserted
replaced
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 |