Step
*
1
2
2
of Lemma
ptuple-continuous
1. P : Type
2. a : Atom ⟶ P ⟶ ((P + P + Type) List)
3. X : ℕ ⟶ P ⟶ Type
4. p : P
5. x : ⋂n:ℕ. (ptuple(lbl,p.a[lbl;p];X n) p)
6. ∀n:ℕ. (<fst(x), snd(x)> ∈ ptuple(lbl,p.a[lbl;p];λp.(X n p)) p)
7. x ~ <fst(x), snd(x)>
8. fst(x) ∈ {lbl:Atom| 0 < ||a[lbl;p]||}
9. (snd(x))
= (snd(x))
∈ (⋂n:ℕ
tuple-type(map(λx.case x of inl(y) => case y of inl(p) => X n p | inr(p) => (X n p) List | inr(E) => E;
a[fst(x);p])))
⊢ tuple-type(map(λp.⋂n:ℕ
((λn,x. case x of inl(y) => case y of inl(p) => X n p | inr(p) => (X n p) List | inr(E) => E) n p)\000C;
a[fst(x);p])) ⊆r tuple-type(map(λx.case x
of inl(y) =>
case y of inl(p) => ⋂n:ℕ. (X n p) | inr(p) => (⋂n:ℕ. (X n p)) List
| inr(E) =>
E;a[fst(x);p]))
BY
{ (Reduce 0
THEN (BLemma `subtype_rel_weakening` THENW Auto)
THEN (BLemma `tuple-type-ext` THENW Auto)
THEN (RWO "map-length" 0 THEN Auto)
THEN (RWO "select-map" 0 THENA Auto)
THEN Reduce 0) }
1
1. P : Type
2. a : Atom ⟶ P ⟶ ((P + P + Type) List)
3. X : ℕ ⟶ P ⟶ Type
4. p : P
5. x : ⋂n:ℕ. (ptuple(lbl,p.a[lbl;p];X n) p)
6. ∀n:ℕ. (<fst(x), snd(x)> ∈ ptuple(lbl,p.a[lbl;p];λp.(X n p)) p)
7. x ~ <fst(x), snd(x)>
8. fst(x) ∈ {lbl:Atom| 0 < ||a[lbl;p]||}
9. (snd(x))
= (snd(x))
∈ (⋂n:ℕ
tuple-type(map(λx.case x of inl(y) => case y of inl(p) => X n p | inr(p) => (X n p) List | inr(E) => E;
a[fst(x);p])))
10. ||a[fst(x);p]|| = ||a[fst(x);p]|| ∈ ℤ
11. i : ℕ||a[fst(x);p]||
⊢ ⋂n:ℕ. case a[fst(x);p][i] of inl(y) => case y of inl(p) => X n p | inr(p) => (X n p) List | inr(E) => E ≡
case a[fst(x);p][i] of inl(y) => case y of inl(p) => ⋂n:ℕ. (X n p) | inr(p) => (⋂n:ℕ. (X n p)) List | inr(E) => E
Latex:
Latex:
1. P : Type
2. a : Atom {}\mrightarrow{} P {}\mrightarrow{} ((P + P + Type) List)
3. X : \mBbbN{} {}\mrightarrow{} P {}\mrightarrow{} Type
4. p : P
5. x : \mcap{}n:\mBbbN{}. (ptuple(lbl,p.a[lbl;p];X n) p)
6. \mforall{}n:\mBbbN{}. (<fst(x), snd(x)> \mmember{} ptuple(lbl,p.a[lbl;p];\mlambda{}p.(X n p)) p)
7. x \msim{} <fst(x), snd(x)>
8. fst(x) \mmember{} \{lbl:Atom| 0 < ||a[lbl;p]||\}
9. (snd(x)) = (snd(x))
\mvdash{} tuple-type(map(\mlambda{}p.\mcap{}n:\mBbbN{}
((\mlambda{}n,x. case x
of inl(y) =>
case y of inl(p) => X n p | inr(p) => (X n p) List
| inr(E) =>
E)
n
p);a[fst(x);p])) \msubseteq{}r tuple-type(map(\mlambda{}x.case x
of inl(y) =>
case y
of inl(p) =>
\mcap{}n:\mBbbN{}. (X n p)
| inr(p) =>
(\mcap{}n:\mBbbN{}. (X n p)) List
| inr(E) =>
E;a[fst(x);p]))
By
Latex:
(Reduce 0
THEN (BLemma `subtype\_rel\_weakening` THENW Auto)
THEN (BLemma `tuple-type-ext` THENW Auto)
THEN (RWO "map-length" 0 THEN Auto)
THEN (RWO "select-map" 0 THENA Auto)
THEN Reduce 0)
Home
Index