Step
*
2
1
of Lemma
add-remove-nth
1. T : Type
2. u : T
3. v : T List
4. ∀[n:ℕ||v||]. (let x,L' = remove-nth(n;v) in add-nth(n;x;L') ~ v)
5. n : ℕ||v|| + 1
⊢ firstn(n;firstn(n;[u / v]) @ nth_tl(n + 1;[u / v]))
@ [[u / v][n] / nth_tl(n;firstn(n;[u / v]) @ nth_tl(n + 1;[u / v]))] ~ [u / v]
BY
{ (RecUnfold `firstn` 0 THEN RecUnfold `nth_tl` 0 THEN Reduce 0 THEN AutoSplit) }
1
1. T : Type
2. u : T
3. v : T List
4. ∀[n:ℕ||v||]. (let x,L' = remove-nth(n;v) in add-nth(n;x;L') ~ v)
5. n : ℕ||v|| + 1
6. 0 < n
⊢ [u / 
   (firstn(n - 1;firstn(n - 1;v) @ nth_tl((n + 1) - 1;v))
   @ [[u / v][n] / nth_tl(n - 1;firstn(n - 1;v) @ nth_tl((n + 1) - 1;v))])] ~ [u / v]
2
1. T : Type
2. u : T
3. v : T List
4. ∀[n:ℕ||v||]. (let x,L' = remove-nth(n;v) in add-nth(n;x;L') ~ v)
5. n : ℕ||v|| + 1
6. ¬0 < n
⊢ case nth_tl((n + 1) - 1;v) of [] => [] | a::as' => [] esac @ [[u / v][n] / nth_tl((n + 1) - 1;v)] ~ [u / v]
Latex:
Latex:
1.  T  :  Type
2.  u  :  T
3.  v  :  T  List
4.  \mforall{}[n:\mBbbN{}||v||].  (let  x,L'  =  remove-nth(n;v)  in  add-nth(n;x;L')  \msim{}  v)
5.  n  :  \mBbbN{}||v||  +  1
\mvdash{}  firstn(n;firstn(n;[u  /  v])  @  nth\_tl(n  +  1;[u  /  v]))
@  [[u  /  v][n]  /  nth\_tl(n;firstn(n;[u  /  v])  @  nth\_tl(n  +  1;[u  /  v]))]  \msim{}  [u  /  v]
By
Latex:
(RecUnfold  `firstn`  0  THEN  RecUnfold  `nth\_tl`  0  THEN  Reduce  0  THEN  AutoSplit)
Home
Index