Step * of Lemma split-tuple_wf

[L:Type List]. ∀[x:tuple-type(L)]. ∀[n:ℕ||L||].  (split-tuple(x;n) ∈ tuple-type(firstn(n;L)) × tuple-type(nth_tl(n;L)))
BY
(InductionOnList
   THEN (UnivCD THENA Auto)
   THEN All Reduce
   THEN Auto
   THEN RecUnfold `split-tuple` 0
   THEN (AutoSplit
         THENL [TACTIC:((HypSubst' (-1) THEN RWO "first0" 0) THEN Reduce THEN Auto)
               (DVar `v' THENL [TACTIC:Auto'; TACTIC:Id])]
   )) }

1
1. Type
2. u1 Type
3. Type List
4. ∀[x:tuple-type([u1 v])]. ∀[n:ℕ||[u1 v]||].
     (split-tuple(x;n) ∈ tuple-type(firstn(n;[u1 v])) × tuple-type(nth_tl(n;[u1 v])))
5. if null([u1 v]) then else u × tuple-type([u1 v]) fi 
6. : ℕ||[u1 v]|| 1
7. n ≠ 0
⊢ if (n =z 1) then <fst(x), snd(x)> else let a,b split-tuple(snd(x);n 1) in <<fst(x), a>b> fi 
  ∈ tuple-type(firstn(n;[u; [u1 v]])) × tuple-type(nth_tl(n;[u; [u1 v]]))


Latex:


Latex:
\mforall{}[L:Type  List].  \mforall{}[x:tuple-type(L)].  \mforall{}[n:\mBbbN{}||L||].
    (split-tuple(x;n)  \mmember{}  tuple-type(firstn(n;L))  \mtimes{}  tuple-type(nth\_tl(n;L)))


By


Latex:
(InductionOnList
  THEN  (UnivCD  THENA  Auto)
  THEN  All  Reduce
  THEN  Auto
  THEN  RecUnfold  `split-tuple`  0
  THEN  (AutoSplit
              THENL  [TACTIC:((HypSubst'  (-1)  0  THEN  RWO  "first0"  0)  THEN  Reduce  0  THEN  Auto)
                          ;  (DVar  `v'  THENL  [TACTIC:Auto';  TACTIC:Id])]
  ))




Home Index