Step
*
1
2
1
of Lemma
append-tuple-split-tuple
1. u : Type
2. u1 : Type
3. v : 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. n : ℕ(||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>
BY
{ ((InstHyp [⌜x2⌝;⌜n - 1⌝] 4⋅ THENA Auto)
   THEN RW (AddrC [2;2] (RevHypC (-1))) 0
   THEN (GenConcl ⌜x2 = X ∈ tuple-type([u1 / v])⌝⋅ THENA Auto)
   THEN (InstLemma `split-tuple_wf` [⌜[u1 / v]⌝;⌜X⌝;⌜n - 1⌝]⋅ THENA Auto')
   THEN (GenConclTerm ⌜split-tuple(X;n - 1)⌝⋅ THENA Auto)
   THEN D (-2)
   THEN Reduce 0
   THEN RepeatFor 2 (EqCD)
   THEN Auto) }
Latex:
Latex:
1.  u  :  Type
2.  u1  :  Type
3.  v  :  Type  List
4.  \mforall{}[x:if  null(v)  then  u1  else  u1  \mtimes{}  tuple-type(v)  fi  ].  \mforall{}[n:\mBbbN{}||v||  +  1].
          (append-tuple(n;(||v||  +  1)  -  n;fst(split-tuple(x;n));snd(split-tuple(x;n)))  \msim{}  x)
5.  x1  :  u
6.  x2  :  if  null(v)  then  u1  else  u1  \mtimes{}  tuple-type(v)  fi 
7.  n  :  \mBbbN{}(||v||  +  1)  +  1
8.  n  \mneq{}  1
9.  n  \mneq{}  0
10.  \mneg{}(n  \mleq{}  0)
\mvdash{}  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>))
          >  \msim{}  <x1,  x2>
By
Latex:
((InstHyp  [\mkleeneopen{}x2\mkleeneclose{};\mkleeneopen{}n  -  1\mkleeneclose{}]  4\mcdot{}  THENA  Auto)
  THEN  RW  (AddrC  [2;2]  (RevHypC  (-1)))  0
  THEN  (GenConcl  \mkleeneopen{}x2  =  X\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (InstLemma  `split-tuple\_wf`  [\mkleeneopen{}[u1  /  v]\mkleeneclose{};\mkleeneopen{}X\mkleeneclose{};\mkleeneopen{}n  -  1\mkleeneclose{}]\mcdot{}  THENA  Auto')
  THEN  (GenConclTerm  \mkleeneopen{}split-tuple(X;n  -  1)\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  D  (-2)
  THEN  Reduce  0
  THEN  RepeatFor  2  (EqCD)
  THEN  Auto)
Home
Index