src/HOL/Library/Permutation.thy
changeset 57816 d8bbb97689d3
parent 56796 9f84219715a7
child 58881 b9556a055632
equal deleted inserted replaced
57815:f97643a56615 57816:d8bbb97689d3
   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")