Step
*
of Lemma
append-tuple_wf
∀[L1,L2:Type List]. ∀[x:tuple-type(L1)]. ∀[y:tuple-type(L2)].  (append-tuple(||L1||;||L2||;x;y) ∈ tuple-type(L1 @ L2))
BY
{ (InductionOnList
   THEN Reduce 0
   THEN Auto
   THEN RecUnfold `append-tuple` 0
   THEN Reduce 0
   THEN Try (Trivial)
   THEN OldAutoSplit)⋅ }
1
1. u : Type
2. v : Type List
3. ∀[L2:Type List]. ∀[x:tuple-type(v)]. ∀[y:tuple-type(L2)].  (append-tuple(||v||;||L2||;x;y) ∈ tuple-type(v @ L2))
4. L2 : Type List
5. x : if null(v) then u else u × tuple-type(v) fi 
6. y : tuple-type(L2)
7. (v @ L2) = [] ∈ (Type List)
⊢ if ||v|| + 1 ≤z 0 then y
  if (||v|| + 1 =z 1) then if ||L2|| ≤z 0 then x else <x, y> fi 
  else let a,b = x 
       in <a, append-tuple((||v|| + 1) - 1;||L2||;b;y)>
  fi  ∈ u
2
1. u : Type
2. v : Type List
3. ∀[L2:Type List]. ∀[x:tuple-type(v)]. ∀[y:tuple-type(L2)].  (append-tuple(||v||;||L2||;x;y) ∈ tuple-type(v @ L2))
4. L2 : Type List
5. x : if null(v) then u else u × tuple-type(v) fi 
6. y : tuple-type(L2)
7. null(v @ L2) = ff
⊢ if ||v|| + 1 ≤z 0 then y
  if (||v|| + 1 =z 1) then if ||L2|| ≤z 0 then x else <x, y> fi 
  else let a,b = x 
       in <a, append-tuple((||v|| + 1) - 1;||L2||;b;y)>
  fi  ∈ u × tuple-type(v @ L2)
Latex:
Latex:
\mforall{}[L1,L2:Type  List].  \mforall{}[x:tuple-type(L1)].  \mforall{}[y:tuple-type(L2)].
    (append-tuple(||L1||;||L2||;x;y)  \mmember{}  tuple-type(L1  @  L2))
By
Latex:
(InductionOnList
  THEN  Reduce  0
  THEN  Auto
  THEN  RecUnfold  `append-tuple`  0
  THEN  Reduce  0
  THEN  Try  (Trivial)
  THEN  OldAutoSplit)\mcdot{}
Home
Index