{ 
[size:
]. 
[A:Type]. 
[num:A 
 
]. 
[P:A 
 
].
    (collectfilteracc2(size;x.num[x];v.P[v])
    = collect_accum(x.num[x];<0
      , tt
      >p,v.let n,ok = p 
            in <n + 1, ok 
 P[v]>p.(fst(p) =
 size) 
(
(snd(p))))) }
{ Proof }
Definitions occuring in Statement : 
collectfilteracc2: collectfilteracc2(size;v1.num[v1];v2.P[v2]), 
collect_accum: collect_accum(x.num[x];init;a,v.f[a; v];a.P[a]), 
isl: isl(x), 
eq_int: (i =
 j), 
bor: p 
q, 
band: p 
 q, 
bnot: 
b, 
assert:
b, 
btrue: tt, 
bool:
, 
nat_plus: 
, 
nat:
, 
uall:
[x:A]. B[x], 
top: Top, 
so_apply: x[s], 
pi1: fst(t), 
pi2: snd(t), 
le: A 
 B, 
implies: P 
 Q, 
and: P 
 Q, 
set: {x:A| B[x]} , 
function: x:A 
 B[x], 
spread: spread def, 
pair: <a, b>, 
product: x:A 
 B[x], 
union: left + right, 
add: n + m, 
natural_number: $n, 
int:
, 
universe: Type, 
equal: s = t
Definitions : 
uall:
[x:A]. B[x], 
top: Top, 
and: P 
 Q, 
assert:
b, 
pi2: snd(t), 
pi1: fst(t), 
implies: P 
 Q, 
isl: isl(x), 
collectfilteracc2: collectfilteracc2(size;v1.num[v1];v2.P[v2]), 
so_apply: x[s], 
collect_accum: collect_accum(x.num[x];init;a,v.f[a; v];a.P[a]), 
btrue: tt, 
band: p 
 q, 
bor: p 
q, 
bnot: 
b, 
member: t 
 T, 
spreadn: spread3, 
ifthenelse: if b then t else f fi , 
bfalse: ff, 
prop:
, 
so_lambda: 
x.t[x], 
all:
x:A. B[x], 
subtype: S 
 T, 
has-value: has-value(a), 
true: True, 
nat_plus: 
, 
nat:
, 
bool:
, 
cand: A c
 B, 
unit: Unit, 
iff: P 

 Q, 
false: False, 
uimplies: b supposing a, 
it:
, 
not:
A
Lemmas : 
nat_wf, 
bool_wf, 
top_wf, 
assert_wf, 
pi2_wf, 
pi1_wf_top, 
isl_wf, 
le_wf, 
nat_plus_wf, 
rational-has-value, 
int-rational, 
nat_properties, 
int_inc, 
lt_int_wf, 
iff_weakening_uiff, 
uiff_transitivity, 
eqtt_to_assert, 
assert_of_lt_int, 
false_wf, 
le_int_wf, 
bnot_wf, 
eqff_to_assert, 
assert_functionality_wrt_uiff, 
bnot_of_lt_int, 
assert_of_le_int, 
eq_int_wf, 
assert_of_eq_int, 
btrue_wf, 
true_wf, 
not_wf, 
assert_of_bnot, 
not_functionality_wrt_uiff, 
btrue_neq_bfalse, 
bfalse_wf, 
not_assert_elim, 
assert_elim
\mforall{}[size:\mBbbN{}\msupplus{}].  \mforall{}[A:Type].  \mforall{}[num:A  {}\mrightarrow{}  \mBbbN{}].  \mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].
    (collectfilteracc2(size;x.num[x];v.P[v])
    =  collect\_accum(x.num[x];ɘ,  tt>p,v.let  n,ok  =  p 
                                                                              in  <n  +  1,  ok  \mwedge{}\msubb{}  P[v]>p.(fst(p)  =\msubz{}  size)  \mvee{}\msubb{}(\mneg{}\msubb{}(snd(p)))))
Date html generated:
2011_08_16-PM-05_29_19
Last ObjectModification:
2011_06_20-AM-01_24_48
Home
Index