{ 
[A,B,S:Type]. 
[F:S 
 A 
 (S 
 bag(B))]. 
[s:S].
    (delay-dataflow(rec-dataflow(s;s,a.F s a))
    = rec-dataflow(<s, {}>s,a.let s1,buf = s 
                               in let s',out = F s1 a 
                                  in <<s'
                                      , if 0 <z bag-size(out)
                                        then out
                                        else buf
                                        fi 
                                      >
                                     , buf
                                     >)) }
{ Proof }
Definitions occuring in Statement : 
delay-dataflow: delay-dataflow(P), 
rec-dataflow: rec-dataflow(s0;s,m.next[s; m]), 
dataflow: dataflow(A;B), 
lt_int: i <z j, 
ifthenelse: if b then t else f fi , 
uall:
[x:A]. B[x], 
apply: f a, 
function: x:A 
 B[x], 
spread: spread def, 
pair: <a, b>, 
product: x:A 
 B[x], 
natural_number: $n, 
universe: Type, 
equal: s = t
Lemmas : 
iff_wf, 
rev_implies_wf, 
delay-equiv1, 
delay-dataflow_wf, 
rec-dataflow_wf, 
Error :empty-bag_wf, 
dataflow_wf, 
Error :bag_wf
\mforall{}[A,B,S:Type].  \mforall{}[F:S  {}\mrightarrow{}  A  {}\mrightarrow{}  (S  \mtimes{}  bag(B))].  \mforall{}[s:S].
    (delay-dataflow(rec-dataflow(s;s,a.F  s  a))
    =  rec-dataflow(<s,  \{\}>s,a.let  s1,buf  =  s 
                                                          in  let  s',out  =  F  s1  a 
                                                                in  <<s',  if  0  <z  bag-size(out)  then  out  else  buf  fi  >,  buf>))
Date html generated:
2011_08_10-AM-08_21_19
Last ObjectModification:
2011_06_29-PM-03_22_04
Home
Index