Step * 1 2 of Lemma append-tuple-split-tuple


1. Type
2. Type List
3. ∀[x:tuple-type(v)]. ∀[n:ℕ||v||].  (append-tuple(n;||v|| n;fst(split-tuple(x;n));snd(split-tuple(x;n))) x)
4. if null(v) then else u × tuple-type(v) fi 
5. : ℕ||v|| 1
6. ¬(n ≤ 0)
⊢ if (n =z 1)
then if (||v|| 1) n ≤then fst(split-tuple(x;n)) else <fst(split-tuple(x;n)), snd(split-tuple(x;n))> fi 
else let a,b fst(split-tuple(x;n)) 
     in <a, append-tuple(n 1;(||v|| 1) n;b;snd(split-tuple(x;n)))>
fi  x
BY
((DVar `v' THEN All Reduce THEN Auto)
   THEN DVar `x'
   THEN RecUnfold `split-tuple` 0
   THEN Reduce 0
   THEN AutoBoolCase ⌜(n =z 0)⌝⋅
   THEN AutoBoolCase ⌜(n =z 1)⌝⋅
   THEN Try ((AutoSplit THEN Auto')⋅)) }

1
1. Type
2. u1 Type
3. Type List
4. ∀[x:if null(v) then u1 else u1 × tuple-type(v) fi ]. ∀[n:ℕ||v|| 1].
     (append-tuple(n;(||v|| 1) n;fst(split-tuple(x;n));snd(split-tuple(x;n))) x)
5. x1 u
6. x2 if null(v) then u1 else u1 × tuple-type(v) fi 
7. : ℕ(||v|| 1) 1
8. n ≠ 1
9. n ≠ 0
10. ¬(n ≤ 0)
⊢ let a,b fst(let a,b split-tuple(x2;n 1) 
                in <<x1, a>b>
  in <a, append-tuple(n 1;((||v|| 1) 1) n;b;snd(let a,b split-tuple(x2;n 1) in <<x1, a>b>))> ~ <x1, x2>


Latex:


Latex:

1.  u  :  Type
2.  v  :  Type  List
3.  \mforall{}[x:tuple-type(v)].  \mforall{}[n:\mBbbN{}||v||].
          (append-tuple(n;||v||  -  n;fst(split-tuple(x;n));snd(split-tuple(x;n)))  \msim{}  x)
4.  x  :  if  null(v)  then  u  else  u  \mtimes{}  tuple-type(v)  fi 
5.  n  :  \mBbbN{}||v||  +  1
6.  \mneg{}(n  \mleq{}  0)
\mvdash{}  if  (n  =\msubz{}  1)
then  if  (||v||  +  1)  -  n  \mleq{}z  0
          then  fst(split-tuple(x;n))
          else  <fst(split-tuple(x;n)),  snd(split-tuple(x;n))>
          fi 
else  let  a,b  =  fst(split-tuple(x;n)) 
          in  <a,  append-tuple(n  -  1;(||v||  +  1)  -  n;b;snd(split-tuple(x;n)))>
fi    \msim{}  x


By


Latex:
((DVar  `v'  THEN  All  Reduce  THEN  Auto)
  THEN  DVar  `x'
  THEN  RecUnfold  `split-tuple`  0
  THEN  Reduce  0
  THEN  AutoBoolCase  \mkleeneopen{}(n  =\msubz{}  0)\mkleeneclose{}\mcdot{}
  THEN  AutoBoolCase  \mkleeneopen{}(n  =\msubz{}  1)\mkleeneclose{}\mcdot{}
  THEN  Try  ((AutoSplit  THEN  Auto')\mcdot{}))




Home Index