Step
*
of Lemma
unshuffle-map
∀[f:ℕ ⟶ Top]. ∀[m:ℕ].  (unshuffle(map(f;upto(2 * m))) ~ map(λi.<f (2 * i), f ((2 * i) + 1)>upto(m)))
BY
{ (Auto
   THEN Subst ⌜map(f;upto(2 * m)) ~ shuffle(map(λi.<f (2 * i), f ((2 * i) + 1)>upto(m)))⌝ 0⋅
   THEN RWW "unshuffle-shuffle" 0
   THEN Auto'
   THEN Unfold `upto` 0
   THEN Assert ⌜∀d,k:ℕ. ∀i:ℕk + 1.
                  (((k - i) ≤ d) 
⇒ (map(f;[2 * i, 2 * k)) ~ shuffle(map(λi.<f (2 * i), f ((2 * i) + 1)>[i, k)))))⌝⋅
   THEN Try (((InstHyp [⌜m⌝] (-1)⋅ THENA Auto) THEN RWO "-1<" 0 THEN Auto'))
   THEN Thin (-1)
   THEN InductionOnNat
   THEN Auto
   THEN RecUnfold `from-upto` 0
   THEN AutoSplit
   THEN Unfold `shuffle` 0
   THEN Reduce 0
   THEN Auto) }
1
1. f : ℕ ⟶ Top
2. d : ℤ
3. 0 < d
4. ∀k:ℕ. ∀i:ℕk + 1.
     (((k - i) ≤ (d - 1)) 
⇒ (map(f;[2 * i, 2 * k)) ~ shuffle(map(λi.<f (2 * i), f ((2 * i) + 1)>[i, k)))))
5. k : ℕ
6. i : ℕk + 1
7. (k - i) ≤ d
8. 2 * i < 2 * k
⊢ [f (2 * i) / map(f;eval n' = (2 * i) + 1 in [n', 2 * k))] ~ concat([[f (2 * i); f ((2 * i) + 1)] / 
                                                                    map(λp.[fst(p); snd(p)];map(λi.<f (2 * i)
                                                                                                   , f ((2 * i) + 1)
                                                                                                   >eval n' = i + 1 in
                                                                                                     [n', k)))])
Latex:
Latex:
\mforall{}[f:\mBbbN{}  {}\mrightarrow{}  Top].  \mforall{}[m:\mBbbN{}].
    (unshuffle(map(f;upto(2  *  m)))  \msim{}  map(\mlambda{}i.<f  (2  *  i),  f  ((2  *  i)  +  1)>upto(m)))
By
Latex:
(Auto
  THEN  Subst  \mkleeneopen{}map(f;upto(2  *  m))  \msim{}  shuffle(map(\mlambda{}i.<f  (2  *  i),  f  ((2  *  i)  +  1)>upto(m)))\mkleeneclose{}  0\mcdot{}
  THEN  RWW  "unshuffle-shuffle"  0
  THEN  Auto'
  THEN  Unfold  `upto`  0
  THEN  Assert  \mkleeneopen{}\mforall{}d,k:\mBbbN{}.  \mforall{}i:\mBbbN{}k  +  1.
                                (((k  -  i)  \mleq{}  d)
                                {}\mRightarrow{}  (map(f;[2  *  i,  2  *  k))  \msim{}  shuffle(map(\mlambda{}i.<f  (2  *  i),  f  ((2  *  i)  +  1)>[i,  k)))))\mkleeneclose{}\mcdot{}
  THEN  Try  (((InstHyp  [\mkleeneopen{}m\mkleeneclose{}]  (-1)\mcdot{}  THENA  Auto)  THEN  RWO  "-1<"  0  THEN  Auto'))
  THEN  Thin  (-1)
  THEN  InductionOnNat
  THEN  Auto
  THEN  RecUnfold  `from-upto`  0
  THEN  AutoSplit
  THEN  Unfold  `shuffle`  0
  THEN  Reduce  0
  THEN  Auto)
Home
Index