{ [Info:Type]. [es:EO+(Info)]. [A,B:Type]. [X:EClass(A)]. [P:B  ].
  [num:A  ]. [init:B]. [f:B  A  B]. [e:E].
    es-collect-accum(X;x.num[x];init;b,v.f[b;v];b.P[b])(e)
    = <num[X(e)]
      , list_accum(b,v.f[b;v];
                   init;
                   mapfilter(e.X(e);e'.(num[X(e')] = num[X(e)]);(X)(e)))
      > 
    supposing e  es-collect-accum(X;x.num[x];init;b,v.f[b;v];b.P[b]) }

{ 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-interface-predecessors: (X)(e),  eclass-val: X(e),  in-eclass: e  X,  eclass: EClass(A[eo; e]),  event-ordering+: EO+(Info),  es-E: E,  eq_int: (i = j),  assert: b,  bool: ,  nat: ,  uimplies: b supposing a,  uall: [x:A]. B[x],  so_apply: x[s1;s2],  so_apply: x[s],  lambda: x.A[x],  function: x:A  B[x],  pair: <a, b>,  product: x:A  B[x],  universe: Type,  equal: s = t,  mapfilter: mapfilter(f;P;L),  list_accum: list_accum(x,a.f[x; a];y;l)
Definitions :  eq_id: a = b,  es-prior-interface: prior(X),  exists: x:A. B[x],  es-interface-at: X@i,  tag-by: zT,  fset: FSet{T},  dataflow: dataflow(A;B),  isect2: T1  T2,  b-union: A  B,  fpf-cap: f(x)?z,  record: record(x.T[x]),  cand: A c B,  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),  fpf-sub: f  g,  sq_stable: SqStable(P),  bag-only: only(bs),  bag_only_single: bag_only_single{bag_only_single_compseq_tag_def:o}(x),  es-filter-image: f[X],  rev_uimplies: rev_uimplies(P;Q),  length: ||as||,  eq_knd: a = b,  fpf-dom: x  dom(f),  intensional-universe: IType,  bfalse: ff,  unit: Unit,  int_eq: if a=b  then c  else d,  btrue: tt,  atom_eq: atomeqn def,  sq_type: SQType(T),  sqequal: s ~ t,  union: left + right,  or: P  Q,  append: as @ bs,  guard: {T},  locl: locl(a),  Knd: Knd,  atom: Atom$n,  filter: filter(P;l),  l_member: (x  l),  list: type List,  natural_number: $n,  rationals: ,  real: ,  grp_car: |g|,  int: ,  es-loc: loc(e),  label: ...$L... t,  true: True,  squash: T,  rev_implies: P  Q,  implies: P  Q,  iff: P  Q,  Id: Id,  fpf: a:A fp-> B[a],  strong-subtype: strong-subtype(A;B),  false: False,  collect-event: collect-event(es;X;n;v.num[v];L.P[L];e),  le: A  B,  ge: i  j ,  not: A,  less_than: a < b,  es-first-at: e is first@ i s.t.  e.P[e],  alle-lt: e<e'.P[e],  and: P  Q,  uiff: uiff(P;Q),  void: Void,  subtype: S  T,  atom: Atom,  es-base-E: es-base-E(es),  token: "$token",  es-E-interface: E(X),  subtype_rel: A r B,  quotient: x,y:A//B[x; y],  decide: case b of inl(x) => s[x] | inr(y) => t[y],  ifthenelse: if b then t else f fi ,  top: Top,  all: x:A. B[x],  in-eclass: e  X,  dep-isect: Error :dep-isect,  eq_atom: x =a y,  eq_atom: eq_atom$n(x;y),  record+: record+,  bag: bag(T),  set: {x:A| B[x]} ,  record-select: r.x,  axiom: Ax,  es-interface-predecessors: (X)(e),  eq_int: (i = j),  mapfilter: mapfilter(f;P;L),  apply: f a,  es-collect-accum: es-collect-accum(X;x.num[x];init;a,v.f[a; v];a.P[a]),  eclass-val: X(e),  product: x:A  B[x],  prop: ,  assert: b,  event_ordering: EO,  es-E: E,  nat: ,  uimplies: b supposing a,  equal: s = t,  event-ordering+: EO+(Info),  universe: Type,  so_lambda: x y.t[x; y],  eclass: EClass(A[eo; e]),  uall: [x:A]. B[x],  isect: x:A. B[x],  member: t  T,  function: x:A  B[x],  bool: ,  MaAuto: Error :MaAuto,  CollapseTHEN: Error :CollapseTHEN,  THENM: Error :THENM,  CollapseTHENA: Error :CollapseTHENA,  Auto: Error :Auto,  so_apply: x[s1;s2],  list_accum: list_accum(x,a.f[x; a];y;l),  so_apply: x[s],  es-collect: Collect(X;x.num[x];L.P[L]),  pi2: snd(t),  pi1: fst(t),  pair: <a, b>,  single-bag: {x},  lambda: x.A[x],  so_lambda: x.t[x]
Lemmas :  event-ordering+_wf,  event-ordering+_inc,  subtype_rel_self,  es-base-E_wf,  es-E_wf,  top_wf,  nat_wf,  subtype_rel_wf,  es-collect-accum_wf,  es-interface-subtype_rel2,  es-interface-top,  member_wf,  eclass_wf,  in-eclass_wf,  assert_wf,  bool_wf,  is-collect-accum,  eclass-val_wf,  es-interface-predecessors_wf,  Id_wf,  es-E-interface_wf,  mapfilter_wf,  list_accum_wf,  iff_wf,  rev_implies_wf,  squash_wf,  es-collect-accum-es-collect,  es-loc_wf,  eq_int_wf,  false_wf,  ifthenelse_wf,  true_wf,  le_wf,  not_wf,  list-subtype,  l_member_wf,  uiff_wf,  assert-eq-id,  subtype_base_sq,  bool_subtype_base,  assert_elim,  btrue_wf,  bfalse_wf,  unit_wf,  intensional-universe_wf,  es-interface-val_wf2,  es-collect_wf,  length_wf1,  es-filter-image-val,  is-es-collect,  es-collect-val,  pi1_wf_top,  pi2_wf,  sq_stable__assert

\mforall{}[Info:Type].  \mforall{}[es:EO+(Info)].  \mforall{}[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].  \mforall{}[e:E].
    es-collect-accum(X;x.num[x];init;b,v.f[b;v];b.P[b])(e)
    =  <num[X(e)]
        ,  list\_accum(b,v.f[b;v];init;mapfilter(\mlambda{}e.X(e);\mlambda{}e'.(num[X(e')]  =\msubz{}  num[X(e)]);\mleq{}(X)(e)))
        > 
    supposing  \muparrow{}e  \mmember{}\msubb{}  es-collect-accum(X;x.num[x];init;b,v.f[b;v];b.P[b])


Date html generated: 2011_08_16-PM-05_28_22
Last ObjectModification: 2011_06_20-AM-01_24_15

Home Index