{ [A:']. [dfp:DataflowProgram(A)]. [T:Type]. [G:bag(df-program-type(dfp))
                                                      bag(T)
                                                      bag(T)].
  [P:bag(T)  ]. [buf:bag(T)].
    better-feedback-dataflow(1;k.[df-program-meaning(dfp)][k];
    g,x.G[g 0;x];buf;s.P[s])
    = df-program-meaning(feedback-df-prog1(T;G;P;buf;dfp)) 
    supposing (buf:bag(T). ((G {} buf) = {}))  valueall-type(T) }

{ Proof }



Definitions occuring in Statement :  feedback-df-prog1: feedback-df-prog1(B;G;P;buf;dfp) df-program-meaning: df-program-meaning(dfp) df-program-type: df-program-type(dfp) dataflow-program: DataflowProgram(A) better-feedback-dataflow: better-feedback-dataflow(n;ds;F;s;x.P[x]) dataflow: dataflow(A;B) select: l[i] bool: uimplies: b supposing a uall: [x:A]. B[x] so_apply: x[s1;s2] so_apply: x[s] all: x:A. B[x] and: P  Q apply: f a lambda: x.A[x] function: x:A  B[x] cons: [car / cdr] nil: [] natural_number: $n universe: Type equal: s = t empty-bag: {} bag: bag(T) valueall-type: valueall-type(T)
Definitions :  so_lambda: x y.t[x; y] it: inr: inr x  evalall: evalall(t) ifthenelse: if b then t else f fi  spread: spread def rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) limited-type: LimitedType prop: set: {x:A| B[x]}  so_lambda: x.t[x] fpf: a:A fp-B[a] quotient: x,y:A//B[x; y] strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b uiff: uiff(P;Q) subtype_rel: A r B axiom: Ax feedback-df-prog1: feedback-df-prog1(B;G;P;buf;dfp) so_apply: x[s] so_apply: x[s1;s2] nil: [] df-program-meaning: df-program-meaning(dfp) cons: [car / cdr] select: l[i] natural_number: $n better-feedback-dataflow: better-feedback-dataflow(n;ds;F;s;x.P[x]) dataflow: dataflow(A;B) all: x:A. B[x] valueall-type: valueall-type(T) product: x:A  B[x] and: P  Q uimplies: b supposing a equal: s = t dataflow-program: DataflowProgram(A) universe: Type df-program-type: df-program-type(dfp) bool: function: x:A  B[x] member: t  T isect: x:A. B[x] uall: [x:A]. B[x] inl: inl x  empty-bag: {} pair: <a, b> apply: f a decide: case b of inl(x) =s[x] | inr(y) =t[y] lambda: x.A[x] unit: Unit union: left + right bag: bag(T) parameter: parm{i} atom: Atom$n int: atom: Atom rec: rec(x.A[x]) tunion: x:A.B[x] b-union: A  B list: type List is_list_splitting: is_list_splitting(T;L;LL;L2;f) is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) bag-member: bag-member(T;x;bs) req: x = y rnonneg: rnonneg(r) rleq: x  y i-member: r  I partitions: partitions(I;p) modulus-of-ccontinuity: modulus-of-ccontinuity(omega;I;f) fpf-sub: f  g implies: P  Q sq_stable: SqStable(P) assert: b true: True squash: T MaAuto: Error :MaAuto,  CollapseTHEN: Error :CollapseTHEN,  Auto: Error :Auto,  AssertBY: Error :AssertBY,  tactic: Error :tactic,  guard: {T} l_member: (x  l) false: False subtype: S  T pi2: snd(t) void: Void top: Top cand: A c B pi1: fst(t) isl: isl(x) IdLnk: IdLnk Id: Id rationals: or: P  Q append: as @ bs locl: locl(a) Knd: Knd sq_type: SQType(T) outl: outl(x) sqequal: s ~ t ite: ite(b;x;y)
Lemmas :  ite_wf false_wf outl_wf subtype_base_sq union_subtype_base unit_subtype_base pi1_wf_top isl_wf pi1_wf assert_wf not_wf rec-dataflow-equal pi2_wf top_wf member_wf evalall-equal true_wf squash_wf rec-dataflow_wf ifthenelse_wf it_wf sq_stable__valueall-type product-valueall-type union-valueall-type bag-valueall-type equal-valueall-type bag_wf dataflow_wf unit_wf empty-bag_wf feedback-1-equiv dataflow-program_wf df-program-type_wf bool_wf valueall-type_wf

\mforall{}[A:\mBbbU{}'].  \mforall{}[dfp:DataflowProgram(A)].  \mforall{}[T:Type].  \mforall{}[G:bag(df-program-type(dfp))  {}\mrightarrow{}  bag(T)  {}\mrightarrow{}  bag(T)].
\mforall{}[P:bag(T)  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[buf:bag(T)].
    better-feedback-dataflow(1;\mlambda{}k.[df-program-meaning(dfp)][k];\mlambda{}g,x.G[g  0;x];buf;s.P[s])
    =  df-program-meaning(feedback-df-prog1(T;G;P;buf;dfp)) 
    supposing  (\mforall{}buf:bag(T).  ((G  \{\}  buf)  =  \{\}))  \mwedge{}  valueall-type(T)


Date html generated: 2011_08_16-AM-09_43_19
Last ObjectModification: 2011_06_18-AM-08_33_38

Home Index