Step
*
of Lemma
istype-mrecind
∀[L:MutualRectypeSpec]. ∀[P:mobj(L) ⟶ TYPE].  istype(mrecind(L;x.P[x]))
BY
{ (Intros
   THEN Unfold `mrecind` 0
   THEN RepeatFor 2 ((D 0 THENL [Auto; Try (D -1)]))
   THEN RepUR ``prec-arg-types`` 0
   THEN (GenConclTerm ⌜mrec-spec(L;lbl;k)⌝⋅ THENA Auto)
   THEN (D 0 THENL [Auto; D 0])) }
1
1. L : MutualRectypeSpec
2. P : mobj(L) ⟶ TYPE
3. k : Atom
4. (k ∈ eager-map(λp.(fst(p));L))
5. lbl : Atom
6. 0 < ||mrec-spec(L;lbl;k)||
7. v : (Atom + Atom + Type) List
8. mrec-spec(L;lbl;k) = v ∈ ((Atom + Atom + Type) List)
9. t : tuple-type(map(λx.case x
                          of inl(y) =>
                          case y
                           of inl(p) =>
                           prec(lbl,p.mrec-spec(L;lbl;p);p)
                           | inr(p) =>
                           prec(lbl,p.mrec-spec(L;lbl;p);p) List
                          | inr(E) =>
                          E;v))
⊢ istype(∀j:ℕ||v||. case v[j] of inl(y) => case y of inl(p) => P[<p, t.j>] | inr(p) => (∀u∈t.j.P[<p, u>]) | inr(_) => Tr\000Cue)
2
1. L : MutualRectypeSpec
2. P : mobj(L) ⟶ TYPE
3. k : Atom
4. (k ∈ eager-map(λp.(fst(p));L))
5. lbl : Atom
6. 0 < ||mrec-spec(L;lbl;k)||
7. v : (Atom + Atom + Type) List
8. mrec-spec(L;lbl;k) = v ∈ ((Atom + Atom + Type) List)
9. t : tuple-type(map(λx.case x
                          of inl(y) =>
                          case y
                           of inl(p) =>
                           prec(lbl,p.mrec-spec(L;lbl;p);p)
                           | inr(p) =>
                           prec(lbl,p.mrec-spec(L;lbl;p);p) List
                          | inr(E) =>
                          E;v))
10. x : ∀j:ℕ||v||. case v[j] of inl(y) => case y of inl(p) => P[<p, t.j>] | inr(p) => (∀u∈t.j.P[<p, u>]) | inr(_) => Tru\000Ce
⊢ istype(P[<k, mk-prec(lbl;t)>])
Latex:
Latex:
\mforall{}[L:MutualRectypeSpec].  \mforall{}[P:mobj(L)  {}\mrightarrow{}  TYPE].    istype(mrecind(L;x.P[x]))
By
Latex:
(Intros
  THEN  Unfold  `mrecind`  0
  THEN  RepeatFor  2  ((D  0  THENL  [Auto;  Try  (D  -1)]))
  THEN  RepUR  ``prec-arg-types``  0
  THEN  (GenConclTerm  \mkleeneopen{}mrec-spec(L;lbl;k)\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (D  0  THENL  [Auto;  D  0]))
Home
Index