{ [A,B,C,S:Type]. [F:S  A  (S  C)]. [G:C  B]. [s1:S].
    (better-parallel-dataflow(
     1;k.[rec-dataflow(s1;s,a.F[s;a])][k];
     g.G[g 0])
    = rec-dataflow(s1;s,a.let s',out = F[s;a] 
                          in <s', G[out]>)) }

{ Proof }



Definitions occuring in Statement :  better-parallel-dataflow: better-parallel-dataflow rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) dataflow: dataflow(A;B) select: l[i] uall: [x:A]. B[x] so_apply: x[s1;s2] so_apply: x[s] apply: f a lambda: x.A[x] function: x:A  B[x] spread: spread def pair: <a, b> product: x:A  B[x] cons: [car / cdr] nil: [] natural_number: $n universe: Type equal: s = t
Definitions :  top: Top tl: tl(l) hd: hd(l) length: ||as|| lelt: i  j < k let: let int_seg: {i..j} p-outcome: Outcome prop: void: Void implies: P  Q false: False set: {x:A| B[x]}  real: rationals: subtype: S  T nat: int: sqequal: s ~ t so_lambda: x y.t[x; y] data-stream: data-stream(P;L) list: type List fpf: a:A fp-B[a] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b uimplies: b supposing a and: P  Q uiff: uiff(P;Q) subtype_rel: A r B all: x:A. B[x] axiom: Ax pair: <a, b> spread: spread def so_apply: x[s] nil: [] apply: f a so_apply: x[s1;s2] rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) cons: [car / cdr] select: l[i] lambda: x.A[x] natural_number: $n better-parallel-dataflow: better-parallel-dataflow dataflow: dataflow(A;B) equal: s = t universe: Type product: x:A  B[x] uall: [x:A]. B[x] function: x:A  B[x] member: t  T isect: x:A. B[x] Auto: Error :Auto,  CollapseTHEN: Error :CollapseTHEN,  so_lambda: x.t[x] CollapseTHENA: Error :CollapseTHENA,  THENM: Error :THENM,  D: Error :D
Lemmas :  le_wf false_wf not_wf int_seg_wf member_wf nat_wf dataflow_wf rec-dataflow_wf select_wf better-parallel-dataflow_wf parallel-1-rec-dataflow dataflow-extensionality top_wf data-stream_wf

\mforall{}[A,B,C,S:Type].  \mforall{}[F:S  {}\mrightarrow{}  A  {}\mrightarrow{}  (S  \mtimes{}  C)].  \mforall{}[G:C  {}\mrightarrow{}  B].  \mforall{}[s1:S].
    (better-parallel-dataflow(
      1;\mlambda{}k.[rec-dataflow(s1;s,a.F[s;a])][k];
      \mlambda{}g.G[g  0])
    =  rec-dataflow(s1;s,a.let  s',out  =  F[s;a] 
                                                in  <s',  G[out]>))


Date html generated: 2011_08_10-AM-08_21_02
Last ObjectModification: 2011_06_18-AM-08_32_12

Home Index