Nuprl Lemma : wf-term-accum-induction

[opr,P:Type]. ∀[sort:term(opr) ⟶ ℕ]. ∀[arity:opr ⟶ ((ℕ × ℕList)]. ∀[R:P ⟶ wfterm(opr;sort;arity) ⟶ ℙ].
  ∀Q:P
     ⟶ f:opr
     ⟶ vs:(varname() List)
     ⟶ {L:(t:wfterm(opr;sort;arity) × p:P × R[p;t]) List| 
         ||L|| < ||arity f||
         ∧ (||vs|| (fst(arity f[||L||])) ∈ ℤ)
         ∧ (∀i:ℕ||L||. ((sort (fst(L[i]))) (snd(arity f[i])) ∈ ℤ))} 
     ⟶ P
    ((∀p:P. ∀v:{v:varname()| ¬(v nullvar() ∈ varname())} .  R[p;varterm(v)])
     (∀p:P. ∀f:opr. ∀bts:wf-bound-terms(opr;sort;arity;f). ∀L:{L:(t:wfterm(opr;sort;arity) × p:P × R[p;t]) List| 
                                                                 (||L|| ||bts|| ∈ ℤ)
                                                                 ∧ (∀i:ℕ||L||
                                                                      ((fst(L[i])) (snd(bts[i])) ∈ term(opr)))
                                                                 ∧ (∀i:ℕ||L||
                                                                      ((fst(snd(L[i])))
                                                                      Q[p;f;fst(bts[i]);firstn(i;L)]
                                                                      ∈ P))} .
          R[p;mkwfterm(f;bts)])
     (∀p:P. ∀t:wfterm(opr;sort;arity).  R[p;t]))


Proof




Definitions occuring in Statement :  mkwfterm: mkwfterm(f;bts) wf-bound-terms: wf-bound-terms(opr;sort;arity;f) wfterm: wfterm(opr;sort;arity) varterm: varterm(v) term: term(opr) nullvar: nullvar() varname: varname() firstn: firstn(n;as) select: L[n] length: ||as|| list: List int_seg: {i..j-} nat: less_than: a < b uall: [x:A]. B[x] prop: so_apply: x[s1;s2;s3;s4] so_apply: x[s1;s2] pi1: fst(t) pi2: snd(t) all: x:A. B[x] not: ¬A implies:  Q and: P ∧ Q set: {x:A| B[x]}  apply: a function: x:A ⟶ B[x] product: x:A × B[x] natural_number: $n int: universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] member: t ∈ T all: x:A. B[x] implies:  Q so_apply: x[s1;s2] so_apply: x[s1;s2;s3;s4] and: P ∧ Q subtype_rel: A ⊆B nat: so_lambda: λ2x.t[x] so_apply: x[s] uimplies: supposing a wf-bound-terms: wf-bound-terms(opr;sort;arity;f) int_seg: {i..j-} lelt: i ≤ j < k le: A ≤ B decidable: Dec(P) or: P ∨ Q not: ¬A satisfiable_int_formula: satisfiable_int_formula(fmla) exists: x:A. B[x] false: False prop: pi1: fst(t) pi2: snd(t) wfterm: wfterm(opr;sort;arity) respects-equality: respects-equality(S;T) assert: b ifthenelse: if then else fi  wf-term: wf-term(arity;sort;t) varterm: varterm(v) btrue: tt true: True less_than: a < b squash: T int_iseg: {i...j} cand: c∧ B less_than': less_than'(a;b) guard: {T} iff: ⇐⇒ Q rev_implies:  Q
Lemmas referenced :  term-accum_wf_wfterm wfterm_wf wf-bound-terms_wf list_wf istype-int length_wf_nat set_subtype_base le_wf int_subtype_base varname_wf int_seg_wf length_wf term_wf select_wf int_seg_properties decidable__le full-omega-unsat intformand_wf intformnot_wf intformle_wf itermConstant_wf itermVar_wf int_formula_prop_and_lemma int_formula_prop_not_lemma int_formula_prop_le_lemma int_term_value_constant_lemma int_term_value_var_lemma int_formula_prop_wf decidable__lt intformless_wf int_formula_prop_less_lemma intformeq_wf int_formula_prop_eq_lemma respects-equality-set-trivial2 assert_wf wf-term_wf pi1_wf mkwfterm_wf nullvar_wf istype-void varterm_wf istype-assert subtype_rel_self istype-less_than nat_wf istype-nat istype-universe firstn_wf subtype_rel_sets_simple lelt_wf istype-le select-firstn subtype_rel_list top_wf int_seg_subtype_nat istype-false equal_wf squash_wf true_wf iff_weakening_equal length_firstn
Rules used in proof :  cut introduction extract_by_obid sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation_alt hypothesis sqequalHypSubstitution isectElimination thin hypothesisEquality lambdaFormation_alt rename sqequalRule equalityTransitivity equalitySymmetry universeIsType functionIsType setIsType productEquality applyEquality because_Cache productIsType equalityIstype intEquality lambdaEquality_alt natural_numberEquality independent_isectElimination setElimination sqequalBase productElimination dependent_functionElimination unionElimination approximateComputation independent_functionElimination dependent_pairFormation_alt int_eqEquality Error :memTop,  independent_pairFormation voidElimination inhabitedIsType dependent_set_memberEquality_alt instantiate universeEquality imageElimination closedConclusion imageMemberEquality baseClosed

Latex:
\mforall{}[opr,P:Type].  \mforall{}[sort:term(opr)  {}\mrightarrow{}  \mBbbN{}].  \mforall{}[arity:opr  {}\mrightarrow{}  ((\mBbbN{}  \mtimes{}  \mBbbN{})  List)].  \mforall{}[R:P
                                                                                                                                                      {}\mrightarrow{}  wfterm(opr;sort;arity)
                                                                                                                                                      {}\mrightarrow{}  \mBbbP{}].
    \mforall{}Q:P
          {}\mrightarrow{}  f:opr
          {}\mrightarrow{}  vs:(varname()  List)
          {}\mrightarrow{}  \{L:(t:wfterm(opr;sort;arity)  \mtimes{}  p:P  \mtimes{}  R[p;t])  List| 
                  ||L||  <  ||arity  f||
                  \mwedge{}  (||vs||  =  (fst(arity  f[||L||])))
                  \mwedge{}  (\mforall{}i:\mBbbN{}||L||.  ((sort  (fst(L[i])))  =  (snd(arity  f[i]))))\} 
          {}\mrightarrow{}  P
        ((\mforall{}p:P.  \mforall{}v:\{v:varname()|  \mneg{}(v  =  nullvar())\}  .    R[p;varterm(v)])
        {}\mRightarrow{}  (\mforall{}p:P.  \mforall{}f:opr.  \mforall{}bts:wf-bound-terms(opr;sort;arity;f).  \mforall{}L:\{L:(t:wfterm(opr;sort;arity)
                                                                                                                                  \mtimes{}  p:P
                                                                                                                                  \mtimes{}  R[p;t])  List| 
                                                                                                                                  (||L||  =  ||bts||)
                                                                                                                                  \mwedge{}  (\mforall{}i:\mBbbN{}||L||
                                                                                                                                            ((fst(L[i]))  =  (snd(bts[i]))))
                                                                                                                                  \mwedge{}  (\mforall{}i:\mBbbN{}||L||
                                                                                                                                            ((fst(snd(L[i])))
                                                                                                                                            =  Q[p;f;fst(bts[i]);
                                                                                                                                                  firstn(i;L)]))\}  .
                    R[p;mkwfterm(f;bts)])
        {}\mRightarrow{}  (\mforall{}p:P.  \mforall{}t:wfterm(opr;sort;arity).    R[p;t]))



Date html generated: 2020_05_19-PM-10_00_12
Last ObjectModification: 2020_03_09-PM-04_10_33

Theory : terms


Home Index