Step * 1 1 of Lemma prec-ext

.....subterm..... T:t
2:n
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. pcorec(lbl,p.a[lbl;p]) i
7. (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), snd(x)>)↓
8. (fst(x)) (fst(x)) ∈ {lbl:Atom| 0 < ||a[lbl;i]||} 
9. snd(x) ∈ tuple-type(map(λx.case x
                               of inl(y) =>
                               case of inl(p) => pcorec(lbl,p.a[lbl;p]) inr(p) => (pcorec(lbl,p.a[lbl;p]) p) List
                               inr(E) =>
                               E;a[fst(x);i]))
10. ~ <fst(x), snd(x)>
⊢ snd(x) ∈ 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;a[fst(x);i]))
BY
SubsumeC ⌜{z: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[fst(x);i]))| 
             (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), z>)↓} ⌝⋅ }

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. pcorec(lbl,p.a[lbl;p]) i
7. (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), snd(x)>)↓
8. (fst(x)) (fst(x)) ∈ {lbl:Atom| 0 < ||a[lbl;i]||} 
9. snd(x) ∈ tuple-type(map(λx.case x
                               of inl(y) =>
                               case of inl(p) => pcorec(lbl,p.a[lbl;p]) inr(p) => (pcorec(lbl,p.a[lbl;p]) p) List
                               inr(E) =>
                               E;a[fst(x);i]))
10. ~ <fst(x), snd(x)>
⊢ snd(x) ∈ {z: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[fst(x);i]))| 
            (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), z>)↓

2
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. pcorec(lbl,p.a[lbl;p]) i
7. (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), snd(x)>)↓
8. (fst(x)) (fst(x)) ∈ {lbl:Atom| 0 < ||a[lbl;i]||} 
9. snd(x) ∈ tuple-type(map(λx.case x
                               of inl(y) =>
                               case of inl(p) => pcorec(lbl,p.a[lbl;p]) inr(p) => (pcorec(lbl,p.a[lbl;p]) p) List
                               inr(E) =>
                               E;a[fst(x);i]))
10. ~ <fst(x), snd(x)>
11. (snd(x))
(snd(x))
∈ {z:tuple-type(map(λx.case x
                        of inl(y) =>
                        case of inl(p) => pcorec(lbl,p.a[lbl;p]) inr(p) => (pcorec(lbl,p.a[lbl;p]) p) List
                        inr(E) =>
                        E;a[fst(x);i]))| 
   (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), z>)↓
⊢ {z:tuple-type(map(λx.case x
                        of inl(y) =>
                        case of inl(p) => pcorec(lbl,p.a[lbl;p]) inr(p) => (pcorec(lbl,p.a[lbl;p]) p) List
                        inr(E) =>
                        E;a[fst(x);i]))| 
   (pcorec-size(lbl,p.a[lbl;p]) i <fst(x), z>)↓}  ⊆tuple-type(map(λ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;a[fst(x);i]))


Latex:


Latex:
.....subterm.....  T:t
2:n
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.  x  :  pcorec(lbl,p.a[lbl;p])  i
7.  (pcorec-size(lbl,p.a[lbl;p])  i  <fst(x),  snd(x)>)\mdownarrow{}
8.  (fst(x))  =  (fst(x))
9.  snd(x)  \mmember{}  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[fst(x);i]))
10.  x  \msim{}  <fst(x),  snd(x)>
\mvdash{}  snd(x)  \mmember{}  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;a[fst(x);i]))


By


Latex:
SubsumeC  \mkleeneopen{}\{z: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[fst(x);i]))| 
                      (pcorec-size(lbl,p.a[lbl;p])  i  <fst(x),  z>)\mdownarrow{}\}  \mkleeneclose{}\mcdot{}




Home Index