Step * 1 1 1 2 1 1 of Lemma mrec-induction2


1. MutualRectypeSpec
2. [P] mobj(L) ⟶ TYPE
3. Atom
4. [%2] (k ∈ eager-map(λp.(fst(p));L))
5. lbl {lbl:Atom| 0 < ||mrec-spec(L;lbl;k)||} 
6. tuple-type(prec-arg-types(lbl,p.mrec-spec(L;lbl;p);k;lbl))
7. ∀z:{z:mobj(L)| z < <k, mk-prec(lbl;t)>P[z]
8. : ℕ||mrec-spec(L;lbl;k)||
9. Atom
10. mrec-spec(L;lbl;k)[j] (inl (inr )) ∈ (Atom Atom Type)
11. mrec-spec(L;lbl;k)[j] inl (inr )
12. t.j ∈ mrec(L;y) List
⊢ (∀u∈t.j.P[<y, u>])
BY
Assert ⌜∀u:mrec(L;y). ((u ∈ t.j)  P[<y, u>])⌝⋅ }

1
.....assertion..... 
1. MutualRectypeSpec
2. [P] mobj(L) ⟶ TYPE
3. Atom
4. [%2] (k ∈ eager-map(λp.(fst(p));L))
5. lbl {lbl:Atom| 0 < ||mrec-spec(L;lbl;k)||} 
6. tuple-type(prec-arg-types(lbl,p.mrec-spec(L;lbl;p);k;lbl))
7. ∀z:{z:mobj(L)| z < <k, mk-prec(lbl;t)>P[z]
8. : ℕ||mrec-spec(L;lbl;k)||
9. Atom
10. mrec-spec(L;lbl;k)[j] (inl (inr )) ∈ (Atom Atom Type)
11. mrec-spec(L;lbl;k)[j] inl (inr )
12. t.j ∈ mrec(L;y) List
⊢ ∀u:mrec(L;y). ((u ∈ t.j)  P[<y, u>])

2
1. MutualRectypeSpec
2. [P] mobj(L) ⟶ TYPE
3. Atom
4. [%2] (k ∈ eager-map(λp.(fst(p));L))
5. lbl {lbl:Atom| 0 < ||mrec-spec(L;lbl;k)||} 
6. tuple-type(prec-arg-types(lbl,p.mrec-spec(L;lbl;p);k;lbl))
7. ∀z:{z:mobj(L)| z < <k, mk-prec(lbl;t)>P[z]
8. : ℕ||mrec-spec(L;lbl;k)||
9. Atom
10. mrec-spec(L;lbl;k)[j] (inl (inr )) ∈ (Atom Atom Type)
11. mrec-spec(L;lbl;k)[j] inl (inr )
12. t.j ∈ mrec(L;y) List
13. ∀u:mrec(L;y). ((u ∈ t.j)  P[<y, u>])
⊢ (∀u∈t.j.P[<y, u>])


Latex:


Latex:

1.  L  :  MutualRectypeSpec
2.  [P]  :  mobj(L)  {}\mrightarrow{}  TYPE
3.  k  :  Atom
4.  [\%2]  :  (k  \mmember{}  eager-map(\mlambda{}p.(fst(p));L))
5.  lbl  :  \{lbl:Atom|  0  <  ||mrec-spec(L;lbl;k)||\} 
6.  t  :  tuple-type(prec-arg-types(lbl,p.mrec-spec(L;lbl;p);k;lbl))
7.  \mforall{}z:\{z:mobj(L)|  z  <  <k,  mk-prec(lbl;t)>\}  .  P[z]
8.  j  :  \mBbbN{}||mrec-spec(L;lbl;k)||
9.  y  :  Atom
10.  mrec-spec(L;lbl;k)[j]  =  (inl  (inr  y  ))
11.  mrec-spec(L;lbl;k)[j]  \msim{}  inl  (inr  y  )
12.  t.j  \mmember{}  mrec(L;y)  List
\mvdash{}  (\mforall{}u\mmember{}t.j.P[<y,  u>])


By


Latex:
Assert  \mkleeneopen{}\mforall{}u:mrec(L;y).  ((u  \mmember{}  t.j)  {}\mRightarrow{}  P[<y,  u>])\mkleeneclose{}\mcdot{}




Home Index