Step * 2 2 2 1 1 1 1 1 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. 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. x3
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))
⊢ 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)) ⊆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;v))
BY
(BLemma `subtype_rel_tuple-type`
   THEN Auto
   THEN (RWO "map-length" (-1) THENA Auto)
   THEN RWO "select-map" 0
   THEN Auto) }


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.  null(v)  =  ff
10.  x2  :  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
11.  x3  :  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))
12.  x3  =  x3
\mvdash{}  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))  \msubseteq{}r  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;v))


By


Latex:
(BLemma  `subtype\_rel\_tuple-type`
  THEN  Auto
  THEN  (RWO  "map-length"  (-1)  THENA  Auto)
  THEN  RWO  "select-map"  0
  THEN  Auto)




Home Index