equal
deleted
inserted
replaced
160 lemma eq_set_perm_remdups: "set xs = set ys \<Longrightarrow> remdups xs <~~> remdups ys" |
160 lemma eq_set_perm_remdups: "set xs = set ys \<Longrightarrow> remdups xs <~~> remdups ys" |
161 apply (induct xs arbitrary: ys rule: length_induct) |
161 apply (induct xs arbitrary: ys rule: length_induct) |
162 apply (case_tac "remdups xs") |
162 apply (case_tac "remdups xs") |
163 apply simp_all |
163 apply simp_all |
164 apply (subgoal_tac "a \<in> set (remdups ys)") |
164 apply (subgoal_tac "a \<in> set (remdups ys)") |
165 prefer 2 apply (metis set_simps(2) insert_iff set_remdups) |
165 prefer 2 apply (metis list.set(2) insert_iff set_remdups) |
166 apply (drule split_list) apply (elim exE conjE) |
166 apply (drule split_list) apply (elim exE conjE) |
167 apply (drule_tac x = list in spec) apply (erule impE) prefer 2 |
167 apply (drule_tac x = list in spec) apply (erule impE) prefer 2 |
168 apply (drule_tac x = "ysa @ zs" in spec) apply (erule impE) prefer 2 |
168 apply (drule_tac x = "ysa @ zs" in spec) apply (erule impE) prefer 2 |
169 apply simp |
169 apply simp |
170 apply (subgoal_tac "a # list <~~> a # ysa @ zs") |
170 apply (subgoal_tac "a # list <~~> a # ysa @ zs") |