{ [Info:Type]. [es:EO+(Info)]. [A:Type]. [f:A  ]. [X:EClass(A)].
  [size:]. [num:A  ]. [P:A  ]. [e:E].
    es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v])(e)
    = <num[X(e)]
      , list-max-aux(v.f[v];mapfilter(e.X(e);
                                      e'.(num[X(e')] = num[X(e)]);
                                      (X)(e)))
      > 
    supposing e  es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v]) }

{ Proof }



Definitions occuring in Statement :  es-collect-filter-max-aux: es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v]) 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_plus: nat: uimplies: b supposing a uall: [x:A]. B[x] top: Top so_apply: x[s] set: {x:A| B[x]}  lambda: x.A[x] function: x:A  B[x] pair: <a, b> product: x:A  B[x] union: left + right int: universe: Type equal: s = t mapfilter: mapfilter(f;P;L) list-max-aux: list-max-aux(x.f[x];L)
Definitions :  assert: b es-collect-filter-max-aux: es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v]) so_apply: x[s] top: Top and: P  Q implies: P  Q member: t  T so_lambda: x.t[x] ifthenelse: if b then t else f fi  rev_implies: P  Q iff: P  Q so_lambda: x y.t[x; y] all: x:A. B[x] btrue: tt true: True prop: nat: uall: [x:A]. B[x] uiff: uiff(P;Q) uimplies: b supposing a so_apply: x[s1;s2] es-E-interface: E(X) sq_type: SQType(T) guard: {T} list-max-aux: list-max-aux(x.f[x];L) has-value: has-value(a) subtype: S  T
Lemmas :  is-collect-filter-max-aux collect-filter-accum-val top_wf nat_wf rational-has-value int_inc ifthenelse_wf lt_int_wf pi1_wf_top eclass-val_wf es-E_wf event-ordering+_wf list-max-aux_wf mapfilter_wf es-E-interface_wf Id_wf es-loc_wf es-interface-predecessors_wf event-ordering+_inc eq_int_wf subtype_base_sq bool_wf bool_subtype_base assert_wf es-interface-val_wf2 assert_elim in-eclass_wf es-collect-filter-max-aux_wf es-interface-subtype_rel2 isl_wf nat_plus_wf eclass_wf

\mforall{}[Info:Type].  \mforall{}[es:EO+(Info)].  \mforall{}[A:Type].  \mforall{}[f:A  {}\mrightarrow{}  \mBbbZ{}].  \mforall{}[X:EClass(A)].  \mforall{}[size:\mBbbN{}\msupplus{}].  \mforall{}[num:A  {}\mrightarrow{}  \mBbbN{}].
\mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[e:E].
    es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v])(e)
    =  <num[X(e)],  list-max-aux(v.f[v];mapfilter(\mlambda{}e.X(e);\mlambda{}e'.(num[X(e')]  =\msubz{}  num[X(e)]);\mleq{}(X)(e)))> 
    supposing  \muparrow{}e  \mmember{}\msubb{}  es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v])


Date html generated: 2011_08_16-PM-05_32_19
Last ObjectModification: 2011_06_20-AM-01_26_31

Home Index