Nuprl Lemma : list_accum-remove-repeats

[T:Type]. ∀[eq:EqDecider(T)]. ∀[A:Type]. ∀[g:T ⟶ A]. ∀[f:A ⟶ A ⟶ A].
  (∀[as:T List]. ∀[n:A].
     (accumulate (with value and list item z):
       f[a;g[z]]
      over list:
        as
      with starting value:
       n)
     accumulate (with value and list item z):
        f[a;g[z]]
       over list:
         remove-repeats(eq;as)
       with starting value:
        n)
     ∈ A)) supposing 
     ((∀x:A. (f[x;x] x ∈ A)) and 
     Assoc(A;λx,y. f[x;y]) and 
     Comm(A;λx,y. f[x;y]))


Proof




Definitions occuring in Statement :  remove-repeats: remove-repeats(eq;L) list_accum: list_accum list: List deq: EqDecider(T) comm: Comm(T;op) assoc: Assoc(T;op) uimplies: supposing a uall: [x:A]. B[x] so_apply: x[s1;s2] so_apply: x[s] all: x:A. B[x] lambda: λx.A[x] function: x:A ⟶ B[x] universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] member: t ∈ T uimplies: supposing a so_lambda: λ2x.t[x] so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] so_apply: x[s] implies:  Q list_accum: list_accum nil: [] it: remove-repeats: remove-repeats(eq;L) list_ind: list_ind all: x:A. B[x] prop: top: Top squash: T deq: EqDecider(T) true: True subtype_rel: A ⊆B guard: {T} iff: ⇐⇒ Q and: P ∧ Q rev_implies:  Q bool: 𝔹 unit: Unit btrue: tt uiff: uiff(P;Q) eqof: eqof(d) bnot: ¬bb ifthenelse: if then else fi  bfalse: ff exists: x:A. B[x] or: P ∨ Q sq_type: SQType(T) assert: b false: False not: ¬A assoc: Assoc(T;op) infix_ap: y comm: Comm(T;op)
Lemmas referenced :  list_induction uall_wf equal_wf list_accum_wf remove-repeats_wf list_wf nil_wf all_wf assoc_wf comm_wf deq_wf list_accum_cons_lemma remove_repeats_cons_lemma squash_wf true_wf filter_wf5 l_member_wf bnot_wf iff_weakening_equal list_accum_nil_lemma filter_nil_lemma filter_cons_lemma bool_wf eqtt_to_assert safe-assert-deq eqff_to_assert bool_cases_sqequal subtype_base_sq bool_subtype_base assert-bnot deq_property and_wf
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation introduction cut thin extract_by_obid sqequalHypSubstitution isectElimination hypothesisEquality sqequalRule lambdaEquality cumulativity applyEquality functionExtensionality hypothesis independent_functionElimination because_Cache lambdaFormation rename dependent_functionElimination isect_memberEquality axiomEquality equalityTransitivity equalitySymmetry functionEquality universeEquality voidElimination voidEquality imageElimination setElimination setEquality natural_numberEquality imageMemberEquality baseClosed independent_isectElimination productElimination unionElimination equalityElimination dependent_pairFormation promote_hyp instantiate hyp_replacement dependent_set_memberEquality independent_pairFormation applyLambdaEquality

Latex:
\mforall{}[T:Type].  \mforall{}[eq:EqDecider(T)].  \mforall{}[A:Type].  \mforall{}[g:T  {}\mrightarrow{}  A].  \mforall{}[f:A  {}\mrightarrow{}  A  {}\mrightarrow{}  A].
    (\mforall{}[as:T  List].  \mforall{}[n:A].
          (accumulate  (with  value  a  and  list  item  z):
              f[a;g[z]]
            over  list:
                as
            with  starting  value:
              n)
          =  accumulate  (with  value  a  and  list  item  z):
                f[a;g[z]]
              over  list:
                  remove-repeats(eq;as)
              with  starting  value:
                n)))  supposing 
          ((\mforall{}x:A.  (f[x;x]  =  x))  and 
          Assoc(A;\mlambda{}x,y.  f[x;y])  and 
          Comm(A;\mlambda{}x,y.  f[x;y]))



Date html generated: 2017_04_17-AM-09_11_48
Last ObjectModification: 2017_02_27-PM-05_19_17

Theory : decidable!equality


Home Index