Step * of Lemma comparison-sort-permutation

T:Type. (valueall-type(T)  (∀cmp:comparison(T). ∀L:T List.  permutation(T;comparison-sort(cmp;L);L)))
BY
(Auto
   THEN Unfold `comparison-sort` 0
   THEN (Assert ⌜∀L,A,B:T List.
                   (permutation(T;A;B)  permutation(T;eager-accum(srtd,x.insert-no-combine(cmp;x;srtd);A;L);B L))⌝⋅
   THENM (InstHyp [⌜L⌝;⌜[]⌝;⌜[]⌝(-1)⋅ THEN Auto)
   )
   THEN InductionOnList
   THEN Auto
   THEN RWW "append-nil" 0
   THEN Auto
   THEN (RecUnfold `eager-accum` THEN Reduce 0)
   THEN (CallByValueReduce THENA Auto)
   THEN (InstHyp [⌜insert-no-combine(cmp;u;A)⌝;⌜[u] A⌝(-4)⋅ THENM RWO "-1" 0)
   THEN Auto) }

1
1. Type@i'
2. valueall-type(T)@i
3. cmp comparison(T)@i
4. List@i
5. T@i
6. List@i
7. ∀A,B:T List.  (permutation(T;A;B)  permutation(T;eager-accum(srtd,x.insert-no-combine(cmp;x;srtd);A;v);B v))@i
8. List@i
9. List@i
10. permutation(T;A;B)@i
11. permutation(T;eager-accum(srtd,x.insert-no-combine(cmp;x;srtd);insert-no-combine(cmp;u;A);v);([u] A) v)
⊢ permutation(T;([u] A) v;B [u v])


Latex:


Latex:
\mforall{}T:Type
    (valueall-type(T)  {}\mRightarrow{}  (\mforall{}cmp:comparison(T).  \mforall{}L:T  List.    permutation(T;comparison-sort(cmp;L);L)))


By


Latex:
(Auto
  THEN  Unfold  `comparison-sort`  0
  THEN  (Assert  \mkleeneopen{}\mforall{}L,A,B:T  List.
                                  (permutation(T;A;B)
                                  {}\mRightarrow{}  permutation(T;eager-accum(srtd,x.insert-no-combine(cmp;x;srtd);A;L);B  @  L))\mkleeneclose{}\mcdot{}
  THENM  (InstHyp  [\mkleeneopen{}L\mkleeneclose{};\mkleeneopen{}[]\mkleeneclose{};\mkleeneopen{}[]\mkleeneclose{}]  (-1)\mcdot{}  THEN  Auto)
  )
  THEN  InductionOnList
  THEN  Auto
  THEN  RWW  "append-nil"  0
  THEN  Auto
  THEN  (RecUnfold  `eager-accum`  0  THEN  Reduce  0)
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  (InstHyp  [\mkleeneopen{}insert-no-combine(cmp;u;A)\mkleeneclose{};\mkleeneopen{}[u]  @  A\mkleeneclose{}]  (-4)\mcdot{}  THENM  RWO  "-1"  0)
  THEN  Auto)




Home Index