{ [A,B,C,S:Type]. [F:S  A  (S  C)]. [G:C  B  B]. [P:B  ].
  [s:S]. [s2:B].
    (better-feedback-dataflow(1;k.[rec-dataflow(s;s,a.F[s;a])][k];
     g,x.G[g 0;x];s2;s.P[s])
    = rec-dataflow(<s, s2>;s,a.let s1,s2 = s 
                               in let s',out = F[s1;a] 
                                  in <<s'
                                      , if P[G[out;s2]]
                                        then G[out;s2]
                                        else s2
                                        fi 
                                      >
                                     , G[out;s2]
                                     >)) }

{ Proof }



Definitions occuring in Statement :  better-feedback-dataflow: better-feedback-dataflow(n;ds;F;s;x.P[x]),  rec-dataflow: rec-dataflow(s0;s,m.next[s; m]),  dataflow: dataflow(A;B),  select: l[i],  ifthenelse: if b then t else f fi ,  bool: ,  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 :  suptype: suptype(S; T),  sqequal: s ~ t,  true: True,  data-stream: data-stream(P;L),  fpf-cap: f(x)?z,  sq_stable: SqStable(P),  proper-iseg: L1 < L2,  iseg: l1  l2,  gt: i > j,  map: map(f;as),  label: ...$L... t,  top: Top,  grp_car: |g|,  filter: filter(P;l),  intensional-universe: IType,  corec: corec(T.F[T]),  tl: tl(l),  hd: hd(l),  length: ||as||,  so_lambda: x y.t[x; y],  let: let,  sq_type: SQType(T),  list: type List,  nat_plus: ,  l_contains: A  B,  cmp-le: cmp-le(cmp;x;y),  inject: Inj(A;B;f),  reducible: reducible(a),  prime: prime(a),  squash: T,  l_exists: (xL. P[x]),  l_all: (xL.P[x]),  infix_ap: x f y,  fun-connected: y is f*(x),  limited-type: LimitedType,  qle: r  s,  qless: r < s,  q-rel: q-rel(r;x),  sq_exists: x:{A| B[x]},  exists: x:A. B[x],  atom: Atom$n,  i-finite: i-finite(I),  i-closed: i-closed(I),  dstype: dstype(TypeNames; d; a),  fset-member: a  s,  f-subset: xs  ys,  fset: FSet{T},  fset-closed: (s closed under fs),  Id: Id,  IdLnk: IdLnk,  Knd: Knd,  MaName: MaName,  l_disjoint: l_disjoint(T;l1;l2),  decidable: Dec(P),  union: left + right,  or: P  Q,  guard: {T},  l_member: (x  l),  assert: b,  lelt: i  j < k,  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: ,  so_lambda: x.t[x],  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,  ifthenelse: if b then t else f fi ,  spread: spread def,  pair: <a, b>,  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],  natural_number: $n,  better-feedback-dataflow: better-feedback-dataflow(n;ds;F;s;x.P[x]),  dataflow: dataflow(A;B),  bool: ,  equal: s = t,  universe: Type,  product: x:A  B[x],  uall: [x:A]. B[x],  isect: x:A. B[x],  member: t  T,  function: x:A  B[x],  Auto: Error :Auto,  CollapseTHEN: Error :CollapseTHEN,  CollapseTHENA: Error :CollapseTHENA,  lambda: x.A[x],  Try: Error :Try
Lemmas :  member_wf,  dataflow_wf,  select_wf,  int_seg_properties,  le_wf,  false_wf,  not_wf,  int_subtype_base,  subtype_base_sq,  int_seg_wf,  decidable__equal_int,  nat_wf,  better-feedback-dataflow_wf,  dataflow-extensionality,  bool_wf,  rec-dataflow_wf,  intensional-universe_wf,  subtype_rel_wf,  length_wf_nat,  length_nil,  top_wf,  ge_wf,  subtype_rel_self,  ifthenelse_wf,  true_wf,  squash_wf,  data-stream_wf,  feedback-1-rec-dataflow

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


Date html generated: 2011_08_10-AM-08_20_41
Last ObjectModification: 2011_06_18-AM-08_32_06

Home Index