{ [Info,A,B:Type]. [g:B  A]. [h:A  B].
    ([f:A  ]. [X:EClass(B)]. [size:]. [num:A  ]. [P:A  ].
       ((<fst(tr)
       , fst(snd(tr))
       , h[snd(snd(tr))]where tr from ...)
       = Collect(size x's from X  with maximum num[g[x]] such that P[g[x]]
                  return <num[g[x]],n,xwith n = maximum f[g[x]]))) supposing 
       ((b:B. (h[g[b]] = b)) and 
       (a:A. (g[h[a]] = a))) }

{ Proof }



Definitions occuring in Statement :  es-collect-filter-max: es-collect-filter-max map-class: (f[v] where v from X) eclass: EClass(A[eo; e]) bool: nat_plus: nat: uimplies: b supposing a uall: [x:A]. B[x] so_apply: x[s] pi1: fst(t) pi2: snd(t) all: x:A. B[x] set: {x:A| B[x]}  function: x:A  B[x] pair: <a, b> product: x:A  B[x] int: universe: Type equal: s = t
Definitions :  eclass-val: X(e) l_member: (x  l) record-select: r.x eq_atom: x =a y eq_atom: eq_atom$n(x;y) dep-isect: Error :dep-isect,  record+: record+ true: True false: False decide: case b of inl(x) =s[x] | inr(y) =t[y] ifthenelse: if b then t else f fi  rev_implies: P  Q in-eclass: e  X assert: b implies: P  Q iff: P  Q void: Void limited-type: LimitedType subtype: S  T event_ordering: EO es-E: E event-ordering+: EO+(Info) lambda: x.A[x] top: Top 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 and: P  Q uiff: uiff(P;Q) subtype_rel: A r B axiom: Ax es-collect-filter-max: es-collect-filter-max pi2: snd(t) pi1: fst(t) pair: <a, b> map-class: (f[v] where v from X) apply: f a so_apply: x[s] set: {x:A| B[x]}  product: x:A  B[x] bool: nat: nat_plus: so_lambda: x y.t[x; y] eclass: EClass(A[eo; e]) int: prop: all: x:A. B[x] equal: s = t universe: Type uall: [x:A]. B[x] function: x:A  B[x] uimplies: b supposing a isect: x:A. B[x] member: t  T Auto: Error :Auto,  Complete: Error :Complete,  Try: Error :Try,  CollapseTHEN: Error :CollapseTHEN,  tactic: Error :tactic,  sqequal: s ~ t union: left + right es-E-interface: E(X) atom: Atom token: "$token" it: int_eq: if a=b  then c  else d unit: Unit bfalse: ff b-union: A  B fset: FSet{T} isect2: T1  T2 record: record(x.T[x]) tag-by: zT cons: [car / cdr] es-interface-at: X@i map: map(f;as) nil: [] class-program: ClassProgram(T) fpf-dom: x  dom(f) ma-state: State(ds) deq: EqDecider(T) atom: Atom$n Knd: Knd locl: locl(a) append: as @ bs atom_eq: atomeqn def or: P  Q intensional-universe: IType natural_number: $n mapfilter: mapfilter(f;P;L) band: p  q can-apply: can-apply(f;x) isl: isl(x) filter: filter(P;l) list: type List es-interface-predecessors: (X)(e) btrue: tt eq_int: (i = j) grp_car: |g| real: fpf-sub: f  g 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) no_repeats: no_repeats(T;l) prime_ideal_p: IsPrimeIdeal(R;P) integ_dom_p: IsIntegDom(r) grp_leq: a  b monoid_hom_p: IsMonHom{M1,M2}(f) group_p: IsGroup(T;op;id;inv) monoid_p: IsMonoid(T;op;id) monot: monot(T;x,y.R[x; y];f) cancel: Cancel(T;S;op) fun_thru_2op: FunThru2op(A;B;opa;opb;f) fun_thru_1op: fun_thru_1op(A;B;opa;opb;f) dist_1op_2op_lr: Dist1op2opLR(A;1op;2op) action_p: IsAction(A;x;e;S;f) bilinear_p: IsBilinear(A;B;C;+a;+b;+c;f) bilinear: BiLinear(T;pl;tm) inverse: Inverse(T;op;id;inv) comm: Comm(T;op) assoc: Assoc(T;op) ident: Ident(T;op;id) coprime: CoPrime(a,b) connex: Connex(T;x,y.R[x; y]) anti_sym: AntiSym(T;x,y.R[x; y]) trans: Trans(T;x,y.E[x; y]) sym: Sym(T;x,y.E[x; y]) refl: Refl(T;x,y.E[x; y]) eqfun_p: IsEqFun(T;eq) inv_funs: InvFuns(A;B;f;g) uni_sat: a = !x:T. Q[x] sq_stable: SqStable(P) collect-event: collect-event(es;X;n;v.num[v];L.P[L];e) same-thread: same-thread(es;p;e;e') es-r-immediate-pred: es-r-immediate-pred(es;R;e';e) es-fset-loc: i  locs(s) existse-between3: e(e1,e2].P[e] existse-between2: e[e1,e2].P[e] alle-between2: e[e1,e2].P[e] existse-between1: e[e1,e2).P[e] alle-between1: e[e1,e2).P[e] alle-le: ee'.P[e] existse-le: ee'.P[e] existse-before: e<e'.P[e] es-causle: e c e' es-le: e loc e'  es-locl: (e <loc e') es-causl: (e < e') cs-precondition: state s may consider v in inning i cs-archive-blocked: in state s, ws' blocks ws from archiving v in inning i cs-inning-committable: in state s, inning i could commit v  cs-inning-committed: in state s, inning i has committed v cs-passed: by state s, a passed inning i without archiving a value cs-archived: by state s, a archived v in inning i cs-not-completed: in state s, a has not completed inning i fset-closed: (s closed under fs) f-subset: xs  ys fset-member: a  s p-outcome: Outcome q-rel: q-rel(r;x) qless: r < s qle: r  s fun-connected: y is f*(x) l_disjoint: l_disjoint(T;l1;l2) prime: prime(a) reducible: reducible(a) inject: Inj(A;B;f) l_contains: A  B l_exists: (xL. P[x]) l_all: (xL.P[x]) infix_ap: x f y cand: A c B grp_lt: a < b set_lt: a <p b set_leq: a  b assoced: a ~ b divides: b | a exists: x:A. B[x] decidable: Dec(P) squash: T Id: Id es-loc: loc(e) length: ||as|| es-first-at: e is first@ i s.t.  e.P[e] alle-lt: e<e'.P[e] sq_type: SQType(T) guard: {T} fpf-cap: f(x)?z es-base-E: es-base-E(es) cond-class: [X?Y] eq_knd: a = b MaAuto: Error :MaAuto,  label: ...$L... t list-max: list-max(x.f[x];L) CollapseTHENA: Error :CollapseTHENA,  RepeatFor: Error :RepeatFor,  es-prior-interface: prior(X) bag: bag(T) modulus-of-ccontinuity: modulus-of-ccontinuity(omega;I;f) Unfold: Error :Unfold,  D: Error :D,  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) es-collect-accum: es-collect-accum(X;x.num[x];init;a,v.f[a; v];a.P[a]) es-collect-filter-max-aux: es-collect-filter-max-aux(X;size;v.num[v];v.P[v];v.f[v]) Subst': Error :Subst',  combination: Combination(n;T) listp: A List RepUR: Error :RepUR,  compose: f o g IdLnk: IdLnk es-filter-image: f[X]
Lemmas :  list_subtype_base set_subtype_base int_subtype_base product_subtype_base list-max-map map_wf map-map es-interface-predecessors-sqequal length-map sq_stable__assert pos_length2 list-max_wf mapfilter_wf collect-filter-max-val uiff_inversion es-base-E_wf es-interface-subtype_rel es-interface-predecessors-equal-subtype decidable__assert sq_stable_from_decidable eq_int_wf assert_elim map-class-val es-E-interface_wf Id_wf es-interface-predecessors_wf filter_wf squash_wf es-loc_wf length_wf1 bool_subtype_base subtype_base_sq length_wf_nat intensional-universe_wf assert-eq-id filter_type l_member_wf list-subtype subtype_rel_set subtype_rel_list nat_plus_properties filter_wf_top es-interface-val_wf2 es-interface-val_wf l_all_wf list-set-type2 sq_stable__equal sq_stable_wf property-from-l_member length-map-sq le_wf es-locl_wf band_wf not_wf alle-lt_wf es-first-at_wf is-collect-filter-max subtype_rel_product subtype_rel_simple_product bfalse_wf unit_wf btrue_wf subtype_rel_self es-interface-subtype_rel2 is-map-class rev_implies_wf iff_wf nat_wf pi1_wf pi2_wf es-collect-filter-max_wf map-class_wf event-ordering+_wf event-ordering+_inc es-E_wf eclass_wf nat_plus_wf bool_wf es-interface-extensionality pi1_wf_top top_wf member_wf subtype_rel_wf assert_wf false_wf ifthenelse_wf in-eclass_wf true_wf es-interface-top eclass-val_wf

\mforall{}[Info,A,B:Type].  \mforall{}[g:B  {}\mrightarrow{}  A].  \mforall{}[h:A  {}\mrightarrow{}  B].
    (\mforall{}[f:A  {}\mrightarrow{}  \mBbbZ{}].  \mforall{}[X:EClass(B)].  \mforall{}[size:\mBbbN{}\msupplus{}].  \mforall{}[num:A  {}\mrightarrow{}  \mBbbN{}].  \mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].
          ((<fst(tr)
          ,  fst(snd(tr))
          ,  h[snd(snd(tr))]>  where  tr  from  Collect(size  v's  from  (g[x]  where  x  from  X)
                                                                                              with  maximum  num[v]  such  that  P[v]
                                                                                              return  <num[v],n,v>  with  n  =  maximum  f[v]))
          =  Collect(size  x's  from  X    with  maximum  num[g[x]]  such  that  P[g[x]]
                                return  <num[g[x]],n,x>  with  n  =  maximum  f[g[x]])))  supposing 
          ((\mforall{}b:B.  (h[g[b]]  =  b))  and 
          (\mforall{}a:A.  (g[h[a]]  =  a)))


Date html generated: 2011_08_16-PM-05_33_13
Last ObjectModification: 2010_12_22-PM-09_36_31

Home Index