equal
deleted
inserted
replaced
114 |
114 |
115 lemma perm_append2_eq [iff]: "xs @ zs <~~> ys @ zs \<longleftrightarrow> xs <~~> ys" |
115 lemma perm_append2_eq [iff]: "xs @ zs <~~> ys @ zs \<longleftrightarrow> xs <~~> ys" |
116 apply (safe intro!: perm_append2) |
116 apply (safe intro!: perm_append2) |
117 apply (rule append_perm_imp_perm) |
117 apply (rule append_perm_imp_perm) |
118 apply (rule perm_append_swap [THEN perm.trans]) |
118 apply (rule perm_append_swap [THEN perm.trans]) |
119 -- \<open>the previous step helps this @{text blast} call succeed quickly\<close> |
119 \<comment> \<open>the previous step helps this \<open>blast\<close> call succeed quickly\<close> |
120 apply (blast intro: perm_append_swap) |
120 apply (blast intro: perm_append_swap) |
121 done |
121 done |
122 |
122 |
123 lemma mset_eq_perm: "mset xs = mset ys \<longleftrightarrow> xs <~~> ys" |
123 lemma mset_eq_perm: "mset xs = mset ys \<longleftrightarrow> xs <~~> ys" |
124 apply (rule iffI) |
124 apply (rule iffI) |