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