Step
*
4
1
2
1
2
of Lemma
select_concat
1. [T] : Type
2. u : T List
3. v : T List List
4. ∀n:ℕ||concat(v)||
     ∃m:ℕ||v||
      ((||concat(firstn(m;v))|| ≤ n)
      c∧ n - ||concat(firstn(m;v))|| < ||v[m]||
      c∧ (concat(v)[n] = v[m][n - ||concat(firstn(m;v))||] ∈ T))
5. n : ℕ||u @ concat(v)||
6. ¬n < ||u||
7. m : ℕ||v||
8. ||concat(firstn(m;v))|| ≤ (n - ||u||)
9. n - ||u|| - ||concat(firstn(m;v))|| < ||v[m]||
10. concat(v)[n - ||u||] = v[m][n - ||u|| - ||concat(firstn(m;v))||] ∈ T
⊢ (||concat([u / firstn(m;v)])|| ≤ n)
c∧ n - ||concat([u / firstn(m;v)])|| < ||[u / v][m + 1]||
c∧ (u @ concat(v)[n] = [u / v][m + 1][n - ||concat([u / firstn(m;v)])||] ∈ T)
BY
{ (Unfold `concat` 0 THEN Reduce 0 THEN Fold `concat` 0) }
1
1. [T] : Type
2. u : T List
3. v : T List List
4. ∀n:ℕ||concat(v)||
     ∃m:ℕ||v||
      ((||concat(firstn(m;v))|| ≤ n)
      c∧ n - ||concat(firstn(m;v))|| < ||v[m]||
      c∧ (concat(v)[n] = v[m][n - ||concat(firstn(m;v))||] ∈ T))
5. n : ℕ||u @ concat(v)||
6. ¬n < ||u||
7. m : ℕ||v||
8. ||concat(firstn(m;v))|| ≤ (n - ||u||)
9. n - ||u|| - ||concat(firstn(m;v))|| < ||v[m]||
10. concat(v)[n - ||u||] = v[m][n - ||u|| - ||concat(firstn(m;v))||] ∈ T
⊢ (||u @ concat(firstn(m;v))|| ≤ n)
c∧ n - ||u @ concat(firstn(m;v))|| < ||[u / v][m + 1]||
c∧ (u @ concat(v)[n] = [u / v][m + 1][n - ||u @ concat(firstn(m;v))||] ∈ T)
Latex:
Latex:
1.  [T]  :  Type
2.  u  :  T  List
3.  v  :  T  List  List
4.  \mforall{}n:\mBbbN{}||concat(v)||
          \mexists{}m:\mBbbN{}||v||
            ((||concat(firstn(m;v))||  \mleq{}  n)
            c\mwedge{}  n  -  ||concat(firstn(m;v))||  <  ||v[m]||
            c\mwedge{}  (concat(v)[n]  =  v[m][n  -  ||concat(firstn(m;v))||]))
5.  n  :  \mBbbN{}||u  @  concat(v)||
6.  \mneg{}n  <  ||u||
7.  m  :  \mBbbN{}||v||
8.  ||concat(firstn(m;v))||  \mleq{}  (n  -  ||u||)
9.  n  -  ||u||  -  ||concat(firstn(m;v))||  <  ||v[m]||
10.  concat(v)[n  -  ||u||]  =  v[m][n  -  ||u||  -  ||concat(firstn(m;v))||]
\mvdash{}  (||concat([u  /  firstn(m;v)])||  \mleq{}  n)
c\mwedge{}  n  -  ||concat([u  /  firstn(m;v)])||  <  ||[u  /  v][m  +  1]||
c\mwedge{}  (u  @  concat(v)[n]  =  [u  /  v][m  +  1][n  -  ||concat([u  /  firstn(m;v)])||])
By
Latex:
(Unfold  `concat`  0  THEN  Reduce  0  THEN  Fold  `concat`  0)
Home
Index