Step
*
2
of Lemma
prec-ext
.....subterm..... T:t
1:n
1. P : Type
2. a : Atom ⟶ P ⟶ ((P + P + Type) List)
3. pcorec(lbl,p.a[lbl;p]) ≡ ptuple(lbl,p.a[lbl;p];pcorec(lbl,p.a[lbl;p]))
4. i : 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. x : labl:{lbl:Atom| 0 < ||a[lbl;i]||}  × 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[labl;i]))
⊢ x ∈ prec(lbl,p.a[lbl;p];i)
BY
{ ((Unfold `prec` 0 THEN MemTypeCD) THENW Auto) }
1
1. P : Type
2. a : Atom ⟶ P ⟶ ((P + P + Type) List)
3. pcorec(lbl,p.a[lbl;p]) ≡ ptuple(lbl,p.a[lbl;p];pcorec(lbl,p.a[lbl;p]))
4. i : 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. x : labl:{lbl:Atom| 0 < ||a[lbl;i]||}  × 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[labl;i]))
⊢ x ∈ pcorec(lbl,p.a[lbl;p]) i
2
.....set predicate..... 
1. P : Type
2. a : Atom ⟶ P ⟶ ((P + P + Type) List)
3. pcorec(lbl,p.a[lbl;p]) ≡ ptuple(lbl,p.a[lbl;p];pcorec(lbl,p.a[lbl;p]))
4. i : 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. x : labl:{lbl:Atom| 0 < ||a[lbl;i]||}  × 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[labl;i]))
⊢ (pcorec-size(lbl,p.a[lbl;p]) i x)↓
Latex:
Latex:
.....subterm.....  T:t
1: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  :  labl:\{lbl:Atom|  0  <  ||a[lbl;i]||\}    \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;a[labl;i]))
\mvdash{}  x  \mmember{}  prec(lbl,p.a[lbl;p];i)
By
Latex:
((Unfold  `prec`  0  THEN  MemTypeCD)  THENW  Auto)
Home
Index