### Nuprl Lemma : pW-rec_wf

`∀[P:Type]. ∀[A:P ⟶ Type]. ∀[B:p:P ⟶ A[p] ⟶ Type]. ∀[C:p:P ⟶ a:A[p] ⟶ B[p;a] ⟶ P]. ∀[Q:par:P ⟶ (pW par) ⟶ ℙ].`
`∀[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)]]. ∀[par:P]. ∀[w:pW par].`
`  (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) ∈ Q[par;w])`

Proof

Definitions occuring in Statement :  pW-rec: pW-rec pW-sup: `pW-sup(a;f)` param-W: `pW` uall: `∀[x:A]. B[x]` prop: `ℙ` so_apply: `x[s1;s2;s3;s4]` so_apply: `x[s1;s2;s3]` so_apply: `x[s1;s2]` so_apply: `x[s]` member: `t ∈ T` apply: `f a` function: `x:A ⟶ B[x]` universe: `Type`
Definitions unfolded in proof :  uall: `∀[x:A]. B[x]` member: `t ∈ T` subtype_rel: `A ⊆r B` decidable: `Dec(P)` all: `∀x:A. B[x]` nat: `ℕ` so_apply: `x[s]` so_apply: `x[s1;s2]` so_apply: `x[s1;s2;s3]` prop: `ℙ` so_lambda: `λ2x.t[x]` so_lambda: `λ2x y.t[x; y]` so_lambda: `so_lambda(x,y,z.t[x; y; z])` param-W: `pW` pcw-partial: `pcw-partial(path;n)` implies: `P `` Q` squash: `↓T` pcw-path: `Path` or: `P ∨ Q` iff: `P `⇐⇒` Q` and: `P ∧ Q` not: `¬A` rev_implies: `P `` Q` false: `False` uiff: `uiff(P;Q)` uimplies: `b supposing a` sq_stable: `SqStable(P)` subtract: `n - m` top: `Top` le: `A ≤ B` less_than': `less_than'(a;b)` true: `True` param-W-rel: `param-W-rel(P;p.A[p];p,a.B[p; a];p,a,b.C[p; a; b];par;w)` bool: `𝔹` unit: `Unit` it: `⋅` btrue: `tt` less_than: `a < b` pcw-step: `pcw-step(P;p.A[p];p,a.B[p; a];p,a,b.C[p; a; b])` pi2: `snd(t)` isl: `isl(x)` guard: `{T}` bfalse: `ff` exists: `∃x:A. B[x]` sq_type: `SQType(T)` bnot: `¬bb` ifthenelse: `if b then t else f fi ` assert: `↑b` lelt: `i ≤ j < k` int_seg: `{i..j-}` pcw-pp-barred: `Barred(pp)` spreadn: spread3 isr: `isr(x)` exposed-it: `exposed-it` ext-family: `F ≡ G` ext-eq: `A ≡ B` pi1: `fst(t)` pW-rec: pW-rec pW-sup: `pW-sup(a;f)` so_apply: `x[s1;s2;s3;s4]` pcw-steprel: `StepRel(s1;s2)` pcw-step-agree: `StepAgree(s;p1;w)` cand: `A c∧ B`
Rules used in proof :  cut introduction extract_by_obid sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity Error :isect_memberFormation_alt,  hypothesis sqequalHypSubstitution isectElimination thin hypothesisEquality because_Cache strong_bar_Induction equalityTransitivity equalitySymmetry applyEquality sqequalRule dependent_functionElimination Error :dependent_pairEquality_alt,  Error :functionIsType,  Error :universeIsType,  natural_numberEquality setElimination rename axiomEquality Error :isect_memberEquality_alt,  instantiate universeEquality Error :lambdaEquality_alt,  Error :inhabitedIsType,  independent_functionElimination imageElimination imageMemberEquality baseClosed Error :dependent_set_memberEquality_alt,  Error :lambdaFormation_alt,  addEquality unionElimination independent_pairFormation voidElimination productElimination independent_isectElimination minusEquality equalityElimination lessCases axiomSqEquality Error :productIsType,  Error :equalityIsType1,  Error :dependent_pairFormation_alt,  promote_hyp cumulativity functionExtensionality lambdaEquality lambdaFormation dependent_set_memberEquality intEquality voidEquality isect_memberEquality isect_memberFormation productEquality Error :setIsType,  int_eqReduceTrueSq hypothesis_subsumption applyLambdaEquality functionEquality Error :inlEquality_alt,  Error :unionIsType,  hyp_replacement

Latex:
\mforall{}[P:Type].  \mforall{}[A:P  {}\mrightarrow{}  Type].  \mforall{}[B:p:P  {}\mrightarrow{}  A[p]  {}\mrightarrow{}  Type].  \mforall{}[C:p:P  {}\mrightarrow{}  a:A[p]  {}\mrightarrow{}  B[p;a]  {}\mrightarrow{}  P].  \mforall{}[Q:par:P
{}\mrightarrow{}  (pW
par)
{}\mrightarrow{}  \mBbbP{}].
\mforall{}[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)]].  \mforall{}[par:P].  \mforall{}[w:pW  par].
(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{}  Q[par;w])

Date html generated: 2019_06_20-PM-00_36_17
Last ObjectModification: 2018_10_06-AM-11_20_30

Theory : co-recursion

Home Index