Nuprl Lemma : feedback-dataflow-equal

[A,C:Type]. [n:]. [B:n  Type]. [ds:k:n  dataflow(A;B[k])]. [F:k:n  B[k]  C  C]. [s:C]. [P:C  ].
  (feedback-dataflow(ds;
                     F;s;x.P[x])
  = rec-dataflow(<parallel-dataflow(ds;x.x), s>;s,a.let ds,buf = s 
                                                     in let ds',out = ds(a) 
                                                        in let x = F out buf in
                                                               <<ds', if P[x] then x else buf fi >, x>))


Proof not projected




Definitions occuring in Statement :  feedback-dataflow: feedback-dataflow parallel-dataflow: parallel-dataflow dataflow-ap: df(a) rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) dataflow: dataflow(A;B) ifthenelse: if b then t else f fi  bool: int_seg: {i..j} nat: let: let uall: [x:A]. B[x] so_apply: x[s] apply: f a lambda: x.A[x] function: x:A  B[x] spread: spread def pair: <a, b> natural_number: $n universe: Type equal: s = t
Definitions :  uall: [x:A]. B[x] so_apply: x[s] feedback-dataflow: feedback-dataflow member: t  T prop: all: x:A. B[x] implies: P  Q so_lambda: x y.t[x; y] so_lambda: x.t[x] top: Top subtype: S  T and: P  Q cand: A c B parallel-dataflow: parallel-dataflow pi2: snd(t) let: let dataflow-ap: df(a) rec-dataflow: rec-dataflow(s0;s,m.next[s; m]) ycomb: Y pi1: fst(t) squash: T true: True nat: uimplies: b supposing a so_apply: x[s1;s2]
Lemmas :  rec-dataflow-equal int_seg_wf dataflow_wf let_wf pi1_wf_top dataflow-ap_wf ifthenelse_wf dataflow-out_wf parallel-dataflow_wf bool_wf nat_wf equal_wf pi2_wf and_wf squash_wf true_wf rec-dataflow_wf

\mforall{}[A,C:Type].  \mforall{}[n:\mBbbN{}].  \mforall{}[B:\mBbbN{}n  {}\mrightarrow{}  Type].  \mforall{}[ds:k:\mBbbN{}n  {}\mrightarrow{}  dataflow(A;B[k])].  \mforall{}[F:k:\mBbbN{}n  {}\mrightarrow{}  B[k]  {}\mrightarrow{}  C  {}\mrightarrow{}  C].
\mforall{}[s:C].  \mforall{}[P:C  {}\mrightarrow{}  \mBbbB{}].
    (feedback-dataflow(ds;
                                          F;s;x.P[x])
    =  rec-dataflow(<parallel-dataflow(ds;\mlambda{}x.x),  s>s,a.let  ds,buf  =  s 
                                                                                                          in  let  ds',out  =  ds(a) 
                                                                                                                in  let  x  =  F  out  buf  in
                                                                                                                              <<ds',  if  P[x]  then  x  else  buf  fi  >
                                                                                                                              ,  x
                                                                                                                              >))


Date html generated: 2012_01_23-AM-11_57_21
Last ObjectModification: 2011_12_28-PM-12_21_27

Home Index