Nuprl Lemma : combine-list-append

[A:Type]. ∀[f:A ⟶ A ⟶ A].
  (∀[as,bs:A List].
     combine-list(x,y.f[x;y];as bs) combine-list(x,y.f[x;y];bs as) ∈ supposing 0 < ||as bs||) supposing 
     (Comm(A;λx,y. f[x;y]) and 
     Assoc(A;λx,y. f[x;y]))


Proof




Definitions occuring in Statement :  combine-list: combine-list(x,y.f[x; y];L) length: ||as|| append: as bs list: List comm: Comm(T;op) assoc: Assoc(T;op) less_than: a < b uimplies: supposing a uall: [x:A]. B[x] so_apply: x[s1;s2] lambda: λx.A[x] function: x:A ⟶ B[x] natural_number: $n universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] member: t ∈ T uimplies: supposing a all: x:A. B[x] or: P ∨ Q append: as bs so_lambda: so_lambda(x,y,z.t[x; y; z]) top: Top so_apply: x[s1;s2;s3] squash: T so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] cons: [a b] combine-list: combine-list(x,y.f[x; y];L) prop: so_apply: x[s] true: True subtype_rel: A ⊆B guard: {T} iff: ⇐⇒ Q and: P ∧ Q rev_implies:  Q implies:  Q comm: Comm(T;op) infix_ap: y
Lemmas referenced :  list-cases list_ind_nil_lemma combine-list_wf append_back_nil product_subtype_list list_ind_cons_lemma length_of_cons_lemma cons_wf reduce_hd_cons_lemma reduce_tl_cons_lemma less_than_wf length_wf append_wf comm_wf assoc_wf equal_wf squash_wf true_wf iff_weakening_equal list_accum_cons_lemma list_accum_wf list_accum_permute
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation introduction cut hypothesisEquality extract_by_obid sqequalHypSubstitution isectElimination thin hypothesis dependent_functionElimination unionElimination sqequalRule isect_memberEquality voidElimination voidEquality applyEquality lambdaEquality imageElimination because_Cache independent_isectElimination functionExtensionality imageMemberEquality baseClosed promote_hyp hypothesis_subsumption productElimination natural_numberEquality cumulativity axiomEquality equalityTransitivity equalitySymmetry universeEquality independent_functionElimination hyp_replacement applyLambdaEquality

Latex:
\mforall{}[A:Type].  \mforall{}[f:A  {}\mrightarrow{}  A  {}\mrightarrow{}  A].
    (\mforall{}[as,bs:A  List].
          combine-list(x,y.f[x;y];as  @  bs)  =  combine-list(x,y.f[x;y];bs  @  as) 
          supposing  0  <  ||as  @  bs||)  supposing 
          (Comm(A;\mlambda{}x,y.  f[x;y])  and 
          Assoc(A;\mlambda{}x,y.  f[x;y]))



Date html generated: 2017_04_17-AM-07_38_52
Last ObjectModification: 2017_02_27-PM-04_12_50

Theory : list_1


Home Index