{ 
[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