Step
*
3
of Lemma
pW-rec_wf
1. P : Type
2. A : P ⟶ Type
3. B : p:P ⟶ A[p] ⟶ Type
4. C : p:P ⟶ a:A[p] ⟶ B[p;a] ⟶ P
5. pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]) ∈ Type
6. pW ∈ P ⟶ Type
7. Q : par:P ⟶ (pW par) ⟶ ℙ
8. ind : par:P
⟶ a:A[par]
⟶ f:(b:B[par;a] ⟶ (pW C[par;a;b]))
⟶ (b:B[par;a] ⟶ Q[C[par;a;b];f b])
⟶ Q[par;pW-sup(a;f)]
9. par : P
10. w : pW par
11. param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) ∈ n:ℕ
⟶ (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))
⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
⟶ ℙ
12. ∀[pp:n:ℕ × (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))]. (Barred(pp) ∈ ℙ)
13. n : ℕ
14. s : ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
15. ∀%6:ℕn. (param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) %6 s (s %6))
16. ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) n s t}
(if (0) < (n + 1)
then let q,w',d = if (n + 1) - 1=n then t else (s ((n + 1) - 1)) in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax
else let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(par;w) ∈ if (0) < (n + 1)
then let q,w',d = if (n + 1) - 1=n then t else (s ((n + 1) - 1)) in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True
else Q[par;w])
⊢ if (0) < (n)
then let q,w',d = s (n - 1) in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax
else let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(par;w) ∈ if (0) < (n)
then let q,w',d = s (n - 1) in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True
else Q[par;w]
BY
{ (Assert ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])|
param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) n s t}
(let q,w',d = t in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax ∈ let q,w',d = t in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True) BY
((Subst' (n + 1) - 1 ~ n -1 THENA Auto)
THEN (Reduce (-1) THENA Auto)
THEN LessCases (-1)
THEN Try (Complete (Auto)))) }
1
1. P : Type
2. A : P ⟶ Type
3. B : p:P ⟶ A[p] ⟶ Type
4. C : p:P ⟶ a:A[p] ⟶ B[p;a] ⟶ P
5. pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]) ∈ Type
6. pW ∈ P ⟶ Type
7. Q : par:P ⟶ (pW par) ⟶ ℙ
8. ind : par:P
⟶ a:A[par]
⟶ f:(b:B[par;a] ⟶ (pW C[par;a;b]))
⟶ (b:B[par;a] ⟶ Q[C[par;a;b];f b])
⟶ Q[par;pW-sup(a;f)]
9. par : P
10. w : pW par
11. param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) ∈ n:ℕ
⟶ (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))
⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
⟶ ℙ
12. ∀[pp:n:ℕ × (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))]. (Barred(pp) ∈ ℙ)
13. n : ℕ
14. s : ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
15. ∀%6:ℕn. (param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) %6 s (s %6))
16. ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) n s t}
(if (0) < (n + 1)
then let q,w',d = if (n + 1) - 1=n then t else (s ((n + 1) - 1)) in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax
else let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(par;w) ∈ if (0) < (n + 1)
then let q,w',d = if (n + 1) - 1=n then t else (s ((n + 1) - 1)) in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True
else Q[par;w])
17. ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) n s t}
(let q,w',d = t in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax ∈ let q,w',d = t in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True)
⊢ if (0) < (n)
then let q,w',d = s (n - 1) in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax
else let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,λb.F(C[p;a;b],f(b)) in
F(par;w) ∈ if (0) < (n)
then let q,w',d = s (n - 1) in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True
else Q[par;w]
Latex:
Latex:
1. P : Type
2. A : P {}\mrightarrow{} Type
3. B : p:P {}\mrightarrow{} A[p] {}\mrightarrow{} Type
4. C : p:P {}\mrightarrow{} a:A[p] {}\mrightarrow{} B[p;a] {}\mrightarrow{} P
5. pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]) \mmember{} Type
6. pW \mmember{} P {}\mrightarrow{} Type
7. Q : par:P {}\mrightarrow{} (pW par) {}\mrightarrow{} \mBbbP{}
8. ind : par:P
{}\mrightarrow{} a:A[par]
{}\mrightarrow{} f:(b:B[par;a] {}\mrightarrow{} (pW C[par;a;b]))
{}\mrightarrow{} (b:B[par;a] {}\mrightarrow{} Q[C[par;a;b];f b])
{}\mrightarrow{} Q[par;pW-sup(a;f)]
9. par : P
10. w : pW par
11. param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) \mmember{} n:\mBbbN{}
{}\mrightarrow{} (\mBbbN{}n {}\mrightarrow{} pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))
{}\mrightarrow{} pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
{}\mrightarrow{} \mBbbP{}
12. \mforall{}[pp:n:\mBbbN{} \mtimes{} (\mBbbN{}n {}\mrightarrow{} pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))]. (Barred(pp) \mmember{} \mBbbP{})
13. n : \mBbbN{}
14. s : \mBbbN{}n {}\mrightarrow{} pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
15. \mforall{}\%6:\mBbbN{}n. (param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) \%6 s (s \%6))
16. \mforall{}t:\{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])|
param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) n s t\}
(if (0) < (n + 1)
then let q,w',d = if (n + 1) - 1=n then t else (s ((n + 1) - 1)) in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax
else let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b)) in
F(par;w) \mmember{} if (0) < (n + 1)
then let q,w',d = if (n + 1) - 1=n then t else (s ((n + 1) - 1)) in
case d
of inl(b) =>
let a,f = w'
in Q[C[q;a;b];f b]
| inr(z) =>
True
else Q[par;w])
\mvdash{} if (0) < (n)
then let q,w',d = s (n - 1) in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax
else let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b)) in
F(par;w) \mmember{} if (0) < (n)
then let q,w',d = s (n - 1) in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True
else Q[par;w]
By
Latex:
(Assert \mforall{}t:\{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])|
param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) n s t\}
(let q,w',d = t in
case d
of inl(b) =>
let a,f = w'
in let ind(p,a,f,G) = ind[p;a;f;G] in
letrec F(p,w) = let a,f=w in
ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b)) in
F(C[q;a;b];f b)
| inr(z) =>
Ax \mmember{} let q,w',d = t in
case d of inl(b) => let a,f = w' in Q[C[q;a;b];f b] | inr(z) => True) BY
((Subst' (n + 1) - 1 \msim{} n -1 THENA Auto)
THEN (Reduce (-1) THENA Auto)
THEN LessCases (-1)
THEN Try (Complete (Auto))))
Home
Index