{ [A,B,M:Type]. [P:dataflow(M;bag(A))]. [dfs:bag(dataflow(M;bag(B)))].
  [Q:A  dataflow(M;bag(B))].
    (bind-dataflow-aux(P;dfs;a.Q[a])  dataflow(M;bag(B))) }

{ Proof }



Definitions occuring in Statement :  bind-dataflow-aux: bind-dataflow-aux(P;dfs;a.Q[a]),  dataflow: dataflow(A;B),  uall: [x:A]. B[x],  so_apply: x[s],  member: t  T,  function: x:A  B[x],  universe: Type,  bag: bag(T)
Definitions :  void: Void,  top: Top,  strong-subtype: strong-subtype(A;B),  le: A  B,  ge: i  j ,  not: A,  less_than: a < b,  and: P  Q,  uiff: uiff(P;Q),  subtype_rel: A r B,  fpf: a:A fp-> B[a],  guard: {T},  implies: P  Q,  sq_type: SQType(T),  so_lambda: x.t[x],  bag-append: as + bs,  pi2: snd(t),  bag-combine: xbs.f[x],  pi1: fst(t),  bag-map: bag-map(f;bs),  dataflow-ap: df(a),  spread: spread def,  lambda: x.A[x],  product: x:A  B[x],  pair: <a, b>,  so_lambda: x y.t[x; y],  let: let,  uimplies: b supposing a,  rec-dataflow: rec-dataflow(s0;s,m.next[s; m]),  bool: ,  all: x:A. B[x],  primrec: primrec(n;b;c),  corec: corec(T.F[T]),  quotient: x,y:A//B[x; y],  axiom: Ax,  apply: f a,  so_apply: x[s],  bind-dataflow-aux: bind-dataflow-aux(P;dfs;a.Q[a]),  function: x:A  B[x],  equal: s = t,  universe: Type,  dataflow: dataflow(A;B),  bag: bag(T),  member: t  T,  uall: [x:A]. B[x],  isect: x:A. B[x]
Lemmas :  dataflow_wf,  bag_wf,  rec-dataflow_wf,  dataflow-ap_wf,  bag-map_wf,  bag-append_wf,  pi1_wf,  member_wf,  pi1_wf_top,  bag-combine_wf,  pi2_wf

\mforall{}[A,B,M:Type].  \mforall{}[P:dataflow(M;bag(A))].  \mforall{}[dfs:bag(dataflow(M;bag(B)))].
\mforall{}[Q:A  {}\mrightarrow{}  dataflow(M;bag(B))].
    (bind-dataflow-aux(P;dfs;a.Q[a])  \mmember{}  dataflow(M;bag(B)))


Date html generated: 2011_08_16-AM-09_49_12
Last ObjectModification: 2011_06_18-AM-08_35_19

Home Index