{ [B:Type]. [n:]. [A:n  Type]. [bags:k:n  bag(A k)].
  [f:funtype(n;A;bag(B))]. [b:B].
    (bag-member(B;b;concat-lifting(n;f;bags))
     lst:k:n  (A k)
          (([k:n]. bag-member(A k;lst k;bags k))
           bag-member(B;b;uncurry-rev(n;f) lst))) }

{ Proof }



Definitions occuring in Statement :  concat-lifting: concat-lifting(n;f;bags),  uncurry-rev: uncurry-rev(n;f),  int_seg: {i..j},  nat: ,  uall: [x:A]. B[x],  exists: x:A. B[x],  iff: P  Q,  squash: T,  and: P  Q,  apply: f a,  function: x:A  B[x],  natural_number: $n,  universe: Type,  bag-member: bag-member(T;x;bs),  bag: bag(T),  funtype: funtype(n;A;T)
Definitions :  D: Error :D,  Unfold: Error :Unfold,  CollapseTHENA: Error :CollapseTHENA,  sqequal: s ~ t,  subtract: n - m,  equal: s = t,  function: x:A  B[x],  int_seg: {i..j},  universe: Type,  lambda: x.A[x],  apply: f a,  add: n + m,  natural_number: $n,  Try: Error :Try,  Complete: Error :Complete,  CollapseTHEN: Error :CollapseTHEN,  Auto: Error :Auto,  quotient: x,y:A//B[x; y],  bag: bag(T),  set: {x:A| B[x]} ,  squash: T,  implies: P  Q,  product: x:A  B[x],  and: P  Q,  iff: P  Q,  isect: x:A. B[x],  uall: [x:A]. B[x],  nat: ,  funtype: funtype(n;A;T),  primrec: primrec(n;b;c),  member: t  T,  all: x:A. B[x],  int: ,  subtype: S  T,  grp_car: |g|,  real: ,  concat-lifting: concat-lifting(n;f;bags),  rationals: ,  lelt: i  j < k,  less_than: a < b,  le: A  B,  not: A,  false: False,  prop: ,  void: Void,  subtype_rel: A r B,  uiff: uiff(P;Q),  uimplies: b supposing a,  ge: i  j ,  strong-subtype: strong-subtype(A;B),  ycomb: Y,  p-outcome: Outcome,  fpf: a:A fp-> B[a],  eclass: EClass(A[eo; e]),  sq_type: SQType(T),  guard: {T},  pair: <a, b>,  exists: x:A. B[x],  bag-member: bag-member(T;x;bs),  so_lambda: x.t[x],  rev_implies: P  Q,  concat-lifting-list: concat-lifting-list(n;bags),  uncurry-rev: uncurry-rev(n;f),  uncurry-gen: uncurry-gen(n),  true: True
Lemmas :  uncurry-rev_wf,  concat-lifting-list_wf,  rev_implies_wf,  iff_wf,  squash_wf,  uall_wf,  bag-member_wf,  concat-lifting-list-member,  nat_wf,  member_wf,  bag_wf,  funtype_wf,  subtype_rel_wf,  subtype_base_sq,  int_subtype_base,  int_seg_wf,  le_wf,  not_wf,  false_wf

\mforall{}[B:Type].  \mforall{}[n:\mBbbN{}].  \mforall{}[A:\mBbbN{}n  {}\mrightarrow{}  Type].  \mforall{}[bags:k:\mBbbN{}n  {}\mrightarrow{}  bag(A  k)].  \mforall{}[f:funtype(n;A;bag(B))].  \mforall{}[b:B].
    (bag-member(B;b;concat-lifting(n;f;bags))
    \mLeftarrow{}{}\mRightarrow{}  \mdownarrow{}\mexists{}lst:k:\mBbbN{}n  {}\mrightarrow{}  (A  k)
                ((\mforall{}[k:\mBbbN{}n].  bag-member(A  k;lst  k;bags  k))  \mwedge{}  bag-member(B;b;uncurry-rev(n;f)  lst)))


Date html generated: 2011_08_17-PM-06_08_54
Last ObjectModification: 2011_06_01-PM-07_38_49

Home Index