Step * 1 1 2 1 1 1 3 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. lbl Atom
7. (P Type) List
⊢ ∀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;L))
    ((add-sz(pcorec-size(lbl,p.a[lbl;p]);L;x) ∈ ℕ)
     (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;L))))
BY
((ListInd (-1) THEN Reduce 0)
   THENL [Auto; ((RWO "null-map" THENA Auto) THEN (SimpleBoolCase ⌜null(v)⌝⋅ THENA Auto))]
}

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. lbl Atom
7. Type
8. (P Type) List
9. ∀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;v))
     ((add-sz(pcorec-size(lbl,p.a[lbl;p]);v;x) ∈ ℕ)
      (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;v))))
10. null(v) tt
⊢ ∀x@0:case u
        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
    ((add-sz(pcorec-size(lbl,p.a[lbl;p]);[u v];x@0) ∈ ℕ)
     (x@0 ∈ 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))

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. lbl Atom
7. Type
8. (P Type) List
9. ∀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;v))
     ((add-sz(pcorec-size(lbl,p.a[lbl;p]);v;x) ∈ ℕ)
      (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;v))))
10. null(v) ff
⊢ ∀x:case u
      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 × 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;v))
    ((add-sz(pcorec-size(lbl,p.a[lbl;p]);[u v];x) ∈ ℕ)
     (x ∈ 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))))


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.  lbl  :  Atom
7.  L  :  (P  +  P  +  Type)  List
\mvdash{}  \mforall{}x: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;L))
        ((add-sz(pcorec-size(lbl,p.a[lbl;p]);L;x)  \mmember{}  \mBbbN{})
        {}\mRightarrow{}  (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;L))))


By


Latex:
((ListInd  (-1)  THEN  Reduce  0)
  THENL  [Auto;  ((RWO  "null-map"  0  THENA  Auto)  THEN  (SimpleBoolCase  \mkleeneopen{}null(v)\mkleeneclose{}\mcdot{}  THENA  Auto))]
)




Home Index