### Nuprl Lemma : list_accum_invariant3

`∀[T,A:Type].`
`  ∀f:A ⟶ T ⟶ A`
`    ∀[P:A ⟶ (T List) ⟶ ℙ]`
`      ∀L:T List. ∀a:A.`
`        (P[a;[]]`
`        `` (∀a:A. ∀x:T. ∀L':T List.  (L' @ [x] ≤ L `` P[a;L'] `` P[f[a;x];L' @ [x]]))`
`        `` P[accumulate (with value a and list item x):`
`              f[a;x]`
`             over list:`
`               L`
`             with starting value:`
`              a);L])`

Proof

Definitions occuring in Statement :  iseg: `l1 ≤ l2` append: `as @ bs` list_accum: list_accum cons: `[a / b]` nil: `[]` list: `T List` uall: `∀[x:A]. B[x]` prop: `ℙ` so_apply: `x[s1;s2]` all: `∀x:A. B[x]` implies: `P `` Q` function: `x:A ⟶ B[x]` universe: `Type`
Definitions unfolded in proof :  uall: `∀[x:A]. B[x]` all: `∀x:A. B[x]` implies: `P `` Q` exists: `∃x:A. B[x]` member: `t ∈ T` prop: `ℙ` nat: `ℕ` so_lambda: `λ2x.t[x]` so_apply: `x[s1;s2]` subtype_rel: `A ⊆r B` so_apply: `x[s]` so_lambda: `λ2x y.t[x; y]` uiff: `uiff(P;Q)` and: `P ∧ Q` uimplies: `b supposing a` top: `Top` not: `¬A` satisfiable_int_formula: `satisfiable_int_formula(fmla)` false: `False` squash: `↓T` true: `True` guard: `{T}` iff: `P `⇐⇒` Q` rev_implies: `P `` Q` decidable: `Dec(P)` or: `P ∨ Q`
Lemmas referenced :  length_wf_nat length_wf equal_wf equal-wf-base-T all_wf list_wf iseg_wf append_wf cons_wf nil_wf int_subtype_base list_accum_wf set_wf less_than_wf primrec-wf2 nat_wf length_zero list_accum_nil_lemma last_lemma assert_of_null length_of_nil_lemma satisfiable-full-omega-tt intformand_wf intformeq_wf itermVar_wf itermConstant_wf intformless_wf int_formula_prop_and_lemma int_formula_prop_eq_lemma int_term_value_var_lemma int_term_value_constant_lemma int_formula_prop_less_lemma int_formula_prop_wf assert_wf null_wf list_accum_append subtype_rel_list top_wf list_accum_cons_lemma last_wf squash_wf true_wf iff_weakening_equal iseg_weakening iseg_append length-append length_of_cons_lemma decidable__equal_int add-is-int-iff intformnot_wf itermSubtract_wf itermAdd_wf int_formula_prop_not_lemma int_term_value_subtract_lemma int_term_value_add_lemma false_wf
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation lambdaFormation cut dependent_pairFormation introduction extract_by_obid sqequalHypSubstitution isectElimination thin cumulativity hypothesisEquality hypothesis intEquality setElimination rename productElimination baseClosed sqequalRule lambdaEquality because_Cache functionEquality applyEquality functionExtensionality baseApply closedConclusion natural_numberEquality dependent_functionElimination independent_functionElimination universeEquality equalitySymmetry independent_isectElimination dependent_set_memberEquality isect_memberEquality voidElimination voidEquality hyp_replacement applyLambdaEquality int_eqEquality independent_pairFormation computeAll imageElimination equalityTransitivity imageMemberEquality equalityUniverse levelHypothesis unionElimination pointwiseFunctionality promote_hyp

Latex:
\mforall{}[T,A:Type].
\mforall{}f:A  {}\mrightarrow{}  T  {}\mrightarrow{}  A
\mforall{}[P:A  {}\mrightarrow{}  (T  List)  {}\mrightarrow{}  \mBbbP{}]
\mforall{}L:T  List.  \mforall{}a:A.
(P[a;[]]
{}\mRightarrow{}  (\mforall{}a:A.  \mforall{}x:T.  \mforall{}L':T  List.    (L'  @  [x]  \mleq{}  L  {}\mRightarrow{}  P[a;L']  {}\mRightarrow{}  P[f[a;x];L'  @  [x]]))
{}\mRightarrow{}  P[accumulate  (with  value  a  and  list  item  x):
f[a;x]
over  list:
L
with  starting  value:
a);L])

Date html generated: 2017_04_17-AM-07_38_43
Last ObjectModification: 2017_02_27-PM-04_13_27

Theory : list_1

Home Index