Step * 2 2 2 of Lemma prec-ext


1. Type
2. Atom ⟶ P ⟶ ((P Type) List)
3. pcorec(lbl,p.a[lbl;p]) ≡ ptuple(lbl,p.a[lbl;p];pcorec(lbl,p.a[lbl;p]))
4. P
5. pcorec(lbl,p.a[lbl;p]) i ≡ labl:{lbl:Atom| 0 < ||a[lbl;i]||}  × tuple-type(map(λx.case x
                                                     of inl(y) =>
                                                     case y
                                                      of inl(p) =>
                                                      pcorec(lbl,p.a[lbl;p]) p
                                                      inr(p) =>
                                                      (pcorec(lbl,p.a[lbl;p]) p) List
                                                     inr(E) =>
                                                     E;a[labl;i]))
6. labl {lbl:Atom| 0 < ||a[lbl;i]||} 
7. Type
8. (P Type) List
9. ∀x1:tuple-type(map(λx.case x
                          of inl(y) =>
                          case of inl(p) => prec(lbl,p.a[lbl;p];p) inr(p) => prec(lbl,p.a[lbl;p];p) List
                          inr(E) =>
                          E;v))
     (1 add-sz(pcorec-size(lbl,p.a[lbl;p]);v;x1))↓
10. null(v) ff
11. x1 case u
 of inl(y) =>
 case of inl(p) => prec(lbl,p.a[lbl;p];p) inr(p) => prec(lbl,p.a[lbl;p];p) List
 inr(E) =>
 E × tuple-type(map(λx.case x
                        of inl(y) =>
                        case of inl(p) => prec(lbl,p.a[lbl;p];p) inr(p) => prec(lbl,p.a[lbl;p];p) List
                        inr(E) =>
                        E;v))
⊢ (1
let u@0,v@0 x1 
  in case u
      of inl(z) =>
      case of inl(p) => pcorec-size(lbl,p.a[lbl;p]) u@0 inr(p) => l_sum(map(pcorec-size(lbl,p.a[lbl;p]) p;u@0))
      inr(E) =>
      0
     tuple-sum(λc,u. case c
                       of inl(z) =>
                       case z
                        of inl(p) =>
                        pcorec-size(lbl,p.a[lbl;p]) u
                        inr(p) =>
                        l_sum(map(pcorec-size(lbl,p.a[lbl;p]) p;u))
                       inr(E) =>
                       0;v;v@0))↓
BY
(D -1 THEN Reduce THEN (D -4 With ⌜x3⌝  THENA Auto) THEN Fold `add-sz` 0) }

1
1. Type
2. Atom ⟶ P ⟶ ((P Type) List)
3. pcorec(lbl,p.a[lbl;p]) ≡ ptuple(lbl,p.a[lbl;p];pcorec(lbl,p.a[lbl;p]))
4. P
5. pcorec(lbl,p.a[lbl;p]) i ≡ labl:{lbl:Atom| 0 < ||a[lbl;i]||}  × tuple-type(map(λx.case x
                                                     of inl(y) =>
                                                     case y
                                                      of inl(p) =>
                                                      pcorec(lbl,p.a[lbl;p]) p
                                                      inr(p) =>
                                                      (pcorec(lbl,p.a[lbl;p]) p) List
                                                     inr(E) =>
                                                     E;a[labl;i]))
6. labl {lbl:Atom| 0 < ||a[lbl;i]||} 
7. Type
8. (P Type) List
9. null(v) ff
10. x2 case u
 of inl(y) =>
 case of inl(p) => prec(lbl,p.a[lbl;p];p) inr(p) => prec(lbl,p.a[lbl;p];p) List
 inr(E) =>
 E
11. x3 tuple-type(map(λx.case x
                            of inl(y) =>
                            case of inl(p) => prec(lbl,p.a[lbl;p];p) inr(p) => prec(lbl,p.a[lbl;p];p) List
                            inr(E) =>
                            E;v))
12. (1 add-sz(pcorec-size(lbl,p.a[lbl;p]);v;x3))↓
⊢ (1
case u
   of inl(z) =>
   case of inl(p) => pcorec-size(lbl,p.a[lbl;p]) x2 inr(p) => l_sum(map(pcorec-size(lbl,p.a[lbl;p]) p;x2))
   inr(E) =>
   0
add-sz(pcorec-size(lbl,p.a[lbl;p]);v;x3))↓


Latex:


Latex:

1.  P  :  Type
2.  a  :  Atom  {}\mrightarrow{}  P  {}\mrightarrow{}  ((P  +  P  +  Type)  List)
3.  pcorec(lbl,p.a[lbl;p])  \mequiv{}  ptuple(lbl,p.a[lbl;p];pcorec(lbl,p.a[lbl;p]))
4.  i  :  P
5.  pcorec(lbl,p.a[lbl;p])  i  \mequiv{}  labl:\{lbl:Atom|  0  <  ||a[lbl;i]||\}    \mtimes{}  tuple-type(map(\mlambda{}x.case  x
                                                                                                          of  inl(y)  =>
                                                                                                          case  y
                                                                                                            of  inl(p)  =>
                                                                                                            pcorec(lbl,p.a[lbl;p])  p
                                                                                                            |  inr(p)  =>
                                                                                                            (pcorec(lbl,p.a[lbl;p])  p)  List
                                                                                                          |  inr(E)  =>
                                                                                                          E;a[labl;i]))
6.  labl  :  \{lbl:Atom|  0  <  ||a[lbl;i]||\} 
7.  u  :  P  +  P  +  Type
8.  v  :  (P  +  P  +  Type)  List
9.  \mforall{}x1:tuple-type(map(\mlambda{}x.case  x
                                                    of  inl(y)  =>
                                                    case  y
                                                      of  inl(p)  =>
                                                      prec(lbl,p.a[lbl;p];p)
                                                      |  inr(p)  =>
                                                      prec(lbl,p.a[lbl;p];p)  List
                                                    |  inr(E)  =>
                                                    E;v))
          (1  +  add-sz(pcorec-size(lbl,p.a[lbl;p]);v;x1))\mdownarrow{}
10.  null(v)  =  ff
11.  x1  :  case  u
  of  inl(y)  =>
  case  y  of  inl(p)  =>  prec(lbl,p.a[lbl;p];p)  |  inr(p)  =>  prec(lbl,p.a[lbl;p];p)  List
  |  inr(E)  =>
  E  \mtimes{}  tuple-type(map(\mlambda{}x.case  x
                                                of  inl(y)  =>
                                                case  y
                                                  of  inl(p)  =>
                                                  prec(lbl,p.a[lbl;p];p)
                                                  |  inr(p)  =>
                                                  prec(lbl,p.a[lbl;p];p)  List
                                                |  inr(E)  =>
                                                E;v))
\mvdash{}  (1
+  let  u@0,v@0  =  x1 
    in  case  u
            of  inl(z)  =>
            case  z
              of  inl(p)  =>
              pcorec-size(lbl,p.a[lbl;p])  p  u@0
              |  inr(p)  =>
              l\_sum(map(pcorec-size(lbl,p.a[lbl;p])  p;u@0))
            |  inr(E)  =>
            0
          +  tuple-sum(\mlambda{}c,u.  case  c
                                              of  inl(z)  =>
                                              case  z
                                                of  inl(p)  =>
                                                pcorec-size(lbl,p.a[lbl;p])  p  u
                                                |  inr(p)  =>
                                                l\_sum(map(pcorec-size(lbl,p.a[lbl;p])  p;u))
                                              |  inr(E)  =>
                                              0;v;v@0))\mdownarrow{}


By


Latex:
(D  -1  THEN  Reduce  0  THEN  (D  -4  With  \mkleeneopen{}x3\mkleeneclose{}    THENA  Auto)  THEN  Fold  `add-sz`  0)




Home Index