### Nuprl Lemma : list_ind_reverse_wf_dependent

`∀[A,B:Type].`
`  ∀nilcase:B. ∀F:B ⟶ (A List) ⟶ A ⟶ B. ∀P:(A List) ⟶ B ⟶ ℙ.`
`    ((P [] nilcase)`
`    `` (∀L:A List. ∀x:A. ∀b:B.  ((b = list_ind_reverse(L;nilcase;F) ∈ B) `` (P L b) `` (P (L @ [x]) (F b L x))))`
`    `` (∀L:A List. (P L list_ind_reverse(L;nilcase;F))))`

Proof

Definitions occuring in Statement :  list_ind_reverse: `list_ind_reverse(L;nilcase;R)` append: `as @ bs` cons: `[a / b]` nil: `[]` list: `T List` uall: `∀[x:A]. B[x]` prop: `ℙ` all: `∀x:A. B[x]` implies: `P `` Q` apply: `f a` function: `x:A ⟶ B[x]` universe: `Type` equal: `s = t ∈ T`
Definitions unfolded in proof :  uall: `∀[x:A]. B[x]` all: `∀x:A. B[x]` implies: `P `` Q` member: `t ∈ T` prop: `ℙ` so_lambda: `λ2x.t[x]` subtype_rel: `A ⊆r B` so_apply: `x[s]` list_ind_reverse: `list_ind_reverse(L;nilcase;R)` bool: `𝔹` unit: `Unit` it: `⋅` btrue: `tt` uiff: `uiff(P;Q)` and: `P ∧ Q` uimplies: `b supposing a` ifthenelse: `if b then t else f fi ` bfalse: `ff` exists: `∃x:A. B[x]` or: `P ∨ Q` sq_type: `SQType(T)` guard: `{T}` bnot: `¬bb` assert: `↑b` false: `False` nequal: `a ≠ b ∈ T ` nat: `ℕ` ge: `i ≥ j ` satisfiable_int_formula: `satisfiable_int_formula(fmla)` not: `¬A` top: `Top` iff: `P `⇐⇒` Q` rev_implies: `P `` Q` squash: `↓T` int_iseg: `{i...j}` cand: `A c∧ B` decidable: `Dec(P)` true: `True` firstn: `firstn(n;as)` so_lambda: `so_lambda(x,y,z.t[x; y; z])` so_apply: `x[s1;s2;s3]` append: `as @ bs` cons: `[a / b]`
Lemmas referenced :  nat_wf list_wf all_wf equal_wf list_ind_reverse_wf append_wf cons_wf nil_wf eq_int_wf length_wf bool_wf eqtt_to_assert assert_of_eq_int eqff_to_assert bool_cases_sqequal subtype_base_sq bool_subtype_base assert-bnot neg_assert_of_eq_int nat_properties satisfiable-full-omega-tt intformand_wf intformeq_wf itermVar_wf itermConstant_wf intformnot_wf int_formula_prop_and_lemma int_formula_prop_eq_lemma int_term_value_var_lemma int_term_value_constant_lemma int_formula_prop_not_lemma int_formula_prop_wf equal-wf-T-base length_wf_nat intformless_wf int_formula_prop_less_lemma int_subtype_base set_wf less_than_wf primrec-wf2 length_zero iff_weakening_equal firstn_wf subtract_wf le_wf squash_wf true_wf length_firstn_eq decidable__le intformle_wf itermSubtract_wf int_formula_prop_le_lemma int_term_value_subtract_lemma length_firstn last_wf non_null_iff_length subtype_rel_list top_wf decidable__lt list-cases list_ind_nil_lemma length_of_nil_lemma null_nil_lemma product_subtype_list length_of_cons_lemma null_cons_lemma false_wf firstn_last
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation lambdaFormation cut introduction extract_by_obid hypothesis sqequalHypSubstitution isectElimination thin cumulativity hypothesisEquality sqequalRule lambdaEquality because_Cache functionEquality functionExtensionality applyEquality universeEquality natural_numberEquality unionElimination equalityElimination equalityTransitivity equalitySymmetry productElimination independent_isectElimination dependent_pairFormation promote_hyp dependent_functionElimination instantiate independent_functionElimination voidElimination applyLambdaEquality setElimination rename int_eqEquality intEquality isect_memberEquality voidEquality independent_pairFormation computeAll baseClosed baseApply closedConclusion imageElimination dependent_set_memberEquality productEquality imageMemberEquality hypothesis_subsumption hyp_replacement

Latex:
\mforall{}[A,B:Type].
\mforall{}nilcase:B.  \mforall{}F:B  {}\mrightarrow{}  (A  List)  {}\mrightarrow{}  A  {}\mrightarrow{}  B.  \mforall{}P:(A  List)  {}\mrightarrow{}  B  {}\mrightarrow{}  \mBbbP{}.
((P  []  nilcase)
{}\mRightarrow{}  (\mforall{}L:A  List.  \mforall{}x:A.  \mforall{}b:B.
((b  =  list\_ind\_reverse(L;nilcase;F))  {}\mRightarrow{}  (P  L  b)  {}\mRightarrow{}  (P  (L  @  [x])  (F  b  L  x))))
{}\mRightarrow{}  (\mforall{}L:A  List.  (P  L  list\_ind\_reverse(L;nilcase;F))))

Date html generated: 2017_04_17-AM-08_44_05
Last ObjectModification: 2017_02_27-PM-05_03_06

Theory : list_1

Home Index