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: T 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: P ⇒ Q,  and: P ∧ Q,  set: {x:A| B[x]} ,  apply: f a,  function: x:A ⟶ B[x],  product: x:A × B[x],  natural_number: $n,  int: ℤ,  universe: Type,  equal: s = t ∈ T
Definitions unfolded in proof :  uall: ∀[x:A]. B[x],  member: t ∈ T,  all: ∀x:A. B[x],  implies: P ⇒ Q,  so_apply: x[s1;s2],  so_apply: x[s1;s2;s3;s4],  and: P ∧ Q,  subtype_rel: A ⊆r B,  nat: ℕ,  so_lambda: λ2x.t[x],  so_apply: x[s],  uimplies: b 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 b then t else f 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: A c∧ B,  less_than': less_than'(a;b),  guard: {T},  iff: P ⇐⇒ Q,  rev_implies: P ⇐ 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