{ [Info,A:Type]. [X:EClass(A)]. [size:]. [num:A  ]. [P:A  ].
    (Collect(size v's from X with maximum num[v] such that P[v])
    = collectfilterfun()[
      es-interface-accum(collectfilteracc(size;v.num[v];v.P[v]);<-1, 0, inr 0 >;
                         X)]) }

{ Proof }



Definitions occuring in Statement :  collectfilterfun: collectfilterfun(),  collectfilteracc: collectfilteracc(size;v1.num[v1];v2.P[v2]),  es-collect-filter: Collect(size v's from X with maximum num[v] such that P[v]),  es-interface-accum: es-interface-accum(f;x;X),  es-filter-image: f[X],  eclass: EClass(A[eo; e]),  bool: ,  nat_plus: ,  nat: ,  uall: [x:A]. B[x],  so_apply: x[s],  function: x:A  B[x],  pair: <a, b>,  inr: inr x ,  minus: -n,  natural_number: $n,  universe: Type,  equal: s = t
Definitions :  member: t  T,  so_lambda: x y.t[x; y],  eclass: EClass(A[eo; e]),  es-filter-image: f[X],  collectfilterfun: collectfilterfun(),  es-interface-accum: es-interface-accum(f;x;X),  collectfilteracc: collectfilteracc(size;v1.num[v1];v2.P[v2]),  collectfilterfun2: collectfilterfun2(),  collectfilteracc2: collectfilteracc2(size;v1.num[v1];v2.P[v2]),  btrue: tt,  ifthenelse: if b then t else f fi ,  top: Top,  p-compose: f o g,  bfalse: ff,  can-apply: can-apply(f;x),  do-apply: do-apply(f;x),  isl: isl(x),  outl: outl(x),  all: x:A. B[x],  implies: P  Q,  prop: ,  nat: ,  assert: b,  le: A  B,  so_apply: x[s],  so_lambda: x.t[x],  spreadn: spread3,  subtype: S  T,  has-value: has-value(a),  true: True,  false: False,  not: A,  and: P  Q,  pi2: snd(t),  pi1: fst(t),  squash: T,  suptype: suptype(S; T),  cand: A c B,  es-collect-filter: Collect(size v's from X with maximum num[v] such that P[v]),  es-collect-accum: es-collect-accum(X;x.num[x];init;a,v.f[a; v];a.P[a]),  collect_filter: collect_filter(),  uall: [x:A]. B[x],  so_apply: x[s1;s2],  bool: ,  unit: Unit,  iff: P  Q,  nat_plus: ,  es-E-interface: E(X),  uimplies: b supposing a,  sq_type: SQType(T),  guard: {T},  sq_stable: SqStable(P),  it:
Lemmas :  bool_wf,  nat_wf,  nat_plus_wf,  eclass_wf,  es-E_wf,  event-ordering+_inc,  event-ordering+_wf,  in-eclass_wf,  es-interface-top,  iff_weakening_uiff,  assert_wf,  eqtt_to_assert,  not_wf,  uiff_transitivity,  bnot_wf,  eqff_to_assert,  assert_of_bnot,  es-E-interface_wf,  top_wf,  isl_wf,  pi2_wf,  le_wf,  pi1_wf_top,  eq_int_wf,  nat_plus_properties,  assert_of_eq_int,  rational-has-value,  int-rational,  eclass-val_wf,  subtype_base_sq,  bool_subtype_base,  lt_int_wf,  assert_of_lt_int,  le_int_wf,  assert_functionality_wrt_uiff,  bnot_of_lt_int,  assert_of_le_int,  btrue_wf,  nat_properties,  int_inc,  ifthenelse_wf,  bfalse_wf,  not_functionality_wrt_uiff,  assert_elim,  list_accum_equality,  false_wf,  sq_stable_from_decidable,  decidable__le,  es-interface-predecessors_wf,  Id_wf,  es-loc_wf,  list_accum_wf,  collectfilteracc2-as_collect_accum,  es-collect-filter_wf,  es-filter-image_wf,  collectfilterfun2_wf,  es-interface-accum_wf,  collect_accum-wf2,  bor_wf,  band_wf,  eclass-ext

\mforall{}[Info,A:Type].  \mforall{}[X:EClass(A)].  \mforall{}[size:\mBbbN{}\msupplus{}].  \mforall{}[num:A  {}\mrightarrow{}  \mBbbN{}].  \mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].
    (Collect(size  v's  from  X  with  maximum  num[v]  such  that  P[v])
    =  collectfilterfun()[es-interface-accum(collectfilteracc(size;v.num[v];v.P[v]);<-1,  0,  inr  0  >
                                                                                    X)])


Date html generated: 2011_08_16-PM-05_29_38
Last ObjectModification: 2010_11_10-AM-02_05_22

Home Index