{ [A:Type]. [P:A  ]. [ins:A List]. [s:Top].
    (buffer-dataflow(s;x.P[x])*(ins) ~ let ins' = filter(x.P[x];ins) in
                                           buffer-dataflow(if null(ins')
                                           then s
                                           else last(ins')
                                           fi ;x.P[x])) }

{ Proof }



Definitions occuring in Statement :  buffer-dataflow: buffer-dataflow(s;x.P[x]),  iterate-dataflow: P*(inputs),  null: null(as),  ifthenelse: if b then t else f fi ,  bool: ,  let: let,  uall: [x:A]. B[x],  top: Top,  so_apply: x[s],  lambda: x.A[x],  function: x:A  B[x],  list: type List,  universe: Type,  sqequal: s ~ t,  filter: filter(P;l),  last: last(L)
Definitions :  uall: [x:A]. B[x],  let: let,  filter: filter(P;l),  ifthenelse: if b then t else f fi ,  null: null(as),  member: t  T,  reduce: reduce(f;k;as),  btrue: tt,  top: Top,  buffer-dataflow: buffer-dataflow(s;x.P[x]),  so_apply: x[s],  pi1: fst(t),  all: x:A. B[x],  implies: P  Q,  prop: ,  bfalse: ff,  subtype: S  T,  bool: ,  unit: Unit,  iff: P  Q,  and: P  Q,  it:
Lemmas :  top_wf,  bool_wf,  iff_weakening_uiff,  assert_wf,  eqtt_to_assert,  not_wf,  uiff_transitivity,  bnot_wf,  eqff_to_assert,  assert_of_bnot,  filter_wf,  last-cons

\mforall{}[A:Type].  \mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[ins:A  List].  \mforall{}[s:Top].
    (buffer-dataflow(s;x.P[x])*(ins)  \msim{}  let  ins'  =  filter(\mlambda{}x.P[x];ins)  in
                                                                                  buffer-dataflow(if  null(ins')
                                                                                  then  s
                                                                                  else  last(ins')
                                                                                  fi  ;x.P[x]))


Date html generated: 2011_08_10-AM-08_17_36
Last ObjectModification: 2011_06_18-AM-08_31_20

Home Index