{ [Info:Type]. [es:EO+(Info)]. [T,A:Type]. [num:A  ].
  [val:A  (  T?)]. [size:]. [X:EClass(A)]. [Z:EClass(T)]. [e:E].
    Collect(size v's from X
             with maximum num= num[v]
             return <num,n,outl(v).2for which
             n=outl(val[v]).1 is maximum
             or <num,-1,prior Zif all isr(val[v])))(e)
    = <num[X(e)]
      , let mx,e' = list-max(e.if isl(val[X(e)])
                               then fst(outl(val[X(e)]))
                               else -1
                               fi ;filter(e'.(num[X(e')] = num[X(e)]);
                                          (X)(e))) 
        in <mx, if (mx = -1) then (Z)'(e) else snd(outl(val[X(e')])) fi >
      > 
    supposing e  Collect(size v's from X
                             with maximum num= num[v]
                             return <num,n,outl(v).2for which
                             n=outl(val[v]).1 is maximum
                             or <num,-1,prior Zif all isr(val[v]))) }

{ Proof }



Definitions occuring in Statement :  es-collect-opt-max: es-collect-opt-max es-prior-val: (X)' 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 outl: outl(x) isl: isl(x) eq_int: (i = j) assert: b ifthenelse: if b then t else f fi  nat_plus: nat: uimplies: b supposing a uall: [x:A]. B[x] so_apply: x[s] pi1: fst(t) pi2: snd(t) unit: Unit lambda: x.A[x] function: x:A  B[x] spread: spread def pair: <a, b> product: x:A  B[x] union: left + right minus: -n natural_number: $n int: universe: Type equal: s = t filter: filter(P;l) list-max: list-max(x.f[x];L)
Definitions :  implies: P  Q Id: Id fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A and: P  Q uiff: uiff(P;Q) axiom: Ax pi2: snd(t) es-prior-val: (X)' es-interface-predecessors: (X)(e) eq_int: (i = j) filter: filter(P;l) natural_number: $n minus: -n outl: outl(x) pi1: fst(t) isl: isl(x) list-max: list-max(x.f[x];L) spread: spread def pair: <a, b> eclass-val: X(e) void: Void es-E-interface: E(X) decide: case b of inl(x) =s[x] | inr(y) =t[y] less_than: a < b int: so_apply: x[s] so_lambda: x.t[x] es-collect-opt-max: es-collect-opt-max in-eclass: e  X prop: assert: b uimplies: b supposing a subtype: S  T subtype_rel: A r B atom: Atom apply: f a top: Top es-base-E: es-base-E(es) token: "$token" ifthenelse: if b then t else f fi  record-select: r.x event_ordering: EO es-E: E lambda: x.A[x] set: {x:A| B[x]}  so_lambda: x y.t[x; y] eclass: EClass(A[eo; e]) nat_plus: unit: Unit product: x:A  B[x] union: left + right nat: dep-isect: Error :dep-isect,  eq_atom: x =a y eq_atom: eq_atom$n(x;y) record+: record+ all: x:A. B[x] function: x:A  B[x] isect: x:A. B[x] uall: [x:A]. B[x] universe: Type member: t  T event-ordering+: EO+(Info) equal: s = t tactic: Error :tactic,  inr: inr x  real: grp_car: |g| inl: inl x  false: False length: ||as|| bool: es-loc: loc(e) spreadn: spread4 map-class: (f[v] where v from X) btrue: tt alle-lt: e<e'.P[e] sqequal: s ~ t es-collect-filter-max: es-collect-filter-max es-interface-pair-prior: X;Y es-first-at: e is first@ i s.t.  e.P[e] cond-class: [X?Y] or: P  Q guard: {T} eq_knd: a = b l_member: (x  l) fpf-dom: x  dom(f) MaAuto: Error :MaAuto,  CollapseTHEN: Error :CollapseTHEN,  ExRepD: Error :ExRepD,  Auto: Error :Auto,  CollapseTHENA: Error :CollapseTHENA,  THENM: Error :THENM,  RepUR: Error :RepUR,  MaAuto: Error :MaAuto,  limited-type: LimitedType intensional-universe: IType sq_type: SQType(T) bnot: b bor: p q band: p  q bimplies: p  q es-eq-E: e = e' eq_lnk: a = b eq_id: a = b eq_str: Error :eq_str,  deq-all-disjoint: deq-all-disjoint(eq;ass;bs) deq-disjoint: deq-disjoint(eq;as;bs) deq-member: deq-member(eq;x;L) q_le: q_le(r;s) q_less: q_less(r;s) qeq: qeq(r;s) eq_type: eq_type(T;T') b-exists: (i<n.P[i])_b bl-exists: (xL.P[x])_b bl-all: (xL.P[x])_b dcdr-to-bool: [d] infix_ap: x f y grp_blt: a < b set_blt: a < b null: null(as) le_int: i z j lt_int: i <z j eq_bool: p =b q iff: P  Q bfalse: ff cand: A c B mapfilter: mapfilter(f;P;L) list: type List can-apply: can-apply(f;x) true: True exists: x:A. B[x] select: l[i] remove-repeats: remove-repeats(eq;L) last: last(L) hd: hd(l) cons: [car / cdr] map: map(f;as) rev_implies: P  Q append: as @ bs sq_stable: SqStable(P) squash: T fpf-sub: f  g modulus-of-ccontinuity: modulus-of-ccontinuity(omega;I;f) partitions: partitions(I;p) i-member: r  I rleq: x  y rnonneg: rnonneg(r) req: x = y is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) is_list_splitting: is_list_splitting(T;L;LL;L2;f) nil: [] tl: tl(l) Knd: Knd locl: locl(a) IdLnk: IdLnk record: record(x.T[x])
Lemmas :  es-E-interface-subtype_rel not_functionality_wrt_iff squash_wf set_subtype_base int_subtype_base product_subtype_base bool_sq iff_transitivity pi1_wf es-interface-val_wf2 not_functionality_wrt_uiff iff_wf rev_implies_wf map_wf list-max-map nil_member length_wf_nat length_wf1 non_neg_length length_cons assert_of_eq_int es-interface-predecessors-member sq_stable__assert true_wf false_wf member_filter l_member_wf l_member_subtype assert_elim bool_subtype_base subtype_base_sq es-loc_wf eq_int_wf mapfilter_wf collect-filter-max-val es-prior-val_wf is-pair-prior bnot_wf assert_of_bnot eqff_to_assert uiff_transitivity not_wf eqtt_to_assert iff_weakening_uiff bool_wf isl_wf intensional-universe_wf pair-prior-val uiff_inversion is-collect-opt-max es-collect-filter-max_wf es-interface-pair-prior_wf map-class-val pi1_wf_top btrue_wf is-map-class es-base-E_wf es-E_wf top_wf nat_wf subtype_rel_wf event-ordering+_wf event-ordering+_inc subtype_rel_self es-collect-opt-max_wf es-interface-subtype_rel2 es-interface-top member_wf eclass_wf in-eclass_wf assert_wf nat_plus_wf unit_wf eclass-val_wf es-interface-predecessors_wf Id_wf es-E-interface_wf filter_wf list-max_wf outl_wf pi2_wf ifthenelse_wf

\mforall{}[Info:Type].  \mforall{}[es:EO+(Info)].  \mforall{}[T,A:Type].  \mforall{}[num:A  {}\mrightarrow{}  \mBbbN{}].  \mforall{}[val:A  {}\mrightarrow{}  (\mBbbN{}  \mtimes{}  T?)].  \mforall{}[size:\mBbbN{}\msupplus{}].
\mforall{}[X:EClass(A)].  \mforall{}[Z:EClass(T)].  \mforall{}[e:E].
    Collect(size  v's  from  X
                      with  maximum  num=  num[v]
                      return  <num,n,outl(v).2>  for  which
                      n=outl(val[v]).1  is  maximum
                      or  <num,-1,prior  Z>  if  all  isr(val[v])))(e)
    =  <num[X(e)]
        ,  let  mx,e'  =  list-max(e.if  isl(val[X(e)])  then  fst(outl(val[X(e)]))  else  -1  fi  ;
                                                      filter(\mlambda{}e'.(num[X(e')]  =\msubz{}  num[X(e)]);\mleq{}(X)(e))) 
            in  <mx,  if  (mx  =\msubz{}  -1)  then  (Z)'(e)  else  snd(outl(val[X(e')]))  fi  >
        > 
    supposing  \muparrow{}e  \mmember{}\msubb{}  Collect(size  v's  from  X
                                                      with  maximum  num=  num[v]
                                                      return  <num,n,outl(v).2>  for  which
                                                      n=outl(val[v]).1  is  maximum
                                                      or  <num,-1,prior  Z>  if  all  isr(val[v])))


Date html generated: 2011_08_16-PM-06_06_42
Last ObjectModification: 2011_06_20-AM-01_48_01

Home Index