Step * 2 2 1 of Lemma Cn-comb_wf


1. Type
2. : ℤ
3. 0 < n
4. ∀m:ℕ. ∀A:ℕm ⟶ Type.
     (n 1 < m
      (primrec(n 1;λf.f;λi,F,f,x. (F (C-comb() x))) ∈ funtype(m;A;T) ⟶ funtype(m;λk.if k <then (k 1)
                                                                                   if (k =z 1) then 0
                                                                                   else k
                                                                                   fi ;T)))
5. : ℕ
6. : ℕm ⟶ Type
7. n < m
8. 1 ≤ n
9. funtype(m;A;T)
10. x.(primrec(n 1;λf.f;λi,F,f,x. (F (C-comb() x))) (C-comb() x)))
x.(primrec(n 1;λf.f;λi,F,f,x. (F (C-comb() x))) (C-comb() x)))
∈ ((A 1) ⟶ funtype(m 1;λk.if k <then (k 2)
                             if (k =z 1) then 0
                             else (k 1)
                             fi ;T))
⊢ ((A 1) ⟶ funtype(m 1;λk.if k <then (k 2)
                             if (k =z 1) then 0
                             else (k 1)
                             fi ;T))
funtype(m;λk.if k <then (k 1)
               if (k =z n) then 0
               else k
               fi ;T)
∈ Type
BY
(RW (AddrC [3] (UnfoldC `funtype`)) 0
   THEN Reduce 0
   THEN (RWO "primrec-unroll" THENA Auto)
   THEN OldAutoSplit
   THEN EqCD
   THEN Auto)⋅ }

1
.....subterm..... T:t
2:n
1. Type
2. : ℤ
3. 0 < n
4. ∀m:ℕ. ∀A:ℕm ⟶ Type.
     (n 1 < m
      (primrec(n 1;λf.f;λi,F,f,x. (F (C-comb() x))) ∈ funtype(m;A;T) ⟶ funtype(m;λk.if k <then (k 1)
                                                                                   if (k =z 1) then 0
                                                                                   else k
                                                                                   fi ;T)))
5. : ℕ
6. : ℕm ⟶ Type
7. n < m
8. 1 ≤ n
9. funtype(m;A;T)
10. x.(primrec(n 1;λf.f;λi,F,f,x. (F (C-comb() x))) (C-comb() x)))
x.(primrec(n 1;λf.f;λi,F,f,x. (F (C-comb() x))) (C-comb() x)))
∈ ((A 1) ⟶ funtype(m 1;λk.if k <then (k 2)
                             if (k =z 1) then 0
                             else (k 1)
                             fi ;T))
11. 1 ≤ m
12. 1
⊢ funtype(m 1;λk.if k <then (k 2)
                   if (k =z 1) then 0
                   else (k 1)
                   fi ;T)
primrec(m 1;T;λi,t. (if i <then ((m i) 1)
                       if (m =z n) then 0
                       else (m i)
                       fi  ⟶ t))
∈ Type


Latex:


Latex:

1.  T  :  Type
2.  n  :  \mBbbZ{}
3.  0  <  n
4.  \mforall{}m:\mBbbN{}.  \mforall{}A:\mBbbN{}m  {}\mrightarrow{}  Type.
          (n  -  1  <  m
          {}\mRightarrow{}  (primrec(n  -  1;\mlambda{}f.f;\mlambda{}i,F,f,x.  (F  (C-comb()  f  x)))  \mmember{}  funtype(m;A;T)  {}\mrightarrow{}  funtype(m;\mlambda{}k.if  k  <z  n\000C  -  1
                                                                                                                                                                          then  A  (k  +  1)
                                                                                                                                                                      if  (k  =\msubz{}  n  -  1)
                                                                                                                                                                          then  A  0
                                                                                                                                                                      else  A  k
                                                                                                                                                                      fi  ;T)))
5.  m  :  \mBbbN{}
6.  A  :  \mBbbN{}m  {}\mrightarrow{}  Type
7.  n  <  m
8.  1  \mleq{}  n
9.  f  :  funtype(m;A;T)
10.  (\mlambda{}x.(primrec(n  -  1;\mlambda{}f.f;\mlambda{}i,F,f,x.  (F  (C-comb()  f  x)))  (C-comb()  f  x)))
=  (\mlambda{}x.(primrec(n  -  1;\mlambda{}f.f;\mlambda{}i,F,f,x.  (F  (C-comb()  f  x)))  (C-comb()  f  x)))
\mvdash{}  ((A  1)  {}\mrightarrow{}  funtype(m  -  1;\mlambda{}k.if  k  <z  n  -  1  then  A  (k  +  2)
                                                          if  (k  =\msubz{}  n  -  1)  then  A  0
                                                          else  A  (k  +  1)
                                                          fi  ;T))
=  funtype(m;\mlambda{}k.if  k  <z  n  then  A  (k  +  1)
                              if  (k  =\msubz{}  n)  then  A  0
                              else  A  k
                              fi  ;T)


By


Latex:
(RW  (AddrC  [3]  (UnfoldC  `funtype`))  0
  THEN  Reduce  0
  THEN  (RWO  "primrec-unroll"  0  THENA  Auto)
  THEN  OldAutoSplit
  THEN  EqCD
  THEN  Auto)\mcdot{}




Home Index