Step
*
1
of Lemma
quicksort_wf
1. T : Type
2. cmp : comparison(T)
3. valueall-type(T)
4. L : T List@i
⊢ quicksort(cmp;L) ∈ {srtd:T List| sorted-by(λx,y. (0 ≤ (cmp x y));srtd) ∧ permutation(T;srtd;L)} 
BY
{ ((MoveToConcl (-1) THEN InductionOnLength) THEN RecUnfold `quicksort` 0 THEN OldAutoSplit) }
1
1. T : Type
2. cmp : comparison(T)
3. valueall-type(T)
4. n : ℕ
5. L : T List@i
6. ∀L1:T List
     (||L1|| < ||L|| 
⇒ (quicksort(cmp;L1) ∈ {srtd:T List| sorted-by(λx,y. (0 ≤ (cmp x y));srtd) ∧ permutation(T;srtd;L1\000C)} ))
7. L = [] ∈ (T List)
⊢ L ∈ {srtd:T List| sorted-by(λx,y. (0 ≤ (cmp x y));srtd) ∧ permutation(T;srtd;L)} 
2
1. T : Type
2. cmp : comparison(T)
3. valueall-type(T)
4. n : ℕ
5. L : T List@i
6. ∀L1:T List
     (||L1|| < ||L|| 
⇒ (quicksort(cmp;L1) ∈ {srtd:T List| sorted-by(λx,y. (0 ≤ (cmp x y));srtd) ∧ permutation(T;srtd;L1\000C)} ))
7. ¬(L = [] ∈ (T List))
⊢ let x ⟵ hd(L)
  in let L1 ⟵ filter(λz.0 <z cmp z x;L)
     in let L2 ⟵ filter(λz.0 <z cmp x z;L)
        in let L3 ⟵ filter(λz.(0 =z cmp x z);L)
           in quicksort(cmp;L1) @ L3 @ quicksort(cmp;L2) ∈ {srtd:T List| 
                                                            sorted-by(λx,y. (0 ≤ (cmp x y));srtd) ∧ permutation(T;srtd;L\000C)} 
Latex:
Latex:
1.  T  :  Type
2.  cmp  :  comparison(T)
3.  valueall-type(T)
4.  L  :  T  List@i
\mvdash{}  quicksort(cmp;L)  \mmember{}  \{srtd:T  List|  sorted-by(\mlambda{}x,y.  (0  \mleq{}  (cmp  x  y));srtd)  \mwedge{}  permutation(T;srtd;L)\} 
By
Latex:
((MoveToConcl  (-1)  THEN  InductionOnLength)  THEN  RecUnfold  `quicksort`  0  THEN  OldAutoSplit)
Home
Index