{ [Info,A,B:Type]. [X:EClass(A)]. [P:B  ]. [num:A  ]. [init:B].
  [f:B  A  B].
    (es-collect-accum(X;x.num[x];init;b,v.f[b;v];b.P[b])
    = nL.{<fst(nL), list_accum(b,v.f[b;v];init;snd(nL))>}[
      Collect(X;x.num[x];L.P[list_accum(b,v.f[b;v];init;L)])]) }

{ Proof }



Definitions occuring in Statement :  es-collect-accum: es-collect-accum(X;x.num[x];init;a,v.f[a; v];a.P[a]) es-collect: Collect(X;x.num[x];L.P[L]) es-filter-image: f[X] eclass: EClass(A[eo; e]) bool: nat: uall: [x:A]. B[x] so_apply: x[s1;s2] so_apply: x[s] pi1: fst(t) pi2: snd(t) lambda: x.A[x] function: x:A  B[x] pair: <a, b> product: x:A  B[x] universe: Type equal: s = t list_accum: list_accum(x,a.f[x; a];y;l) single-bag: {x}
Definitions :  empty-bag: {} bag_size_empty: bag_size_empty{bag_size_empty_compseq_tag_def:o} bag_only_single: bag_only_single{bag_only_single_compseq_tag_def:o}(x) bag_size_single: bag_size_single{bag_size_single_compseq_tag_def:o}(x) false: False limited-type: LimitedType bfalse: ff btrue: tt eq_bool: p =b q lt_int: i <z j le_int: i z j eq_int: (i = j) null: null(as) set_blt: a < b grp_blt: a < b infix_ap: x f y dcdr-to-bool: [d] bl-all: (xL.P[x])_b bl-exists: (xL.P[x])_b b-exists: (i<n.P[i])_b eq_type: eq_type(T;T') qeq: qeq(r;s) q_less: q_less(r;s) q_le: q_le(r;s) deq-member: deq-member(eq;x;L) deq-disjoint: deq-disjoint(eq;as;bs) deq-all-disjoint: deq-all-disjoint(eq;ass;bs) eq_id: a = b eq_lnk: a = b es-eq-E: e = e' es-bless: e <loc e' es-ble: e loc e' bimplies: p  q band: p  q bor: p q in-eclass: e  X bnot: b int: unit: Unit union: left + right implies: P  Q collect_accm: collect_accm(v.P[v];v.num[v]) collect_accum: collect_accum(x.num[x];init;a,v.f[a; v];a.P[a]) collect_filter: collect_filter() es-interface-accum: es-interface-accum(f;x;X) eclass-compose1: f o X record-select: r.x eq_atom: x =a y eq_atom: eq_atom$n(x;y) decide: case b of inl(x) =s[x] | inr(y) =t[y] ifthenelse: if b then t else f fi  dep-isect: Error :dep-isect,  record+: record+ bag: bag(T) void: Void prop: length: ||as|| natural_number: $n subtype: S  T event_ordering: EO es-E: E event-ordering+: EO+(Info) top: Top list: type List assert: b set: {x:A| B[x]}  so_lambda: x.t[x] fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b uimplies: b supposing a and: P  Q uiff: uiff(P;Q) subtype_rel: A r B all: x:A. B[x] axiom: Ax es-collect: Collect(X;x.num[x];L.P[L]) pi2: snd(t) list_accum: list_accum(x,a.f[x; a];y;l) pi1: fst(t) pair: <a, b> single-bag: {x} lambda: x.A[x] es-filter-image: f[X] so_apply: x[s1;s2] apply: f a so_apply: x[s] es-collect-accum: es-collect-accum(X;x.num[x];init;a,v.f[a; v];a.P[a]) product: x:A  B[x] equal: s = t universe: Type so_lambda: x y.t[x; y] eclass: EClass(A[eo; e]) bool: uall: [x:A]. B[x] member: t  T nat: isect: x:A. B[x] function: x:A  B[x] RepUR: Error :RepUR,  skip: Error :skip,  CollapseTHEN: Error :CollapseTHEN,  Auto: Error :Auto,  es-interface-predecessors: (X)(e) inr: inr x  nil: [] minus: -n eclass-val: X(e) inl: inl x  spreadn: spread3 sqequal: s ~ t atom: Atom es-base-E: es-base-E(es) token: "$token" quotient: x,y:A//B[x; y] tl: tl(l) hd: hd(l) cons: [car / cdr] append: as @ bs es-E-interface: E(X) es-prior-interface: prior(X) true: True squash: T es-causl: (e < e') real: grp_car: |g| add: n + m subtract: n - m exists: x:A. B[x] strongwellfounded: SWellFounded(R[x; y]) spread: spread def has-value: has-value(a) or: P  Q eq_knd: a = b callbyvalue: callbyvalue sq_type: SQType(T) l_member: (x  l) p-outcome: Outcome rationals: filter: filter(P;l) qabs: |r| es-le: e loc e'  es-locl: (e <loc e') es-p-le: e p e' es-causle: e c e' es-p-locl: e pe' causal-predecessor: causal-predecessor(es;p) record: record(x.T[x]) atom: Atom$n intensional-universe: IType fpf-sub: f  g map-class: (f[v] where v from X) deq: EqDecider(T) ma-state: State(ds) fpf-dom: x  dom(f) guard: {T} class-program: ClassProgram(T) fpf-cap: f(x)?z map: map(f;as) es-loc: loc(e) Id: Id isl: isl(x) is_list_splitting: is_list_splitting(T;L;LL;L2;f) is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) req: x = y rnonneg: rnonneg(r) rleq: x  y i-member: r  I partitions: partitions(I;p) modulus-of-ccontinuity: modulus-of-ccontinuity(omega;I;f) sq_stable: SqStable(P) decide_bfalse: decide_bfalse{decide_bfalse_compseq_tag_def:o}(v11.g[v11]; v21.f[v21]) label: ...$L... t cand: A c B sum-map: f[x] for x  L sum: (f[x] | x < k) imax: imax(a;b) multiply: n * m IdLnk: IdLnk locl: locl(a) Knd: Knd divides: b | a assoced: a ~ b set_leq: a  b set_lt: a <p b grp_lt: a < b l_contains: A  B reducible: reducible(a) prime: prime(a) l_exists: (xL. P[x]) l_all: (xL.P[x]) fun-connected: y is f*(x) qle: r  s qless: r < s q-rel: q-rel(r;x) sq_exists: x:{A| B[x]} i-finite: i-finite(I) i-closed: i-closed(I) fset-member: a  s f-subset: xs  ys fset-closed: (s closed under fs) l_disjoint: l_disjoint(T;l1;l2) cs-not-completed: in state s, a has not completed inning i cs-archived: by state s, a archived v in inning i cs-passed: by state s, a passed inning i without archiving a value cs-inning-committed: in state s, inning i has committed v cs-inning-committable: in state s, inning i could commit v  cs-archive-blocked: in state s, ws' blocks ws from archiving v in inning i cs-precondition: state s may consider v in inning i existse-before: e<e'.P[e] existse-le: ee'.P[e] alle-lt: e<e'.P[e] alle-le: ee'.P[e] alle-between1: e[e1,e2).P[e] existse-between1: e[e1,e2).P[e] alle-between2: e[e1,e2].P[e] existse-between2: e[e1,e2].P[e] existse-between3: e(e1,e2].P[e] es-fset-loc: i  locs(s) es-r-immediate-pred: es-r-immediate-pred(es;R;e';e) same-thread: same-thread(es;p;e;e') collect-event: collect-event(es;X;n;v.num[v];L.P[L];e) decidable: Dec(P) iff: P  Q uni_sat: a = !x:T. Q[x] inv_funs: InvFuns(A;B;f;g) inject: Inj(A;B;f) eqfun_p: IsEqFun(T;eq) refl: Refl(T;x,y.E[x; y]) urefl: UniformlyRefl(T;x,y.E[x; y]) sym: Sym(T;x,y.E[x; y]) usym: UniformlySym(T;x,y.E[x; y]) trans: Trans(T;x,y.E[x; y]) utrans: UniformlyTrans(T;x,y.E[x; y]) anti_sym: AntiSym(T;x,y.R[x; y]) uanti_sym: UniformlyAntiSym(T;x,y.R[x; y]) connex: Connex(T;x,y.R[x; y]) uconnex: uconnex(T; x,y.R[x; y]) coprime: CoPrime(a,b) ident: Ident(T;op;id) assoc: Assoc(T;op) comm: Comm(T;op) inverse: Inverse(T;op;id;inv) bilinear: BiLinear(T;pl;tm) bilinear_p: IsBilinear(A;B;C;+a;+b;+c;f) action_p: IsAction(A;x;e;S;f) dist_1op_2op_lr: Dist1op2opLR(A;1op;2op) fun_thru_1op: fun_thru_1op(A;B;opa;opb;f) fun_thru_2op: FunThru2op(A;B;opa;opb;f) cancel: Cancel(T;S;op) monot: monot(T;x,y.R[x; y];f) monoid_p: IsMonoid(T;op;id) group_p: IsGroup(T;op;id;inv) monoid_hom_p: IsMonHom{M1,M2}(f) grp_leq: a  b integ_dom_p: IsIntegDom(r) prime_ideal_p: IsPrimeIdeal(R;P) no_repeats: no_repeats(T;l) value-type: value-type(T) valueall-type: valueall-type(T)
Lemmas :  union_subtype_base list_subtype_base isect_subtype_base sq_stable__all squash_wf sq_stable_from_decidable decidable__le length_wf_nat length_nil length_wf2 bfalse_wf sq_stable__assert isl_wf collect_accm-wf2 subtype_rel_list Id_wf es-interface-predecessors_wf list_accum_append es-loc_wf intensional-universe_wf eclass-val_wf eclass-val_wf2 es-prior-interface-causl false_wf true_wf assert_elim list-subtype l_member_wf list-set-type2 subtype_base_sq bool_subtype_base real-has-value nat_inc_real lt_int_wf int_inc_real assert_of_lt_int assert_functionality_wrt_uiff bnot_of_lt_int assert_of_le_int le_int_wf ge_wf nat_properties es-causl-swellfnd le_wf es-causl_wf es-interface-predecessors-step-sq es-prior-interface_wf1 ifthenelse_wf append_wf es-prior-interface_wf es-interface-subtype_rel2 es-E-interface_wf es-base-E_wf subtype_rel_self nat_wf es-filter-image_wf assert_wf es-collect_wf es-collect-accum_wf event-ordering+_inc es-E_wf event-ordering+_wf eclass-ext single-bag_wf list_accum_wf pi2_wf pi1_wf eclass_wf bool_wf length_wf1 pi1_wf_top top_wf member_wf bag_wf eqtt_to_assert not_wf uiff_transitivity eqff_to_assert assert_of_bnot bnot_wf in-eclass_wf subtype_rel_wf es-interface-top empty-bag_wf

\mforall{}[Info,A,B:Type].  \mforall{}[X:EClass(A)].  \mforall{}[P:B  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[num:A  {}\mrightarrow{}  \mBbbN{}].  \mforall{}[init:B].  \mforall{}[f:B  {}\mrightarrow{}  A  {}\mrightarrow{}  B].
    (es-collect-accum(X;x.num[x];init;b,v.f[b;v];b.P[b])
    =  \mlambda{}nL.\{<fst(nL),  list\_accum(b,v.f[b;v];init;snd(nL))>\}[
        Collect(X;x.num[x];L.P[list\_accum(b,v.f[b;v];init;L)])])


Date html generated: 2011_08_16-PM-05_27_42
Last ObjectModification: 2011_06_20-AM-01_23_59

Home Index