equal
deleted
inserted
replaced
20 "quicksort (x#xs) = quicksort [y\<leftarrow>xs. y<x] @ [x] @ quicksort [y\<leftarrow>xs. x\<le>y]" |
20 "quicksort (x#xs) = quicksort [y\<leftarrow>xs. y<x] @ [x] @ quicksort [y\<leftarrow>xs. x\<le>y]" |
21 by (simp_all add: not_le) |
21 by (simp_all add: not_le) |
22 |
22 |
23 lemma quicksort_permutes [simp]: |
23 lemma quicksort_permutes [simp]: |
24 "mset (quicksort xs) = mset xs" |
24 "mset (quicksort xs) = mset xs" |
25 by (induct xs rule: quicksort.induct) (simp_all add: mset_compl_union ac_simps) |
25 by (induction xs rule: quicksort.induct) (simp_all) |
26 |
26 |
27 lemma set_quicksort [simp]: "set (quicksort xs) = set xs" |
27 lemma set_quicksort [simp]: "set (quicksort xs) = set xs" |
28 proof - |
28 proof - |
29 have "set_mset (mset (quicksort xs)) = set_mset (mset xs)" |
29 have "set_mset (mset (quicksort xs)) = set_mset (mset xs)" |
30 by simp |
30 by simp |